利用Perl中的Cisco模块登录公司交换机

来源:互联网 发布:squid默认端口 编辑:程序博客网 时间:2024/06/06 14:32

发现CPAN中有个CISCO模块,恰好能满足登录公司交换机,进行各类指令操作,如下:

#!/usr/bin/perl -w
use strict;
use Net::Telnet;
use Net::Telnet::Cisco;
use Net::Ping;


my $welcomeMsg =  "*******************************************
交换机设备登录工具
发布时间:2012-10-14 12:00
******************************************************\n";
print $welcomeMsg;


#注意,$prompt是登陆后的命令提示符,如果匹配不上,脚本将会timeout
my $username = 'who';
my $password = 'who';
my $prompt   = '/.+[>#]$/';


print "请输入检测设备IP地址,多个IP请按分号或逗号隔开:\n";
my $hostlist = <STDIN>;
chomp($hostlist);
my @hostArray = split /[;,]/, $hostlist;


for my $host (@hostArray)
{
$host =~s#\s+##g;
if ($host !~ m/(\d+\.){3}\d+/)
{
print "IP地址${host}输入不正确,登录下一台设备或退出工具!\n";
next;
}
#先看是否能ping通设备,主机连通性测试,5次连接,连接不上则进入下一台设备登录或退出程序
my $pingcnt = 1;
my $p       = Net::Ping->new('icmp');
while ($pingcnt <= 5)
{
if ($p->ping($host))
{
print "$host is reachable.\n";
last;
}
else
{
print "$host is unreachable\n";
$pingcnt++;
}
}

if ($pingcnt > 5)
{
print "$host ping 不通,进入下一台设备登录或退出工具\n";
next;
}

my $session = Net::Telnet::Cisco->new(
             Timeout => 15,
             Prompt => $prompt
             );
$session->open($host);
print "$host连接成功\n" if $session->login($username, $password);
sleep(5); #加入5s延迟的作用是为了使设备telnet服务能及时响应
$session->enable('enable');


}

利用这个模块,登录交换机之后就可以配置,诊断收集相关信息了。




0 0
原创粉丝点击