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

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

发现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');


}

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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值