发现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');
}
利用这个模块,登录交换机之后就可以配置,诊断收集相关信息了。

这篇博客介绍如何利用Perl中的Net::Telnet::Cisco模块登录并操作公司的交换机。通过读取用户输入的IP地址,脚本首先检查设备是否可达,然后进行TCP连接并登录,最终进入特权模式,以便进行进一步的配置或诊断任务。

1252

被折叠的 条评论
为什么被折叠?



