disk init name = "ts_df_dev_06", physname =
"/sybase_data02/DNMS/ts_df_dev_06.dat", size = "20G"
2、增加数据库设备
alter database dnms on ts_df_dev_06 = '10G'
3、扩展段空间
sp_extendsegment 'ts_df', 'dnms', 'ts_df_dev_06'
2、增加数据库设备
alter database dnms on ts_df_dev_06 = '10G'
3、扩展段空间
sp_extendsegment 'ts_df', 'dnms', 'ts_df_dev_06'
1. script.aculo.us (http://script.aculo.us/)
URL: http://script.aculo.us/.
文档: http://wiki.script.aculo.us/.
注释: script.aculo.us不是自己独立的framework,而是Prototype的附加组件。
"script.aculo.us能为你提供使用简单、跨浏览器用户接口的JavaScript库,它让
你的网站和程序如虎添翼。"
2. Prototype (http://www.prototypejs.org/)
URL: http://www.prototypejs.org/.
Blog: http://www.prototypejs.org/blog.
文档: http://www.prototypejs.org/learn.
"Prototype是让动态web程序开发更加简单的JavaScript framework。它为class-
driven开发提供了独特简单的工具箱,并以目前最好的Ajax库著称。Prototype正
在迅速成为每位 web程序开发者的codebase of choice。"
3. Moo Tools (http://www.mootools.net/)
URL: http://www.mootools.net/.
Blog: http://blog.mootools.net/.
文档: http://docs.mootools.net/.
演示:http://demos.mootools.net/.
"MooTools是精简而模式化的面向对象JavaScript framework,它专为从中级向高
级迈进的JavaScript开发者设计。在它优雅、详细并且流畅的API帮助下,你能够
写出强大、灵活、可跨浏览器使用的代码。"
4. jQuery (http://jquery.com/)
URL: http://jquery.com/.
Blog: http://jquery.com/blog/.
文档: http://docs.jquery.com/.
"jQuery是一个快速、简洁的JavaScript库,能够简化阅读HTML文档、处理事件、
实现动画以及向网页添加Ajax互动等过程。 jQuery改进了你编写JavaScript的方式。"
5. MochiKit (http://www.mochikit.com/)
URL: http://www.mochikit.com/.
Blog: http://www.mochikit.com/blog.html.
文档: http://www.mochikit.com/doc/html/MochiKit/index.html.
演示:http://www.mochikit.com/demos.html.
"MochKit-让JavaScript不那么差劲了。"
6. Rialto (http://rialto.improve-technologies.com/wiki/)
URL: http://rialto.improve-technologies.com/wiki/.
Blog: 无
文档: http://rialto.improve-technologies.com/js/doc/.
演示:http://rialto.improve-technologies.com/rialto/.
"Rialto (Rich Internet Application Toolkit)是基于Ajax的跨浏览器
Javascript小型工具集。"
7. Dojo Toolkit (http://dojotoolkit.org)
URL: http://dojotoolkit.org/about.
Blog: http://dojotoolkit.org/blog.
文档: http://dojotoolkit.org/docs.
演示:http://dojotoolkit.org/demos.
"Dojo是用JavaScript编写的一款开源的DHTML工具箱。Dojo解决了DHTML部分历史
遗留问题,这些问题曾让大量动态web程序开发无法实现。"
8. Spry Framework (http://labs.adobe.com/technologies/spry/)
URL: http://labs.adobe.com/technologies/spry/.
Blog: 无
文档: http://www.adobe.com/go/labs_gnav_wiki.
演示:http://www.adobe.com/go/labs_gnav_showcase.
"为Ajax设计的Spry framework是一个能提供简单而强大Ajax功能的JavaScript
库,它令开发者能开发出让用户有更丰富体验的页面。它还可以使Ajax的复杂度降
低,以便设计师更为简单的创建Web2.0页面。"
9. ASP.NET Ajax Framework (http://asp.net/ajax/)
URL: http://asp.net/ajax/.
Blog: 无
文档: http://asp.net/ajax/documentation/.
演示:http://asp.net/ajax/showcase/.
"ASP.NET AJAX是一款免费框架,能让你在各种流行浏览器上快速创建有效而互动
的Web程序。"
10. Cean Ajax Framework (http://sourceforge.net/projects/clean-ajax/)
URL: http://sourceforge.net/projects/clean-ajax/.
Blog: 无
文档: http://sourceforge.net/docman/?group_id=145307.
"简单易用的AJAX 框架,能提供消息排序, XSLT, XPath, 加密软件 (SHA1, MD5),
Web服务入口 (SOAP, XMLRPC), JSON-RPC, 跨浏览器 AJAX以及 AJAX历史及缓存控
制。"等功能。
一个问题:销售在客户面前总是夸大公司的能力,在项目谈判时,总是这也可以实
现,那也可以实现,但实际项目执行时,却发现根本就很难执行。但销售对实际的
执行并不了解,而且也许如果不这么做的话,可能根本就无法签单,如何解决这个
矛盾?
我说你这个问题很普遍。大部分的前期跟单、签单都是销售在做。一般小公司,老
板就是最大的销售,所有的大单子都是老板在跟。有的老板认为管理软件是管理的
事情,管理软件有没有效果,和管理方法有关系,而和软件没多大关系,软件开发
只是把管理方法实现编码而已。而且老板自己也平时挺注意IT界这些新产品的东
西,什么Blog、工作流、BI、SAAS、地图、搜索引擎、大众点评也都知道。所以自
觉自己技术感觉和商业感觉和管理感觉都不错,没什么名字,就造个名词,什么
LAN方法,什么ANL方法,造呗。所以签单的时候,往往领着一个销售助理就上场
了,PPT熬夜做的很漂亮,从麦肯锡、罗兰贝格中COPY了不少好看的图。关系再加
上临场发挥,单子就算搞定了。
单子签好后,程序员根本不知道合同都签了些什么,合同都放在了财务和老板的手
里。到了项目调研、项目开发或项目实施阶段才遇到客户的狙击:咿,我们要的
XX功能你们怎么没有?
#@#$,我,我不知道呀。谁跟你说的?
你们合同里答应我们的呀。
我没见过合同。项目经理浑身在颤抖:你这该死的销售。
无独有偶,上个星期也有一个网友跟我诉他的苦:
一次,销售人员和老板一起在客户那里开会,客户的一个人说如果你们的软件中能
和地图结合在一起,实时跟踪状态,那就非常妙了。老板一听,眼睛一亮。这可是
我们软件的亮点啊。地图很好做,现在网上好多地图网站,都提供API,我们能很
快实现。(我KAO,老板还知道的真不少,佩服,佩服)。
老板把他(开发经理,手下3人。来项目干项目那种,人手缺了还得自己组装机器
掐网线,捎带给老板调调打印机或公司上网的路由器之类)叫到老板的座位旁,说
要在软件的哪里哪里加一个地图,能怎样怎样的实时跟踪。
项目经理对地图不熟悉,但也听说过地图API这类事情。于是自己熬夜研究地图网
站提供的API。但地图的API是地图网站公司做的。地图网站公司估计是做产品做的
脑袋木了,根本没考虑这些想集成他们地图的开发商。可能提供出来API,只不过
是为了秀一秀现在流行的Open API,表示自己的技术先进或开放。实际做事,没
戏。于是告知老板,做不了。
老板急了,这可是咱们的软件亮点啊,有了这个亮点....。人家都提供API了,你
们只是调用一下,又没有让你们做地图网站,我看很多网站都集成了人家的地图
API。人家能做到,你为什么做不到?
项目经理开始解释地图API提供的技术缺失。但老板无法听懂。
于是,项目经理被老板认为技术不行。他现在很苦恼,老板不当自己回事,客户那
里又被客户指挥来指挥去,下属干活还很烂,说明白了的功能被程序员实现的极不
顺手,真想操刀把程序员的代码都大块删除了自己三两句代码给他改了。自己这个
项目经理当的还真郁闷。看着人家销售跟着老板吃香喝辣,和客户一起吃饭唱歌,
还能报打车费,和老板说说笑笑,老板有什么事都第一个人家知道,而自己就是个
被老板指使干活的打工仔,郁闷的不行,想跳槽。
我问这位网友:人家为什么能跟着老板吃香喝辣?
网友说:还不是因为他会拍老板马屁呗。
我说:不。每个人都喜欢被别人捧,老板也是人,也不例外。但老板是开公司的,
开公司是要赢利的,老板要赚钱的,光会拍马屁,如果不能给公司带来收入,老板
也不养这样的马屁精。老板比谁都精。之所以老板很喜欢人家销售,就是因为在老
板看来,销售是把钱能拿回来的人。假如没有单子,全体人就得喝西北风。
网友很不服:销售他再牛,他吹的天花乱坠能把客户忽悠晕了,也得我们这帮人去
给他收拾屁股去。你再能说说出个花儿来,客户看不到真货也不会给钱的。
我说:人家为什么能跟老板一起到客户那里去开会交流,和客户沟通,而你不行
呢?直到人家签下单子来告诉你让你做的时候,你才知道有个项目来了。
网友说:他不就是人长的精神,嘴会说,会做个PPT,会写个方案呗。要我,我也
能写。满篇都是虚词,什么这架构那架构都是扯淡,客户都是不是傻子没个明白人?
我说:那我看看你的PPT。
他说:我没写过正式的PPT。没有机会啊。
我说:那你给客户实施,给客户培训时没有PPT?
他说:我们从来没有那玩意。谁来写。我写?我就是个干活主力,我加班开发都忙
不过来,我还写文档?
我说:那你给我讲讲你们的产品的好处。
他说:我们根本没有产品。老板签什么单子我们就做什么单子。项目来了,客户要
什么我们就开发什么,我们就是个编程机器。
我说:那你说说你现在这个项目对于客户的意义。
他说:都是老板的关系,整点事而已。其实一点没有意义。
我无语了。这样的项目经理,我看他再做3年也会是现在这样。光有抱怨,遇到问
题抱怨问题,而不是去解决问题。问题不解决,仍然是问题。而这个问题对他的影
响又很大,而他认为是别人的问题。其实,不管是谁的问题,只要是阻碍我的问
题,我都要解决,千方百计去解决它。因为我知道,我受了影响,我如果连自己都
不去救自己,就没有人救我自己了。
我面对这位郁闷的网友,我给了他一个建议:
你要先学会做PPT,不断对比销售的PPT,改进自己,超过销售的PPT。先给客户展
示,让客户认同,然后要找时机展示给老板,让老板认同。我建议你作 PPT,并不
是让你炫PPT技巧。而是为了让你梳理自己的思路,将彼此关联的事物能条理清晰
的结构化出来,并且能有重点的表达出来。想、做、写、说,对于一个成功的人来
说都是必不可少的。
另外,你身上散发的程序员气质太浓。你需要把自己定位成一个项目经理,给自己
加入经理的气质。否则,你给客户讲你自己做的PPT,客户觉得很变扭。因为他认
为你就是个写程序的,你讲PPT就不是你应该干的事。这样,会阻止你的PPT得到客
户的认同。你所做的事,一定要和你的气质匹配。你把自己定位成编码机器,那么
老板当然把你就定位成编码机器了,那么老板干嘛要带一个编码机器去客户那里呢?
网友沉默了。
我也沉默了。我也回想起了我艰难起步的阶段。那个时候公司所处状况和这位网友
说的情形很相似。我是职业经理人,而非老板。我面临的突如其来的项目(其实销
售和老板已经酝酿已久,但自己一点风声都没有,老板和销售,谁也没有和我讲
过)也是很郁闷(一点过程不让你参与,直到项目定型才让你参与)。直到有一
天,老板内部开会,我说:我说说我的一些个人观点。于是,我打开了自己的
PPT,给大家讲了起来。
老板说,这个PPT是你做的?
我说:对。
于是,我的机会越来越多(谁说开发人员只会闷头写代码,而不会讲和写?)。
后来,公司软件业务在我的推动下蒸蒸日上,老板给与研发部的资源也越来越多,
对研发也越来越重视,我的手下逐步在我的带领下发展出来专职的测试、文案、公
共代码开发人员。然后我的职位和职责也越来越高,我管理的人越来越多,部门也
统管了好几个。我没有太多的精力放在做销售用产品和技术文案上面了。但是,老
板没有发现这个变化。每次打单,还要叫我参加。看来,我需要一个人来接替我的
这个角色。
我需要物色一个人:
1他首先必须懂得客户业务,否则和客户交流一看就是个外行。
2他最好能干过开发。否则他也会和销售一样,不知道能不能技术实现,一律放炮
答应下来。
3他制作PPT或写个什么文字,也不要太惨不忍睹。这个是可以训练的。
4他需要有个项目经理的气质,别一坐那里就像个程序员。到客户那里打单也是塌
着背,衬衣也不换,领带也不系,连讲话思路都不清晰,满口技术思路,这就不能
要。至少要思路清晰,讲话考虑客户思维。
5有那么点灵气劲。别不识眼色。该自己接话要接,别眼看老板要开始"发挥"了,
还仍然继续由着老板放任。其实,老板这时候心里很没底,非常需要有个比他懂的
人解围,否则老板也不会现场发挥了,不发挥就没法把自己的话说圆了。所以,需
要这个人识眼色。但也别一出口就放炮,说不行,这个做不了。自己拿不准的,要
说的委婉和中性一些,不要把话说死了,办法总比困难多。
不知道网友看到这5点会怎么想。我想这样的人还应该比较好找。现在不少人,啥
都干过,啥都不精,实施、测试、技术支持都做过,报表写个SQL也做过,自己写
个小软件也玩过,但就是跳槽什么职位都应聘不准,正茫然不知道该如何职业发展。
我就是从实施部门找到了这样的一个人。
这个人有个特质:很努力,很吃苦耐劳任劳任怨。对公司非常忠诚,没个花花心思
看着这山望着那山。自己也没什么想法,只想着把领导交待的事情兢兢业业办好。
他实施过多家客户。对客户业务细节熟悉,对客户实施过程中发生的困难也很熟
悉,但客户行业格局、客户行业未来发展、客户行业现状困境和机遇和挑战肯定是
没有这样的大局观了。
因为我们的实施是要写实施总结和实施每日报告的,所以他写作还算有点基础。虽
然写的口头语多,但总算能把事情说清楚,还能有个123。
我们的实施也一直要求见客户必须衬衣领带,所以"程序员气质"(看来程序员形象
太差了)是没有的。
他也写过点小程序,SQL语句用DELPHI拖控件保存进数据库。
实施多了,讲话、开会讨论、客户联系就比较自如。不像一些程序员,让给客户打
个电话联系联系问问具体情况,就是不知道怎么和客户开口。
就是他了。我让他做了项目经理。
他当然不会入了老板的法眼。
所幸,我们有个大项目,需要和SAP、IBM、西门子合作。长达5个月。IBM来的是一
个团队,飞的来飞的去。住的是五星酒店,拿的是上万工资。做事的文档流程职责
极为清晰。要求我们也上报各种文档,而且人家也早就规定了格式。每个星期还要
有项目团队协调会。需要每个星期聚一次。
我选定了这位老哥就充当了这次项目的实际项目经理,我挂名。但实际的文档、开
会都是这位老哥。
老哥压力巨大,面对豪华的IBM、SAP阵容,和人家一个圆桌上开会,有点气短。屡
屡打电话希望我过去支援。
但我就不去。我说有问题咱们解决问题,你有什么解决不了的问题我给你出方法。
你需要什么样的人我给你,我全力支持你。
老哥要开发,我就派开发人员。需要测试,我就派测试人员。老哥说自己文档需要
人帮助修饰和理顺,我就派文案人员配合。
直到如今回顾那次项目,老哥都非常感谢我给他的那次和大佬们合作的机会。没有
那次机会,他说他自己可能都无法脱胎换骨成为真正的项目经理。
以后,老板让我做一些方案,我就把工作安排给了这位项目经理,并且指明:你需
要什么样的人,都可以受你指挥。你需要项目组由哪些人组成,你自己挑。我全力
支持你。
于是,一篇篇越来越有质量的PPT、文案、报价、工作量报价,都从这位项目经理
之手而出(文案人员可真是他的好帮手,很多细节细致的收集资料、反复校对修改
都是文案在做)。刚开始的时候,他做完就传给我,我们俩一起修改。我记得,刚
开始的时候,一个方案需要修订多达32次的版本。我们总是在每个草稿后面加上版
本号。以后工作就变得越来越顺,直到我后来都非常放心,把思路跟他说明白,他
自己就会按照思路制作方案,我只需要审核一下符合我的大框架思路即可。现在不
仅仅是项目文档和项目管理归他管,现在的产品设计文档都由他来编写。否则,谁
来编写设计文档留下可确定的变更记录,谁来弥合客户和编码人员对功能需求的理
解差异?
现在,他的PPT功力连老板都觉得专业。他越来越多的和老板一起去打单演讲。过
去老板和销售煞费苦心的熬夜制作方案的日子也不见了,现在手下人都能干了,自
己也放心。老板现在也轻松了许多。
这位老哥由于一直在研发和实施工作,所以对产品对客户,比销售人员了解的更深
刻。自己做的PPT和DOC也逊于任何一个销售,讲产品讨论需求也是把好手。销售人
员再也不是老板眼里的关键人物了。过去,公司的实施、开发、咨询、服务都对销
售部蛮有微词,觉得老板捧他们太高,觉得谁跟老板关系好谁就能拿高工资,实在
干活的部门都是死干活的,干的再累再好,也不如人家销售一张甜嘴。现在,公司
的氛围挺和谐的,大家都觉得现在公平了许多,干活也有积极性了。(其实,在外
企,一般都是一个商务经理加一个产品经理来共同打单。商务经理负责客户跟踪和
价格谈判和商务合同,产品经理给客户结合客户现状和需求来讲解产品,负责技术
方案。两者都有各自配合的分工。如今,我也是这样的格局:销售和售前两个人搭
配打单,而不是销售一人独大。各有各的优点和专业)
我对这位老哥说:你就是咱们公司的售前经理,就是咱们部门的宣传官。没有你,
咱们研发再好的产品也传达不出去;没有你,咱们受了再多的压力受了再多的苦,
老板也不知道。你这个项目经理的职位,对于连接研发和其他部门、连接客户非常
重要。你是咱们研发必不可少不能代替的人。
1。.NET 安装的顺序应该是先装IIS,再装VS.NET,如果次序反了,或者IIS重
装了,就需要使用aspnet_regiis.exe -i来重新安装IIS Mapping(主要用于aspx,
asmx等文件的Extention的匹配)。在C:\WINDOWS\Microsoft.NET\Framework\
v1.0.3705目录下,运行下面的命令:aspnet_regiis.exe -i
2。重设ASPNET的密码,然后在下面的目录中找到Machine.config文件:%
Systemroot%\Microsoft.NET\ Framework\v1.0.3705\CONFIG(Systemroot是你的
安装目录),在标识中添加/修改:userName和 password3。如果还不行,重装
IIS,然后再按照方法1进行操作4。如果你的机器是域控制器,你可以参考
Q315158:ASP.NET Does Not Work withASPNET Account on Domain
Controller:http://support.microsoft.com/default.aspx?scid=KB;EN-
US;Q315158&和你大致讲一下操作的步骤:
1)在Administrative Tools->Active Directory Users and Computers中建
立一个名为ASPUSER的用户,将该用户添加到用户组中(默认情况下已在User
Group中)
2)在Administrative Tools->Local Security Settings->Local
Policy->UserRight Assignment中,双击右栏的Log on as a batch job项,在弹出
的窗口中点击Add,选择或输入刚才建立的ASPUSER帐号,确定。(需要重启机器)
3)确保ASPUSER帐号有相应文件、目录的访问权限4。在下面的目录中找到
Machine.config文件:%Systemroot%\
Microsoft.NET\Framework\v1.0.3705\CONFIG (Systemroot是你的安装目录),
在标识中添加/修改:
userName="DomainName\ASPUSER" password="ASPUSERpassword" 其中
ASPUSERpassword是刚刚建立的ASPUSER的密码,DomainName是你的域名
最后把机器RESET一下!看看!应该OK了!
在http://www.sunfreeware.com/下载for solaris9 sprac的版本,直接pkgadd进
行安装。
mrtg同时需要libgcc、perl、apache、net-snmp等软件支持。
【mrtg安装配置步骤】
1、安装mrtg
pkgadd -d mrtg-2.16.2-sol9-sparc-local
2、建立mrtg工作目录
mkdir /export/home/gdau/mrtg_test
3、配置apache的httpd.conf
vi /etc/apache/httpd.conf,增加:
-------------------------------------------------------------------
Alias /cmnet/ "/export/home/gdau/mrtg_test/"
<Directory "/export/home/gdau/mrtg">
Options Indexes FollowSymlinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
-------------------------------------------------------------------
4、启动apache
/etc/init.d/apache start、stop、restart
5、生成mrtg.cfg文件
perl /usr/local/mrtg-2/bin/cfgmaker --global "WorkDir:
/export/home/gdau/mrtg_test/221.130.208.50__GXNN-BC-SXNET-RT01-NE80E"
--global "options[_]: growright,bits" --ifdesc=alias
--snmp-options=:::::2 ChinaMobile_Manager_Read@221.130.208.50 --output
/export/home/gdau/mrtg_test/221.130.208.50__GXNN-BC-SXNET-RT01-NE80E/mrtg.cfg
6、进行采集
perl /usr/local/mrtg-2/bin/mrtg
/export/home/gdau/mrtg_test/221.130.208.50__GXNN-BC-SXNET-RT01-NE80E/mrtg.cfg
首次运行会报错,运行三次以上便可以消除错误。
7、生成网页首页文件
perl /usr/local/mrtg-2/bin/indexmaker
--output=/export/home/gdau/mrtg_test/221.130.208.50__GXNN-BC-SXNET-RT01-NE80E/index.html
--title=CMNET
/export/home/gdau/mrtg_test/221.130.208.50__GXNN-BC-SXNET-RT01-NE80E/mrtg.cfg
8、将采集命令放置crontab,最小粒度为5分钟运行。
以下为:自动生成mrtg.cfg配置文件和自动采集shell脚本
-------------------------------------------------------------------
cmnet_flow_mrtg_cfg.sh
-------------------------------------------------------------------
#!/bin/bash
declare -a ip=(218.204.25.245 218.204.25.237 218.204.25.246
211.138.253.254 218.204.25.240 218.204.25.241 211.138.253.249
218.204.25.238 218.204.25.239 218.204.25.254 218.204.26.254
218.204.25.253 218.204.32.254 218.204.25.252 218.204.38.254
218.204.38.226 218.204.25.251 218.204.44.254 218.204.25.250
218.204.50.254 218.204.25.249 218.204.56.254 218.204.25.248 218.204.60.254 )
declare -a host=(GXNN-PB-CMNET-RT01-NEW-RE0 GXNN-PB-CMNET-RT02
OLD-PB-CMNET-RT02 GXNN-PA-CMNET-RT01 GXNN-PA-CMNET-RT04
GXNN-PA-CMNET-RT05 GXNN-PA-CMNET-RT06 GXNN-PA-CMNET-RT07
GXNN-PA-CMNET-RT08 GXLZ-PB-CMNET-RT01 GXLZ-PB-CMNET-RT02.gx.cnmobile.net
GXGL-PB-CMNET-RT01 GXGL-PB-CMNET-RT02 GXYL-PB-CMNET-RT01
GXYL-PB-CMNET-RT02.gx.cnmobile.net GXYL-PA-CMNET-SW01 GXWZ-PB-CMNET-RT01
GXWZ-PB-CMNET-RT02.gx.cnmobile.net GXBH-PB-CMNET-RT01
GXBH-PB-CMNET-RT02.gx.cnmobile.net GXHC-PB-CMNET-RT01
GXHC-PB-CMNET-RT02.gx.cnmobile.net GXBS-PB-CMNET-RT01 GXBS-PB-CMNET-RT02)
declare -a snmp_c=(GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008)
ip_count=23
host_count=23
snmp_c_count=23
i=0
#生成html前半部
mkdir -p /export/home/gdau/mrtg_test
cd /export/home/gdau/mrtg_test
while [ $i -le $ip_count ]
do
mkdir -p /export/home/gdau/mrtg_test/${ip[$i]}__${host[$i]}
workdir="/export/home/gdau/mrtg_test/${ip[$i]}__${host[$i]}"
output="/export/home/gdau/mrtg_test/${ip[$i]}__${host[$i]}/mrtg.cfg"
snmphost="${snmp_c[$i]}@${ip[$i]}"
perl /usr/local/mrtg-2/bin/cfgmaker --global "WorkDir: $workdir"
--output $output --global "options[_]: growright,bits" --ifdesc=alias
--snmp-options=:::::2 $snmphost
i=$(( $i+1 ))
done
#invoke gather_mrtg_data java program
cd /export/home/gdau/task/gather_mrtg_data
./run_gather_cfg.sh
-------------------------------------------------------------------
-------------------------------------------------------------------
cmnet_flow_mrtg.sh
-------------------------------------------------------------------
#!/bin/bash
declare -a ip=(218.204.25.245 218.204.25.237 218.204.25.246
211.138.253.254 218.204.25.240 218.204.25.241 211.138.253.249
218.204.25.238 218.204.25.239 218.204.25.254 218.204.26.254
218.204.25.253 218.204.32.254 218.204.25.252 218.204.38.254
218.204.38.226 218.204.25.251 218.204.44.254 218.204.25.250
218.204.50.254 218.204.25.249 218.204.56.254 218.204.25.248 218.204.60.254 )
declare -a host=(GXNN-PB-CMNET-RT01-NEW-RE0 GXNN-PB-CMNET-RT02
OLD-PB-CMNET-RT02 GXNN-PA-CMNET-RT01 GXNN-PA-CMNET-RT04
GXNN-PA-CMNET-RT05 GXNN-PA-CMNET-RT06 GXNN-PA-CMNET-RT07
GXNN-PA-CMNET-RT08 GXLZ-PB-CMNET-RT01 GXLZ-PB-CMNET-RT02.gx.cnmobile.net
GXGL-PB-CMNET-RT01 GXGL-PB-CMNET-RT02 GXYL-PB-CMNET-RT01
GXYL-PB-CMNET-RT02.gx.cnmobile.net GXYL-PA-CMNET-SW01 GXWZ-PB-CMNET-RT01
GXWZ-PB-CMNET-RT02.gx.cnmobile.net GXBH-PB-CMNET-RT01
GXBH-PB-CMNET-RT02.gx.cnmobile.net GXHC-PB-CMNET-RT01
GXHC-PB-CMNET-RT02.gx.cnmobile.net GXBS-PB-CMNET-RT01 GXBS-PB-CMNET-RT02)
declare -a snmp_c=(GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008)
ip_count=23
host_count=23
snmp_c_count=23
i=0
#生成html前半部
mkdir -p /export/home/gdau/mrtg_test
cd /export/home/gdau/mrtg_test
#echo "<HTML>" > /export/home/gdau/mrtg_test/index.html
#echo "<HEAD>" >> /export/home/gdau/mrtg_test/index.html
#echo " <TITLE>CMNET</TITLE>" >> /export/home/gdau/mrtg_test/index.html
#echo " <meta http-equiv=\"content-type\" content=\"text/html;
charset=iso-8859-15\" >" >> /export/home/gdau/mrtg_test/index.html
#echo " <META NAME=\"Command-Line\"
CONTENT=\"/usr/local/mrtg-2/bin/indexmaker
--output=/export/home/gdau/mrtg_test/221.130.208.50__GXNN-BC-SXNET-RT01-NE80E/index.html
--title=CMNET
/export/home/gdau/mrtg_test/221.130.208.50__GXNN-BC-SXNET-RT01-NE80E/mrtg.cfg\"
>" >> /export/home/gdau/mrtg_test/index.html
#echo " <META HTTP-EQUIV=\"Refresh\" CONTENT=\"300\" >" >>
/export/home/gdau/mrtg_test/index.html
#echo " <META HTTP-EQUIV=\"Cache-Control\" content=\"no-cache\" >" >>
/export/home/gdau/mrtg_test/index.html
#echo " <META HTTP-EQUIV=\"Pragma\" CONTENT=\"no-cache\" >" >>
/export/home/gdau/mrtg_test/index.html
#echo " <META HTTP-EQUIV=\"Expires\" CONTENT=\"Thu, 22 Jan 2009 05:57:01
GMT\" >" >> /export/home/gdau/mrtg_test/index.html
#echo " <LINK HREF=\"favicon.ico\" rel=\"shortcut icon\" > " >>
/export/home/gdau/mrtg_test/index.html
#echo "<style type=\"text/css\">" >> /export/home/gdau/mrtg_test/index.html
#echo "/* commandline was: /usr/local/mrtg-2/bin/indexmaker
--output=/export/home/gdau/mrtg_test/221.130.208.50__GXNN-BC-SXNET-RT01-NE80E/index.html
--title=CMNET
/export/home/gdau/mrtg_test/221.130.208.50__GXNN-BC-SXNET-RT01-NE80E/mrtg.cfg
*/" >> /export/home/gdau/mrtg_test/index.html
#echo "/* sorry, no style, just abusing this to place the commandline
and pass validation */" >> /export/home/gdau/mrtg_test/index.html
#echo "</style>" >> /export/home/gdau/mrtg_test/index.html
#echo "</HEAD>" >> /export/home/gdau/mrtg_test/index.html
#echo "<BODY bgcolor=\"#ffffff\" text=\"#000000\" link=\"#000000\"
vlink=\"#000000\" alink=\"#000000\">" >>
/export/home/gdau/mrtg_test/index.html
#echo "<H1>CMNET</H1>" >> /export/home/gdau/mrtg_test/index.html
#echo "<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=10>" >>
/export/home/gdau/mrtg_test/index.html
#echo "<tr>" >> /export/home/gdau/mrtg_test/index.html
#echo "<td>" >> /export/home/gdau/mrtg_test/index.html
while [ $i -le $ip_count ]
do
mkdir -p /export/home/gdau/mrtg_test/${ip[$i]}__${host[$i]}
workdir="/export/home/gdau/mrtg_test/${ip[$i]}__${host[$i]}"
output="/export/home/gdau/mrtg_test/${ip[$i]}__${host[$i]}/mrtg.cfg"
snmphost="${snmp_c[$i]}@${ip[$i]}"
#perl /usr/local/mrtg-2/bin/cfgmaker --global "WorkDir: $workdir"
--output $output --global "options[_]: growright,bits" --ifref=ip
--ifdesc=alias --snmp-options=::1:1::2 $snmphost
perl /usr/local/mrtg-2/bin/mrtg $output
index="$workdir/index.html"
perl /usr/local/mrtg-2/bin/indexmaker --output=$index --title=CMNET $output
# #生成html中部
# echo "<DIV><B><A
HREF="./${ip[$i]}__${host[$i]}/index.html">${host[$i]}</A></B><BR></DIV>"
>> /export/home/gdau/mrtg_test/index.html
# echo "<br>" >> /export/home/gdau/mrtg_test/index.html
i=$(( $i+1 ))
done
#生成html后半部
#echo "</td>" >> /export/home/gdau/mrtg_test/index.html
#echo "</tr>" >> /export/home/gdau/mrtg_test/index.html
#echo "</TABLE>" >> /export/home/gdau/mrtg_test/index.html
#
#echo "<BR>" >> /export/home/gdau/mrtg_test/index.html
#echo "<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>" >>
/export/home/gdau/mrtg_test/index.html
#echo " <TR>" >> /export/home/gdau/mrtg_test/index.html
#echo " <TD WIDTH=63><A" >> /export/home/gdau/mrtg_test/index.html
#echo " HREF=\"http://oss.oetiker.ch/mrtg/\"><IMG" >>
/export/home/gdau/mrtg_test/index.html
#echo " BORDER=0 SRC=\"mrtg-l.png\" WIDTH=63 HEIGHT=25
ALT=\"MRTG\"></A></TD>" >> /export/home/gdau/mrtg_test/index.html
#echo " <TD WIDTH=25><A" >> /export/home/gdau/mrtg_test/index.html
#echo " HREF=\"http://oss.oetiker.ch/mrtg/\"><IMG" >>
/export/home/gdau/mrtg_test/index.html
#echo " BORDER=0 SRC=\"mrtg-m.png\" WIDTH=25 HEIGHT=25
ALT=\"\"></A></TD>" >> /export/home/gdau/mrtg_test/index.html
#echo " <TD WIDTH=388><A" >> /export/home/gdau/mrtg_test/index.html
#echo " HREF=\"http://oss.oetiker.ch/mrtg/\"><IMG" >>
/export/home/gdau/mrtg_test/index.html
#echo " BORDER=0 SRC=\"mrtg-r.png\" WIDTH=388 HEIGHT=25" >>
/export/home/gdau/mrtg_test/index.html
#echo " ALT=\"Multi Router Traffic Grapher\"></A></TD>" >>
/export/home/gdau/mrtg_test/index.html
#echo " </TR>" >> /export/home/gdau/mrtg_test/index.html
#echo "</TABLE>" >> /export/home/gdau/mrtg_test/index.html
#echo "<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>" >>
/export/home/gdau/mrtg_test/index.html
#echo " <TR VALIGN=top>" >> /export/home/gdau/mrtg_test/index.html
#echo " <TD WIDTH=88 ALIGN=RIGHT><FONT FACE=\"Arial,Helvetica\" SIZE=2>"
>> /export/home/gdau/mrtg_test/index.html
#echo " version 2.16.2</FONT></TD>" >>
/export/home/gdau/mrtg_test/index.html
#echo " <TD WIDTH=388 ALIGN=RIGHT><FONT FACE=\"Arial,Helvetica\"
SIZE=2>" >> /export/home/gdau/mrtg_test/index.html
#echo " <A HREF=\"http://tobi.oetiker.ch/\">Tobias Oetiker</A>" >>
/export/home/gdau/mrtg_test/index.html
#echo " <A
HREF=\"mailto:tobi+mrtglink@oetiker.ch\"><tobi@oetiker.ch></A>" >>
/export/home/gdau/mrtg_test/index.html
#echo " and <A
HREF=\"http://www.bungi.com/\">Dave Rand</A> <A
HREF=\"mailto:dlr@bungi.com\"><dlr@bungi.com></A></FONT>" >>
/export/home/gdau/mrtg_test/index.html
#echo " </TD>" >> /export/home/gdau/mrtg_test/index.html
#echo "</TR>" >> /export/home/gdau/mrtg_test/index.html
#echo "</TABLE>" >> /export/home/gdau/mrtg_test/index.html
#echo "</BODY>" >> /export/home/gdau/mrtg_test/index.html
#echo "</HTML>" >> /export/home/gdau/mrtg_test/index.html
#invoke gather_mrtg_data java program
cd /export/home/gdau/task/gather_mrtg_data
./run_gather_data.sh
-------------------------------------------------------------------
-------------------------------------------------------------------
crontab文件
-------------------------------------------------------------------
0,5,10,15,20,25,30,35,40,45,50,55 * * * *
/export/home/gdau/task/cmnet_flow_mrtg.sh
#3 0,1,2 * * * /export/home/gdau/task/cmnet_flow_mrtg_cfg.sh
-------------------------------------------------------------------
【存在问题】
1、mrtg对大流量端口不支持。mrtg默认针对ifTable进行采集,采集的ifIn和
ifOut都为32位。但是针对高速端口,流速很大,32位的Counter很容易溢出。必须
要配置snmp V2版本支持才行。原理是使用ifXTable中的ifHCIn和ifHCOut来采集。
在生成mrtg.cfg文件时,增加:--snmp-options=:::::2选项
由于mrtg(版本:2.16.2)本身存在bug,需要修改cfgmaker脚本的907行。将:
if(not $speed or $counter eq "" or $counter =~ /\D/ or
$SNMP_Session::errmsg or $Net_SNMP_util::ErrorMessage){
修改为:
if(not $speed or $counter eq "" or $counter !~ /\d/ or
$SNMP_Session::errmsg or $Net_SNMP_util::ErrorMessage){
目的是禁止在mrtg.cfg文件中生成noHC:yes的选项。
2、对华为的设备,不支持采集ifAlias。
修改cfgmaker文件,修改:173行。将:
if ($routers->{$router}{deviceinfo}{Vendor} eq 'cisco' &&
$routers->{$router}{deviceinfo}{sysDescr} =~ m/Version\s+(\d+\.\d+)/) {
push @Variables, ($1 > 11.0 or $1 < 10.0 ) ? "ifAlias" : "CiscolocIfDescr";
if ($1 > 11.2) {push @Variables, "vmVlan";};
if ($1 > 11.3) {push @Variables, "vlanTrunkPortDynamicStatus";};
} elsif ( $routers->{$router}{deviceinfo}{Vendor} =~
/(?:hp|juniper|foundry|dellLan|force10|3com|extremenetworks)/) {
push @Variables, "ifAlias";
}
修改为:
if ($routers->{$router}{deviceinfo}{Vendor} eq 'cisco' &&
$routers->{$router}{deviceinfo}{sysDescr} =~ m/Version\s+(\d+\.\d+)/) {
push @Variables, ($1 > 11.0 or $1 < 10.0 ) ? "ifAlias" : "CiscolocIfDescr";
if ($1 > 11.2) {push @Variables, "vmVlan";};
if ($1 > 11.3) {push @Variables, "vlanTrunkPortDynamicStatus";};
} elsif ( $routers->{$router}{deviceinfo}{Vendor} =~
/(?:hp|juniper|foundry|dellLan|force10|3com|extremenetworks)/) {
push @Variables, "ifAlias";
} else {
push @Variables, "ifAlias";
}
在http://www.sunfreeware.com/下载for solaris9 sprac的版本,直接pkgadd进
行安装。
mrtg同时需要libgcc、perl、apache、net-snmp等软件支持。
【mrtg安装配置步骤】
1、安装mrtg
pkgadd -d mrtg-2.16.2-sol9-sparc-local
2、建立mrtg工作目录
mkdir /export/home/gdau/mrtg_test
3、配置apache的httpd.conf
vi /etc/apache/httpd.conf,增加:
-------------------------------------------------------------------
Alias /cmnet/ "/export/home/gdau/mrtg_test/"
<Directory "/export/home/gdau/mrtg">
Options Indexes FollowSymlinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
-------------------------------------------------------------------
4、启动apache
/etc/init.d/apache start、stop、restart
5、生成mrtg.cfg文件
perl /usr/local/mrtg-2/bin/cfgmaker --global "WorkDir:
/export/home/gdau/mrtg_test/221.130.208.50__GXNN-BC-SXNET-RT01-NE80E"
--global "options[_]: growright,bits" --ifdesc=alias
--snmp-options=:::::2 ChinaMobile_Manager_Read@221.130.208.50 --output
/export/home/gdau/mrtg_test/221.130.208.50__GXNN-BC-SXNET-RT01-NE80E/mrtg.cfg
6、进行采集
perl /usr/local/mrtg-2/bin/mrtg
/export/home/gdau/mrtg_test/221.130.208.50__GXNN-BC-SXNET-RT01-NE80E/mrtg.cfg
首次运行会报错,运行三次以上便可以消除错误。
7、生成网页首页文件
perl /usr/local/mrtg-2/bin/indexmaker
--output=/export/home/gdau/mrtg_test/221.130.208.50__GXNN-BC-SXNET-RT01-NE80E/index.html
--title=CMNET
/export/home/gdau/mrtg_test/221.130.208.50__GXNN-BC-SXNET-RT01-NE80E/mrtg.cfg
8、将采集命令放置crontab,最小粒度为5分钟运行。
以下为:自动生成mrtg.cfg配置文件和自动采集shell脚本
-------------------------------------------------------------------
cmnet_flow_mrtg_cfg.sh
-------------------------------------------------------------------
#!/bin/bash
declare -a ip=(218.204.25.245 218.204.25.237 218.204.25.246
211.138.253.254 218.204.25.240 218.204.25.241 211.138.253.249
218.204.25.238 218.204.25.239 218.204.25.254 218.204.26.254
218.204.25.253 218.204.32.254 218.204.25.252 218.204.38.254
218.204.38.226 218.204.25.251 218.204.44.254 218.204.25.250
218.204.50.254 218.204.25.249 218.204.56.254 218.204.25.248 218.204.60.254 )
declare -a host=(GXNN-PB-CMNET-RT01-NEW-RE0 GXNN-PB-CMNET-RT02
OLD-PB-CMNET-RT02 GXNN-PA-CMNET-RT01 GXNN-PA-CMNET-RT04
GXNN-PA-CMNET-RT05 GXNN-PA-CMNET-RT06 GXNN-PA-CMNET-RT07
GXNN-PA-CMNET-RT08 GXLZ-PB-CMNET-RT01 GXLZ-PB-CMNET-RT02.gx.cnmobile.net
GXGL-PB-CMNET-RT01 GXGL-PB-CMNET-RT02 GXYL-PB-CMNET-RT01
GXYL-PB-CMNET-RT02.gx.cnmobile.net GXYL-PA-CMNET-SW01 GXWZ-PB-CMNET-RT01
GXWZ-PB-CMNET-RT02.gx.cnmobile.net GXBH-PB-CMNET-RT01
GXBH-PB-CMNET-RT02.gx.cnmobile.net GXHC-PB-CMNET-RT01
GXHC-PB-CMNET-RT02.gx.cnmobile.net GXBS-PB-CMNET-RT01 GXBS-PB-CMNET-RT02)
declare -a snmp_c=(GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008)
ip_count=23
host_count=23
snmp_c_count=23
i=0
#生成html前半部
mkdir -p /export/home/gdau/mrtg_test
cd /export/home/gdau/mrtg_test
while [ $i -le $ip_count ]
do
mkdir -p /export/home/gdau/mrtg_test/${ip[$i]}__${host[$i]}
workdir="/export/home/gdau/mrtg_test/${ip[$i]}__${host[$i]}"
output="/export/home/gdau/mrtg_test/${ip[$i]}__${host[$i]}/mrtg.cfg"
snmphost="${snmp_c[$i]}@${ip[$i]}"
perl /usr/local/mrtg-2/bin/cfgmaker --global "WorkDir: $workdir"
--output $output --global "options[_]: growright,bits" --ifdesc=alias
--snmp-options=:::::2 $snmphost
i=$(( $i+1 ))
done
#invoke gather_mrtg_data java program
cd /export/home/gdau/task/gather_mrtg_data
./run_gather_cfg.sh
-------------------------------------------------------------------
-------------------------------------------------------------------
cmnet_flow_mrtg.sh
-------------------------------------------------------------------
#!/bin/bash
declare -a ip=(218.204.25.245 218.204.25.237 218.204.25.246
211.138.253.254 218.204.25.240 218.204.25.241 211.138.253.249
218.204.25.238 218.204.25.239 218.204.25.254 218.204.26.254
218.204.25.253 218.204.32.254 218.204.25.252 218.204.38.254
218.204.38.226 218.204.25.251 218.204.44.254 218.204.25.250
218.204.50.254 218.204.25.249 218.204.56.254 218.204.25.248 218.204.60.254 )
declare -a host=(GXNN-PB-CMNET-RT01-NEW-RE0 GXNN-PB-CMNET-RT02
OLD-PB-CMNET-RT02 GXNN-PA-CMNET-RT01 GXNN-PA-CMNET-RT04
GXNN-PA-CMNET-RT05 GXNN-PA-CMNET-RT06 GXNN-PA-CMNET-RT07
GXNN-PA-CMNET-RT08 GXLZ-PB-CMNET-RT01 GXLZ-PB-CMNET-RT02.gx.cnmobile.net
GXGL-PB-CMNET-RT01 GXGL-PB-CMNET-RT02 GXYL-PB-CMNET-RT01
GXYL-PB-CMNET-RT02.gx.cnmobile.net GXYL-PA-CMNET-SW01 GXWZ-PB-CMNET-RT01
GXWZ-PB-CMNET-RT02.gx.cnmobile.net GXBH-PB-CMNET-RT01
GXBH-PB-CMNET-RT02.gx.cnmobile.net GXHC-PB-CMNET-RT01
GXHC-PB-CMNET-RT02.gx.cnmobile.net GXBS-PB-CMNET-RT01 GXBS-PB-CMNET-RT02)
declare -a snmp_c=(GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008
GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008 GXMCC_cmnet_nm2008)
ip_count=23
host_count=23
snmp_c_count=23
i=0
#生成html前半部
mkdir -p /export/home/gdau/mrtg_test
cd /export/home/gdau/mrtg_test
#echo "<HTML>" > /export/home/gdau/mrtg_test/index.html
#echo "<HEAD>" >> /export/home/gdau/mrtg_test/index.html
#echo " <TITLE>CMNET</TITLE>" >> /export/home/gdau/mrtg_test/index.html
#echo " <meta http-equiv=\"content-type\" content=\"text/html;
charset=iso-8859-15\" >" >> /export/home/gdau/mrtg_test/index.html
#echo " <META NAME=\"Command-Line\"
CONTENT=\"/usr/local/mrtg-2/bin/indexmaker
--output=/export/home/gdau/mrtg_test/221.130.208.50__GXNN-BC-SXNET-RT01-NE80E/index.html
--title=CMNET
/export/home/gdau/mrtg_test/221.130.208.50__GXNN-BC-SXNET-RT01-NE80E/mrtg.cfg\"
>" >> /export/home/gdau/mrtg_test/index.html
#echo " <META HTTP-EQUIV=\"Refresh\" CONTENT=\"300\" >" >>
/export/home/gdau/mrtg_test/index.html
#echo " <META HTTP-EQUIV=\"Cache-Control\" content=\"no-cache\" >" >>
/export/home/gdau/mrtg_test/index.html
#echo " <META HTTP-EQUIV=\"Pragma\" CONTENT=\"no-cache\" >" >>
/export/home/gdau/mrtg_test/index.html
#echo " <META HTTP-EQUIV=\"Expires\" CONTENT=\"Thu, 22 Jan 2009 05:57:01
GMT\" >" >> /export/home/gdau/mrtg_test/index.html
#echo " <LINK HREF=\"favicon.ico\" rel=\"shortcut icon\" > " >>
/export/home/gdau/mrtg_test/index.html
#echo "<style type=\"text/css\">" >> /export/home/gdau/mrtg_test/index.html
#echo "/* commandline was: /usr/local/mrtg-2/bin/indexmaker
--output=/export/home/gdau/mrtg_test/221.130.208.50__GXNN-BC-SXNET-RT01-NE80E/index.html
--title=CMNET
/export/home/gdau/mrtg_test/221.130.208.50__GXNN-BC-SXNET-RT01-NE80E/mrtg.cfg
*/" >> /export/home/gdau/mrtg_test/index.html
#echo "/* sorry, no style, just abusing this to place the commandline
and pass validation */" >> /export/home/gdau/mrtg_test/index.html
#echo "</style>" >> /export/home/gdau/mrtg_test/index.html
#echo "</HEAD>" >> /export/home/gdau/mrtg_test/index.html
#echo "<BODY bgcolor=\"#ffffff\" text=\"#000000\" link=\"#000000\"
vlink=\"#000000\" alink=\"#000000\">" >>
/export/home/gdau/mrtg_test/index.html
#echo "<H1>CMNET</H1>" >> /export/home/gdau/mrtg_test/index.html
#echo "<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=10>" >>
/export/home/gdau/mrtg_test/index.html
#echo "<tr>" >> /export/home/gdau/mrtg_test/index.html
#echo "<td>" >> /export/home/gdau/mrtg_test/index.html
while [ $i -le $ip_count ]
do
mkdir -p /export/home/gdau/mrtg_test/${ip[$i]}__${host[$i]}
workdir="/export/home/gdau/mrtg_test/${ip[$i]}__${host[$i]}"
output="/export/home/gdau/mrtg_test/${ip[$i]}__${host[$i]}/mrtg.cfg"
snmphost="${snmp_c[$i]}@${ip[$i]}"
#perl /usr/local/mrtg-2/bin/cfgmaker --global "WorkDir: $workdir"
--output $output --global "options[_]: growright,bits" --ifref=ip
--ifdesc=alias --snmp-options=::1:1::2 $snmphost
perl /usr/local/mrtg-2/bin/mrtg $output
index="$workdir/index.html"
perl /usr/local/mrtg-2/bin/indexmaker --output=$index --title=CMNET $output
# #生成html中部
# echo "<DIV><B><A
HREF="./${ip[$i]}__${host[$i]}/index.html">${host[$i]}</A></B><BR></DIV>"
>> /export/home/gdau/mrtg_test/index.html
# echo "<br>" >> /export/home/gdau/mrtg_test/index.html
i=$(( $i+1 ))
done
#生成html后半部
#echo "</td>" >> /export/home/gdau/mrtg_test/index.html
#echo "</tr>" >> /export/home/gdau/mrtg_test/index.html
#echo "</TABLE>" >> /export/home/gdau/mrtg_test/index.html
#
#echo "<BR>" >> /export/home/gdau/mrtg_test/index.html
#echo "<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>" >>
/export/home/gdau/mrtg_test/index.html
#echo " <TR>" >> /export/home/gdau/mrtg_test/index.html
#echo " <TD WIDTH=63><A" >> /export/home/gdau/mrtg_test/index.html
#echo " HREF=\"http://oss.oetiker.ch/mrtg/\"><IMG" >>
/export/home/gdau/mrtg_test/index.html
#echo " BORDER=0 SRC=\"mrtg-l.png\" WIDTH=63 HEIGHT=25
ALT=\"MRTG\"></A></TD>" >> /export/home/gdau/mrtg_test/index.html
#echo " <TD WIDTH=25><A" >> /export/home/gdau/mrtg_test/index.html
#echo " HREF=\"http://oss.oetiker.ch/mrtg/\"><IMG" >>
/export/home/gdau/mrtg_test/index.html
#echo " BORDER=0 SRC=\"mrtg-m.png\" WIDTH=25 HEIGHT=25
ALT=\"\"></A></TD>" >> /export/home/gdau/mrtg_test/index.html
#echo " <TD WIDTH=388><A" >> /export/home/gdau/mrtg_test/index.html
#echo " HREF=\"http://oss.oetiker.ch/mrtg/\"><IMG" >>
/export/home/gdau/mrtg_test/index.html
#echo " BORDER=0 SRC=\"mrtg-r.png\" WIDTH=388 HEIGHT=25" >>
/export/home/gdau/mrtg_test/index.html
#echo " ALT=\"Multi Router Traffic Grapher\"></A></TD>" >>
/export/home/gdau/mrtg_test/index.html
#echo " </TR>" >> /export/home/gdau/mrtg_test/index.html
#echo "</TABLE>" >> /export/home/gdau/mrtg_test/index.html
#echo "<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>" >>
/export/home/gdau/mrtg_test/index.html
#echo " <TR VALIGN=top>" >> /export/home/gdau/mrtg_test/index.html
#echo " <TD WIDTH=88 ALIGN=RIGHT><FONT FACE=\"Arial,Helvetica\" SIZE=2>"
>> /export/home/gdau/mrtg_test/index.html
#echo " version 2.16.2</FONT></TD>" >>
/export/home/gdau/mrtg_test/index.html
#echo " <TD WIDTH=388 ALIGN=RIGHT><FONT FACE=\"Arial,Helvetica\"
SIZE=2>" >> /export/home/gdau/mrtg_test/index.html
#echo " <A HREF=\"http://tobi.oetiker.ch/\">Tobias Oetiker</A>" >>
/export/home/gdau/mrtg_test/index.html
#echo " <A
HREF=\"mailto:tobi+mrtglink@oetiker.ch\"><tobi@oetiker.ch></A>" >>
/export/home/gdau/mrtg_test/index.html
#echo " and <A
HREF=\"http://www.bungi.com/\">Dave Rand</A> <A
HREF=\"mailto:dlr@bungi.com\"><dlr@bungi.com></A></FONT>" >>
/export/home/gdau/mrtg_test/index.html
#echo " </TD>" >> /export/home/gdau/mrtg_test/index.html
#echo "</TR>" >> /export/home/gdau/mrtg_test/index.html
#echo "</TABLE>" >> /export/home/gdau/mrtg_test/index.html
#echo "</BODY>" >> /export/home/gdau/mrtg_test/index.html
#echo "</HTML>" >> /export/home/gdau/mrtg_test/index.html
#invoke gather_mrtg_data java program
cd /export/home/gdau/task/gather_mrtg_data
./run_gather_data.sh
-------------------------------------------------------------------
-------------------------------------------------------------------
crontab文件
-------------------------------------------------------------------
0,5,10,15,20,25,30,35,40,45,50,55 * * * *
/export/home/gdau/task/cmnet_flow_mrtg.sh
#3 0,1,2 * * * /export/home/gdau/task/cmnet_flow_mrtg_cfg.sh
-------------------------------------------------------------------
【存在问题】
1、mrtg对大流量端口不支持。mrtg默认针对ifTable进行采集,采集的ifIn和
ifOut都为32位。但是针对高速端口,流速很大,32位的Counter很容易溢出。必须
要配置snmp V2版本支持才行。原理是使用ifXTable中的ifHCIn和ifHCOut来采集。
在生成mrtg.cfg文件时,增加:--snmp-options=:::::2选项
由于mrtg(版本:2.16.2)本身存在bug,需要修改cfgmaker脚本的907行。将:
if(not $speed or $counter eq "" or $counter =~ /\D/ or
$SNMP_Session::errmsg or $Net_SNMP_util::ErrorMessage){
修改为:
if(not $speed or $counter eq "" or $counter !~ /\d/ or
$SNMP_Session::errmsg or $Net_SNMP_util::ErrorMessage){
目的是禁止在mrtg.cfg文件中生成noHC:yes的选项。
2、对华为的设备,不支持采集ifAlias。
修改cfgmaker文件,修改:173行。将:
if ($routers->{$router}{deviceinfo}{Vendor} eq 'cisco' &&
$routers->{$router}{deviceinfo}{sysDescr} =~ m/Version\s+(\d+\.\d+)/) {
push @Variables, ($1 > 11.0 or $1 < 10.0 ) ? "ifAlias" : "CiscolocIfDescr";
if ($1 > 11.2) {push @Variables, "vmVlan";};
if ($1 > 11.3) {push @Variables, "vlanTrunkPortDynamicStatus";};
} elsif ( $routers->{$router}{deviceinfo}{Vendor} =~
/(?:hp|juniper|foundry|dellLan|force10|3com|extremenetworks)/) {
push @Variables, "ifAlias";
}
修改为:
if ($routers->{$router}{deviceinfo}{Vendor} eq 'cisco' &&
$routers->{$router}{deviceinfo}{sysDescr} =~ m/Version\s+(\d+\.\d+)/) {
push @Variables, ($1 > 11.0 or $1 < 10.0 ) ? "ifAlias" : "CiscolocIfDescr";
if ($1 > 11.2) {push @Variables, "vmVlan";};
if ($1 > 11.3) {push @Variables, "vlanTrunkPortDynamicStatus";};
} elsif ( $routers->{$router}{deviceinfo}{Vendor} =~
/(?:hp|juniper|foundry|dellLan|force10|3com|extremenetworks)/) {
push @Variables, "ifAlias";
} else {
push @Variables, "ifAlias";
}