Chinaunix

标题: #自己编了个批量备份交换机配置的程序。(更新一个版本) [打印本页]

作者: 北极星    时间: 2009-09-08 23:28
标题: #自己编了个批量备份交换机配置的程序。(更新一个版本)
本帖最后由 北极星 于 2019-11-05 08:20 编辑

(更新一个版本)
有朋友联系我要支持交换机使用用户名和密码方式的,我就给他做了一个,他的cisco交换机可以用了,大家可以试试,不一定支持所有的。
原来那个支持用户名方式备份的主程序加了壳,容易引起杀毒软件误报,现在去掉了,大家可以试一下还会不会误报,特别是360有时候误报很严重。





偶是单位的网络管理员,单位有近200多台华三、cisco和锐捷的交换机,有几个管理员都可以对交换机的配置进行更改,这样定期备份交换机的配置就成了一个必要的事情,手工一台台telnet或tftp上去备份实在太累人了,所以就自己花了半天的功夫写了一个程序,其主要功能就是可以一次性批量备份交换机的配置。编写完后试了一下,单位200多台交换机配置的备份,10几分钟就搞定了。效果还不错,所以就把程序放上来,觉得有用的兄弟可以免费拿去试试. 程序界面就是几个控件随便堆起来的,没做什么美化。


老版本软件使用说明:

支持交换机,华三,思科(锐捷)交换机需要配置vty,允许telnet。

使用方法:
第一步输入交换机的两个密码,“T密码”为VTY密码,就是telnet上去输的第一个密码。“S密码”就是华三的super密码,或者思科的enable密码

第二步选择备份的交换机种类,目前备份一批次只能是同一品牌的。

第三步添加IP地址,一种是手工一个个加;另一种是批量导入,把你的IP地址,一个一行写到一个txt文件中(举例如下),再用批量导入功能导入。如果交换机IP址象我一样有几百台的话,建议先在excel中,用填充句柄一次性拉出来,再复制到txt文件中,这样可以省很多力。
192.168.0.1
192.168.0.2
192.168.0.3

最后点击开始备份按钮就可以进行交换机配置的备份了,备份出来的文件,以 “IP地址.txt” 的命名,直接保存到D盘的根目录下。

优点:
1.速度还算不错,差不多2-3秒可以备份一个,我单位的200多台交换机,10几分钟就搞定了。
2.我用的不是直接tftp拷备config.cfg,而是用的show run和dis cu命令,把显示的内容保存到“IP地址.txt” 文件中。这样的话有谁配置交换机后,忘记wr和save也没有关系。
3.比tftp方式适用性广,可以直接备份外网的交换机配置。而不用管你的电脑有没有合法IP地址。

小问题:
1.由于没有用多线程来编写,所以碰到不通的IP地址,程序会有假死的现象,可以不用管他,过一会儿程序联不通这个IP地址,就会自动跳过。
2.备份出来的配置文本中,会有---more--- 和几个特定乱码,等少量多余内容,影响不大,我也懒得在程序中编写代码去掉他了。
3.备份交换机如果是用户名和密码登录的,还不能识别,无法正确备份配置(主要的我的交换机基本没有这样配置的,所以也就没去考虑怎么写程序代码)


小技巧:

1.添加IP地址不小心错了,可以直接鼠标左键双击这个IP地址,就会从列表中删除。



编这个小程序半天功夫就完成了,做的很简单,主要是自己用的。觉得有用的兄弟可以免费拿去试试,如果有兄弟想进一步深度开发这个程序的话,比如添加定时备份、想支持其他品牌交换机、支持不同密码批量等功能。可以和我在QQ:3309288 上谈谈,适当给点开发费用,让我换点奶粉钱,呵呵!




下载地址如下:



[ 本帖最后由 北极星 于 2009-11-26 11:34 编辑 ]

backup.jpg (15.48 KB, 下载次数: 800)

backup.jpg

作者: hyagami    时间: 2009-09-09 08:42
这个要支持一下,兄弟也不容易啊
作者: marsteel    时间: 2009-09-09 10:41
linux用perl
作者: 北极星    时间: 2009-09-09 11:32
原帖由 marsteel 于 2009-9-9 10:41 发表
linux用perl



楼上的能给我一个比较完整的脚本代码吗?
作者: marsteel    时间: 2009-09-09 13:09
原帖由 北极星 于 2009-9-9 11:32 发表



楼上的能给我一个比较完整的脚本代码吗?

http://www.pancho.org/about.html
作者: tangye    时间: 2009-09-09 17:02
这个行为要支持!
作者: marsteel    时间: 2009-09-10 00:07
原帖由 tangye 于 2009-9-9 17:02 发表
这个行为要支持!

造轮子吗?
作者: interval    时间: 2009-09-10 13:25
能区分备份的交换机吗
作者: 北极星    时间: 2009-09-11 18:54
昨天把备份文件中显示more和乱码的部份去掉了,但还不够完善,就不放上来了,再研究一下telnet的NVT格式看看。
作者: haomiaohaiyang    时间: 2009-09-12 00:36
支持。。。ddddddddddddddddddddd
作者: boredlaugh1    时间: 2009-09-13 18:11
标题: 回复 #1 北极星 的帖子
顶一下,支持你更新
作者: bzzh    时间: 2009-09-14 08:46
haoding
作者: cheveu    时间: 2009-09-16 00:38
标题: LZ我给你几点建议:
方法一:0、1组合。
0、copy run tftp,同样可以达到保存当前配置的目的。
1、用windows下的脚本可以实现你同样的功能,而且密码是可以预先写在文档里让脚本按顺序读取的。不过需要搭配1使用。

方法二:2、3组合。
2、windows的cmd下,直接输入telnet后回车,此时见图2,可以用telnet自身的命令把输出存到文本
3、此时telnet 上去后,terminal length 0(华为应该有对应的配置,俺不会,欢迎知道的补全),再show running-config,就能一口气保存配置,没有讨厌的more等字符。
当然,方法二也可以做成脚本,但是我没试过,只是自己偶尔用用。


另:脚本不好做界面。你这个小程序有个人机交互界面,很好。

[ 本帖最后由 cheveu 于 2009-9-16 00:49 编辑 ]

图2.jpg (27.56 KB, 下载次数: 437)

图2.jpg

作者: ssffzz1    时间: 2009-09-16 08:39
LS的方法也不错的。

1.1.27  screen-length
【命令】
screen-length screen-length
undo screen-length
【视图】
用户界面视图
【缺省级别】
2:系统级
【参数】
screen-length:指定下一屏所显示的行数,取值范围为 0~512,0表示一次性显示
全部信息,即不进行分屏显示。
【描述】
screen-length命令用来设置下一屏所显示的行数。undo screen-length命令用来恢
复缺省情况。
缺省情况下,下一屏显示 24行数据
作者: leezer    时间: 2009-09-16 09:29
标题: 回复 #2 sdasdf 的帖子
看看,兄弟的代码,将来我或许用得到,谢谢!
作者: whoiswhoz    时间: 2009-09-16 09:44
好的 支持楼主的奶粉钱计划
作者: WangZhou    时间: 2009-09-16 15:35
看看。。。
作者: cheveu    时间: 2009-09-16 20:01
标题: 回复 #14 cheveu 的帖子--对 show run 保存配置的一点说明:
windows终端cmd窗口的大小可以影响running-config配置输出效果,使之强行分行。强行分行以后,保存下来的文本也会分行。这是我们不希望的。

解决办法:
右击cmd窗口的快捷方式,修改属性 --> 布局,将屏幕缓冲区宽度和窗口宽度都调到很大(比如512),这样一般说来,很难有配置被强行分行了。

注:因为不知道cisco和H3C的路由器交换机配置文件,每行最多多少个字符,所以解决办法也只是经验之谈,说不上严谨。
     严谨的办法是搞清楚每行字符数的上限,把窗口宽度和缓冲区宽度都调到大于此上限的值,这样绝对不会强制分行。
作者: ssffzz1    时间: 2009-09-16 20:06
哦。其实还是TFTP的法子最好。干净啊。TELNET进去执行个命令就OK了。
作者: old-cow    时间: 2009-09-16 22:11
gg
作者: 北极星    时间: 2009-09-16 22:30
原帖由 cheveu 于 2009-9-16 00:38 发表
方法一:0、1组合。
0、copy run tftp,同样可以达到保存当前配置的目的。
1、用windows下的脚本可以实现你同样的功能,而且密码是可以预先写在文档里让脚本按顺序读取的。不过需要搭配1使用。

方法二:2、 ...



谢谢你的建议:
copy run tftp的方法我也想过,但由于要用到tftp这个外部软件,所以无法知道拷备进度,软件上就太好操作。而且如果一个用户,不是备份局域网内的交换机,而且备份外网的交换机,而他的电脑是通过NAT出去的,这样tftp这个方法就不起作用了。


脚本的方法也有一个问题就是分页,不知道会分几页,我用的解决办法,就是后面多输出几个“空格”,以保证能显示到最后一页。不过总感觉这个方法不太严密,呵呵。
还有我试的脚本,好象cmd窗口一定要在当前窗口,不然就无法运行下去。
网上看到在secureCRT也中也可以用脚本,但不知道为何我一直没有成功过,有成功的朋友能给个代码吗?

其实关于分页---more---的问题,在cisco和华三上我现在已经基本解决,锐捷等我有测试交换机后,应该也可以解决。

[ 本帖最后由 北极星 于 2009-9-16 22:46 编辑 ]
作者: 北极星    时间: 2009-09-16 22:34
原帖由 ssffzz1 于 2009-9-16 08:39 发表
LS的方法也不错的。

1.1.27  screen-length
【命令】
screen-length screen-length
undo screen-length
【视图】
用户界面视图
【缺省级别】
2:系统级
【参数】
screen-length:指定下一 ...



谢谢,有空我来试试看这个命令,cisco有没有相应的命令?
作者: ssffzz1    时间: 2009-09-16 23:40
原帖由 北极星 于 2009-9-16 22:34 发表



谢谢,有空我来试试看这个命令,cisco有没有相应的命令?



有,但是忘记了。见到设备才能想起来。
作者: 有时很孤单    时间: 2009-09-17 14:49
顶一下,拿来看看
作者: luren04    时间: 2009-09-17 17:01
看一看先,楼主很有创意。
作者: cnadl    时间: 2009-09-18 17:28
原帖由 cheveu 于 2009-9-16 00:38 发表
方法一:0、1组合。
0、copy run tftp,同样可以达到保存当前配置的目的。
1、用windows下的脚本可以实现你同样的功能,而且密码是可以预先写在文档里让脚本按顺序读取的。不过需要搭配1使用。

方法二:2、 ...


你这么多回帖就这个有价值撒。

这个应该能配合楼主的输出用,改改还能统计别的比如bpduguard,udld之类的

#!/bin/awk -f

#
#Int[1]=switch_name Int[2]=interface_number Int[3]=Admin_Status Int[4]=IP
#
#Int[7]=Vlan Int[8]=Voice_Vlan
#
#Int[10]=Description
#
#Int[100]=access/trunk/routed Int[101]=accss_vlan Int[102]=trunk_native_vlan
#
#Int[103]=voice_vlan
#

BEGIN { FS="\n"; RS="!"; OFS="\t"; ORS="\n";

        if(sub("^-","",ARGV[1])){ __COMMAND=ARGV[1]; ARGV[1]=""; ARGIND++ } else __EXIT_SCR="TRUE";

        __COUNT_VLAN="c";
        __VERBOSE="v";
        __PORT_USAGE="u";
        __REVERSE_PORT_USAGE="U";
        __HELP_FLAG="h"; __HELP_FULL_FLAG="help";

        Int[1]="switch_name"; Int[2]="interface_number"; Int[3]"=Admin_Status"; Int[4]="IP";
                Int[7]="Vlan"; Int[8]="Voice_Vlan";
                Int[10]="Description";
                Int[100]="access/trunk/routed"; Int[101]="accss_vlan"; Int[102]="trunk_native_vlan";
                Int[103]="voice_vlan";
                TOTAL_PORTS=0; CLOSED_PORTS=0;

#########################################
#       Initial Output by category      #
#########################################
        if(__COMMAND~__COUNT_VLAN){
                print "Counting ports in VLAN...";
                if(__COMMAND~__VERBOSE) {
                        printf ("%-16s\t%-8s\t%-4s\t%-4s\t%s\n", "Switch","Int","Admin","Vlan","Voice","Destination"); }
        }
        else if(__COMMAND~__PORT_USAGE){
                print "Counting ports usage..."
                if(__COMMAND~__VERBOSE) {
                        printf ("%-16s\t%-8s\t%4s\t%10s\t%10s\n", "Switch","Int","Admin","Shutdowned","Toatal Ports"); }
        }
        else if(__COMMAND~__HELP_FLAG || __COMMAND~__HELP_FULL_FLAG){
                __EXIT_SCR="TRUE";
                __PRINT_HELP_MESSAGE()
                exit 0
        }
        else if(__EXIT_SCR~"TRUE"){
                __PRINT_HELP_MESSAGE()
                exit 0
        };

}

$2~/^interface/{
#########################################
#       Filt interface config           #
#########################################
        for(foo in Int){ Int[foo]="N/A"}
        Int[1]=FILENAME; sub(".*/","",Int[1]); sub(".txt","",Int[1]);
        bar = 1; while ( bar <= NF ) {
                if( sub("^interface ","",$bar)){
                        sub("gabitEthernet\|stEthernet\|rt-channel\|back","",$bar); Int[2]=$bar;
                        if(Int[2]~"Vlan\|Loop\|Nu") {Int[100]="routed"}
                }
                if( sub("description ","",$bar)){ sub(" ","",$bar); Int[10]=$bar};
                if( sub("switchport mode ","",$bar)){ sub(" ","",$bar); Int[100]=$bar}
                        else if($bar~"no switchport"){ Int[100]="routed"};
                if( sub("ip address","",$bar)){
                        if( $bar!~"no") {Int[100]="routed"; Int[4]=$bar}
                        else if(Int[2]~"Vlan\|Loop\|Nu") {Int[100]="routed"}
                }
                if( sub("switchport access vlan ","",$bar)){ sub(" ","",$bar); Int[101]=$bar};
                if( sub("switchport voice vlan ","",$bar)){ sub(" ","",$bar); Int[103]=$bar};
                if( sub("switchport trunk native vlan ","",$bar)){ sub(" ","",$bar); Int[102]=$bar};
                if( sub("shutdown","",$bar)){ if( $bar~"no" ){ Int[3]="open"} else { Int[3]="close"}};
                bar++;
                }

#########################################
#       Verbose Output by category      #
#########################################
        if(__COMMAND~__COUNT_VLAN){
                if( Int[3]~"close"){ Int[7]="N/A"; Int[8]="N/A"}
                else if( Int[100]~"access"){ Int[7]=Int[101]; Int[8]=Int[103]}
                else if(Int[100]~"trunk"){
                        if(Int[102]~"N/A"){ Int[7]=Int[100]}
                        else {Int[7]=Int[102];Int[8]=Int[103]}
                }
                else if(Int[100]~"routed"){
                        Int[7]="N/A"; Int[8]="N/A";
                }
                else if(Int[100]~"N/A"){
                        if(Int[2]~"Vlan"){Int[100]="routed"; Int[7]=Int[100]}
                        else if(Int[101]~"N/A" && Int[102]~"N/A"){ Int[7]=1}
                        else if(Int[101]~"N/A"){ Int[100]="trunk"; Int[7]=Int[102]; Int[8]=Int[104]}
                        else{Int[100]="access"; Int[7]=Int[101]; Int[8]=Int[103]}
                }
                else{Int[7]=Int[100]};

                if(__COMMAND~__VERBOSE){
                        printf ("%-16s\t%-8s\t%-4s\t%-4s\t%s\n", Int[1],Int[2],Int[3],Int[7],Int[8]); }

                if(Int[3]!~"close") {Vlan[Int[7]]++; if(!(Int[8]~"N/A")){Vlan[Int[8]]++;}}
        }
        else if(__COMMAND~__PORT_USAGE){
                if(Int[2]~"Po|Nu|Vl|Lo"){}
                else if(Int[2]~"0/49\|0/50\|0/51\|0/52"){}
                else{
                        TOTAL_PORTS ++;
                        if(Int[3]~"close") {CLOSED_PORTS ++;}
                }
                if(__COMMAND~__VERBOSE){
                        printf ("%-16s\t%-8s\t%-4s\t%10s\t%10s\n", Int[1],Int[2],Int[3],CLOSED_PORTS,TOTAL_PORTS);}
        }

}

function __PRINT_HELP_MESSAGE( _ARGV_END_, __THISFILE_NAME, __THISFILE_ALIAS, __FUNC_foo){

#########################################
#       Usage and Help content          #
#########################################
        for(__FUNC_foo=1; __FUNC_foo < 75; __FUNC_foo++){printf("%s","=");}; print "" ;

        __THISFILE_NAME="count_ports_vlan.awk "
        __THISFILE_ALIAS="alias_name"

        print
        print "\33[1m""NAME: "
        print "\33[0m\t"__THISFILE_NAME;
        print
        print "\33[1m""ALIAS: "
        print "\33[0m\t"__THISFILE_ALIAS;
        print
        print "\33[1m""SYNOPSIS:"
        print "\33[0m\t"__THISFILE_NAME"-c[v] config_file(s)";
        print "\33[0m\t"__THISFILE_NAME"-u[v] config_file(s)";
        print "\33[0m\t"__THISFILE_NAME"-h";
        print
        print "\33[1m""DESCRPITION:"
        print
        print "\33[1m""OPTIONS:"
        print "\33[0m\t""-c\tCount ports number in each VLAN."
        print "\33[0m\t""-u\tCount ports utilization by accumulating unshut ports."
        print "\33[0m\t""-c\tDisplay this page."
        print
        print "\33[0m\t""config_file(s):""\tFilename(s) of the device configuration(s)."
        print
        print "\33[1m""Example:"
        print "\33[0m\t"__THISFILE_NAME" -cv skbra/*"
        print
        print "\33[0m\t"__THISFILE_ALIAS" -u AUSYDCRS6506_01.txt"
        print

}


END {
        for(foo=1; foo < 75; foo++){printf("%s","=");}; print "" ;

#########################################
#       Summarized output by category   #
#########################################
        if(__COMMAND~__COUNT_VLAN){
                print "VLAN information:"; print "VLAN ID\t","Ports Number";
                for (foo in Vlan){
                        if(Vlan[foo]!=0 && (foo!~"N/A\|routed\|trunk")){print "Vlan",foo":",Vlan[foo];}
                }
                for(foo=1; foo < 75; foo++){printf("%s","=");}; print "" ;
        }
        else if(__COMMAND~__PORT_USAGE){
                print "Used ports statistics:"; print "Non-Shutdowned\t","Total Ports", "Percentage";
                NON_SHUT_PORTS=TOTAL_PORTS - CLOSED_PORTS;
                printf ("%-16d\t%-11d\t%+9.2f%1s\n", NON_SHUT_PORTS, TOTAL_PORTS, NON_SHUT_PORTS*100/TOTAL_PORTS,"%");
                for(foo=1; foo < 75; foo++){printf("%s","=");}; print "" ;
        };
}!
作者: cnadl    时间: 2009-09-18 17:33
原帖由 cheveu 于 2009-9-16 00:38 发表
方法一:0、1组合。
0、copy run tftp,同样可以达到保存当前配置的目的。
1、用windows下的脚本可以实现你同样的功能,而且密码是可以预先写在文档里让脚本按顺序读取的。不过需要搭配1使用。

方法二:2、 ...



顺便说下,根据平台不同,一般有两种语法
term pa le
term l

而窗口宽度的问题可以使用以下命令解决
term w
作者: 北极星    时间: 2009-09-19 23:35
原帖由 cnadl 于 2009-9-18 17:28 发表


你这么多回帖就这个有价值撒。

这个应该能配合楼主的输出用,改改还能统计别的比如bpduguard,udld之类的

#!/bin/awk -f

#
#Int[1]=switch_name Int[2]=interface_number Int[3]=Admin_Status In ...



呵呵,高手开始一个个出来了。
作者: yellowswan    时间: 2009-09-20 22:34
学习一下
作者: XCyber    时间: 2009-09-23 02:14
谢谢,楼主无私奉献
以前也做过类似的东西,难点主要是兼容多种品牌和类型设备
作者: laiwenchi    时间: 2009-09-25 10:23
不顶不行,支持
作者: pant    时间: 2009-09-25 12:06
这是很好的东西啊,非常感谢搂主
作者: wiliiwin    时间: 2009-09-25 15:08
支持下 这样的管理员才是企业需要的
作者: 醉倒何妨    时间: 2009-09-26 20:05
ddddddddddddddddddddd
作者: sinlee    时间: 2009-09-26 22:59
简约化,支持
作者: gearfox    时间: 2009-10-01 16:52
谢谢你咯~~~~~~~~~~~~~~~~~~
作者: luxh790125    时间: 2009-10-03 10:43
精神上支持啊楼主,干事用上好脑子才是王道啊
作者: 痴痴的人    时间: 2009-10-03 18:12
支持一下,我上次有个朋友刚好需求,可以有人请吃饭了。。。
作者: laixi85    时间: 2009-10-03 22:34

作者: shencf    时间: 2009-10-09 23:02
标题: 回复 #1 北极星 的帖子
正在找这种软件,下错,下载一个试!
作者: assassincl    时间: 2009-10-10 09:08
这个一定要顶一下,下来看看
作者: lwf248    时间: 2009-10-10 19:58
:wink: :wink: :wink:
作者: redfoxjin    时间: 2009-10-12 01:22
下载来看看
作者: LearNuxer    时间: 2009-10-12 10:00
哇,好强大!!
作者: xxniao727    时间: 2009-10-12 10:33
标题: 回复 #1 北极星 的帖子
OK~!不错!我们的项目也有好几百台设别一个一个的备份太麻烦了啊!
作者: kwoarang    时间: 2009-10-12 11:10
看看使用什么写的,学习学习
作者: lasama    时间: 2009-10-12 20:16
用批处理写的么?
作者: dreamingdog    时间: 2009-10-12 22:30
这个要支持一下,谢谢!
作者: idefeng    时间: 2009-10-13 12:42
我正想要这个东西。参考一下。
作者: philein    时间: 2009-10-13 23:36
有源码米
作者: 满天星    时间: 2009-10-14 15:44
一定是dos的for命令,哈哈
作者: gxj241040128    时间: 2009-10-14 19:09
好!
作者: 太极球    时间: 2009-10-14 22:28
标题: 回复 #2 sdasdf 的帖子
支持
作者: pingtelnet    时间: 2009-10-15 09:08
testttttttttttttttttttestttttttttttestttttttttt
作者: abcoooo    时间: 2009-10-16 08:03
进来学习一下。
作者: xb8023    时间: 2009-10-16 14:23
谢谢楼主贡献!!
作者: aredfox    时间: 2009-10-20 11:20
学习一下:wink:
作者: 北极星    时间: 2009-10-20 22:08
原帖由 满天星 于 2009-10-14 15:44 发表
一定是dos的for命令,哈哈



我用的是编程软件里的网络通讯控件。
作者: wolf2602    时间: 2009-10-22 11:14
猜猜猜猜猜猜猜猜猜猜猜
作者: dzskyhgy    时间: 2009-10-22 11:22
听起来不错啊,look一下
作者: nj106    时间: 2009-10-22 14:08
ding
作者: lys0212linux    时间: 2009-10-23 09:45
我没什么高见,进来学习下
作者: conrad1982    时间: 2009-10-27 08:44
这么强。。。先试试看吧
作者: deipkh    时间: 2009-10-27 09:40
支持楼主的开发
作者: zhrw    时间: 2009-11-03 10:07
正需要
作者: errmo    时间: 2009-11-03 17:13
不错的呀。。。
作者: shenwu    时间: 2009-11-04 13:44
标题: 回复 #1 北极星 的帖子
我也想要
作者: ybbsktg    时间: 2009-11-05 14:36
lz好强~~~~~~~
作者: hehy9746    时间: 2009-11-06 13:42
谢谢
作者: wangqh_2008    时间: 2009-11-07 12:10
标题: 回复 #1 北极星 的帖子
好东西,正找呢,顶一下
作者: lostar1314    时间: 2009-11-10 10:45
有个疑问
我备份的数据文件怎么找不到啊。
提示备份完成的

[ 本帖最后由 lostar1314 于 2009-11-10 11:00 编辑 ]
作者: 北极星    时间: 2009-11-10 11:55
原帖由 lostar1314 于 2009-11-10 10:45 发表
有个疑问
我备份的数据文件怎么找不到啊。
提示备份完成的



直接保存到D盘的根目录下。
作者: taxuerb    时间: 2009-11-10 16:56
支持一下~~~~~~~~~~~
作者: zhangshebao    时间: 2009-11-10 21:14
dd
作者: dbpan    时间: 2009-11-11 18:27
好东西。用一下。
作者: haoyu323    时间: 2009-11-11 19:28
支持楼主!!
作者: jybjsrg    时间: 2009-11-11 22:29
顶一个
作者: raulyang7cn    时间: 2009-11-16 13:53
标题: 回复 #1 北极星 的帖子
谢谢楼主
作者: 北极星    时间: 2009-11-26 11:36
大家用下来有没有什么建议的。
作者: xiaobaolee    时间: 2009-11-27 18:06
标题: 多谢多谢
正好需要呢
呵呵
作者: gilsy    时间: 2009-12-04 11:52
标题: 回复 #1 北极星 的帖子
先谢了
作者: 天下秋    时间: 2009-12-05 14:25
还要回复才能看呀。
作者: gxp1100    时间: 2009-12-06 18:57
牛人阿。。看看怎么搞的。
作者: zhangjiang    时间: 2009-12-07 00:32
原帖由 marsteel 于 2009-9-9 13:09 发表

http://www.pancho.org/about.html


记录
作者: tompuer    时间: 2009-12-07 12:30
非常感谢,支持了!!!
作者: ilovememory    时间: 2009-12-07 13:08
标题: 我用的是securecrt的脚本功能
原来不知道有个terminal length 0这个命令,学习了,感谢!

楼主的程序下载后报GenPack:Worm.Generic.99785病毒报警,应当是误报吧?!如果能提供源代码就更好了!

[ 本帖最后由 ilovememory 于 2009-12-7 13:22 编辑 ]
作者: 放网膜    时间: 2009-12-07 19:57
提示: 作者被禁止或删除 内容自动屏蔽
作者: 悟空下海    时间: 2009-12-08 10:57
????????????????
作者: zmqsicc    时间: 2009-12-09 11:01
标题: 学习学习
学习学习,精神可嘉
作者: pheonix9463    时间: 2009-12-09 22:52
标题: 能把源码贴一下么
能把源码贴一下么
作者: heidern    时间: 2009-12-10 16:58

作者: aifugong    时间: 2009-12-10 16:58
支持一下!
作者: sandsoft    时间: 2009-12-11 09:06
好用不好用
试试
作者: philona    时间: 2009-12-11 11:34
是不是备份路由也可以用!
作者: philona    时间: 2009-12-11 12:01
备路由也好使  我试了
作者: RSer    时间: 2009-12-11 16:15
我们都是用网管软件
作者: cq0115    时间: 2009-12-11 17:20
这个要支持一下,兄弟也不容易啊
作者: awb2006    时间: 2009-12-12 11:07

作者: smallfish    时间: 2009-12-14 14:00
楼主高手,学习下!
作者: seancom    时间: 2009-12-14 16:25
标题: 能区分备份的交换机吗
能区分备份的交换机吗




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2