分享
 
 
 

网络管理工具Scotty简介。

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

网络管理是网络应用的重要技术之一。目前,Linux下的网络管理工具主要有Mon系统管理工具、PIKT故障检测工具、Scotty网络管理工具、MRTG、cmu-snmp SNMP工具等。其中,Scotty是由布伦瑞克工学院(Technical University of Braunschweig)网络管理小组(NMG)开发的一套网络管理软件开发包。该开发包是用C语言编写的Tcl/Tk脚本语言扩展库。由于其功能强大,所以常常被用于快速建立网络管理应用。在Unix/Linux下,Scotty已称为标准网络管理程序和开发包之一,许多操作系统已将其直接集成。

Scotty使用Tcl/Tk脚本语言。Tcl是一种通用性很强的脚本语言,它最初由John K.Ousterhout在Unix下实现,后来又逐渐向其中增加了图形工具包Tk。现在Tcl/Tk已可以在很多平台下运行,所以,用Tcl编写的程序可以非常简单的从一个平台移植到另一个平台。Tcl/Tk主要包含两部分:语言本身和库。Tcl也是一个库包,它可以被嵌入应用程序,而Tcl本身也是可以扩充的,比如Scotty中的Tnm就是一个Tcl的扩展库,除此之外,还有著名的Expect等Tcl扩展。用Scotty开发的同时,也可搭配这些库,使得开发代码复用度更高,系统稳定性也更好。Tcl现在已成为一种业界常用的脚本配置语言,包括Motorola、、Sun、Cisco等著名公司都根据它们的需要使用Tcl。比如, Cisco路由器就采用了Tcl来配置,更为特别的是,在其中,Cisco还应用了Scotty作为辅助。可见,采用Tcl和Scotty开发网络管理应用是符合业界标准的。Scotty主页上列举了一些用Scotty编写的工具,在著名的开源网站SourceForge上也有用Scotty开发的SNMP应用Thresh,其源代码仅有几百行。

Scotty的2.x版本除Windows版外都为稳定版本,而当前的3.0alpha版本还在开发测试中。3.0主要提供了对SNMPv3的支持,另外还提供了几个网络高级应用的包。Scotty总体来说包含两部分:其一是Tnm Tcl扩展。该扩展提供对网络管理信息资源的访问。其二是Tkined网络编辑器。该编辑器为可扩展的网络管理系统提供了一套框架。

使用Scotty开发网络应用的优点是开发速度较快、可以跨平台执行、修改完代码无需重新编译即可运行,并且其源代码也是开放的。作为专门为网络管理所设计的开发包,我们在Scotty中可以灵活地通过各种协议方便地操纵各种网络对象。Scotty的Tnm扩展库目前已支持很多协议,具体如下(括号内为对该项协议的具体支持细节):

1.SNMP (SNMPv1,SNMPv2c,SNMPv2u,并且可以访问MIB)

2.ICMP (回显(echo),mask,时间戳(timestamp),udp/icmp路由请求)

3.DNS (a,ptr,hinfo,mx,soa record lookups)

4.HTTP (服务器端和客户端)

5.SUN RPC (portmapper,mount,rstat,etherstat,pcnfs服务)

6.NTP (版本3模式6请求)

7.UDP (发送和接收UDP数据报-目前还未实现通道)

此外,它还增加了命令以简化网络管理程序的实现:

1.Netdb命令允许对本例网络数据库的访问(主机名和IP地址,服务名和服务号,网络名,协议名,Sun RPC服务名)

2.Syslog命令允许向本地系统日志设备发送信息

3.Job命令简化了需要以特定间隔时间调度的检测和控制过程的实现。

除了Tnm之外,Scotty还提供了一个交互的网络编辑器tkined。其主要功能是为网络程序提供一个交互界面。这个管理器是可编程的,可以通过Tnm编写的程序可以对该编辑器的所有细节进行控制,因为开发包提供了相应的Tcl API。这样,我们既可以通过Tnm直接编写应用,并由我们自己提供交互界面,也可以通过Tnm与tkined的集成框架来开发。这也体现了Scotty强大的灵活性。

许多用高级语言要几十行代码的程序在Scotty中只需一两行就可以实现。比如要将一个网络地址转换成主机名只需执行netdb hosts name address命令即可。而这在C中则需要一长串的代码。所以,许多Scotty应用尽管看上去比较简短,但实际上已实现了一些比较复杂的功能。

同样,使用Scotty也有一些不足之处。首先是脚本语言共有的缺陷,对复杂数据结构和算法的处理差,其数值处理能力也很差,这一点在前面脚本语言和系统高级语言对比时进行过介绍,因此不适合于开发大型复杂的应用。其次,由于Scotty本身是为了简化开发而设计的,所以Tnm把底层的细节都隐藏了。如果开发的应用需要设计很多底层操作,则一般不适合用Scotty。

下面的一个简单程序摘自Scotty3.0的示例代码,注释部分已略去,从中可以看出Scotty的大概用法。

package require Tnm 3.0

namespace import Tnm::mib Tnm::snmp Tnm::icmp Tnm::netdb

proc traphandler {ip pdu args} {

set msg "$pdu from $ip:"

foreach vb $args {

append msg " [Tnm::mib name [lindex $vb 0]]=\"[lindex $vb 2]\""

}

puts stdout $msg

Tnm::syslog warning $msg

}

proc try cmd {

if {[catch $cmd msg]} { puts stderr "$cmd failed: $msg" }

}

try { Tnm::snmp listener -version SNMPv1 }

try { Tnm::snmp listener -version SNMPv2c }

try { Tnm::snmp listener -version SNMPv3 }

foreach s [Tnm::snmp find] {

$s bind trap "traphandler %A %T %V"

}

vwait forever

上面程序的主要功能是将traphandler过程挂钩为指定SNMP陷阱处理过程,这样将在接收到SNMP 陷阱数据报时自动调用该过程。可以看出,Tcl的语法与C非常相近,这大大提高了开发速度。

从以上分析可以看出,Scotty是一套比较成熟的网络管理应用开发包,它主要用于快速开发一些比较小型的应用。在进行自己的开发时,可以根据实际的需要进行选择。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有