2011年6月24日 星期五

用Perl縮短維護Cisco Router Switch時間




因為一直用相同的指令在多台設備之間進行維護,實在覺得很…浪費時間,
透過Perl可以縮短許多重覆的部份。

下面是如何用Perl對一群Switch或Router做同樣的網路維護動作,
也把running-config備份下來:

Step.1 裝Perl:
以Windows來說,可以到這裡下載合適的Active Perl
http://www.activestate.com/activeperl/downloads
下載完點兩下進行安裝,安裝完記得重開機。

Step.2 裝Net::Telnet::Cisco 模組:
執行Comand_> ppm install Net::Telnet::Cisco進行安裝

Step.3 寫一段Perl:
用文字編輯器編寫並存成xxx.pl檔案:(以下範例即對一些IP進行相同的網維指令)
use Net::Telnet::Cisco;

my @hosts = qw( 192.168.1 192.168.3 192.168.6.6 192.168.8.8 192.168.12.4);
#把要登入的Swich或Router全打進上面

foreach my $host( @hosts ) {
my $session = Net::Telnet::Cisco->new(Host => $host);
$session->login('admin','1234');
#上面這段即輸入Switch或Ruter的帳號密碼
$session->enable('1234');
#再輸入enable的帳號密碼
open(write_file,">$host.txt");
#上面是把每一台主機的維護資訊都以IP名稱存檔
#下面是維護想要看的指令集
my @output;
push(@output,$session->cmd('show version'));
push(@output,$session->cmd('show log'));
push(@output,$session->cmd('show process cpu'));
push(@output,$session->cmd('show env all'));
push(@output,$session->cmd('show ip inter brief'));
push(@output,$session->cmd('show interface'));
push(@output,$session->cmd('show flash'));

print write_file @output;
close(write_file);
#最後再把running-config給備起來,IP是當時自已電腦的IP
$session->cmd('copy run tftp://IP');
}

4 則留言:

江湖一片葉 提到...

有時候會遇到設定檔比較大或網路較慢,可以更改Timeout 時間,如下:

my $session = Net::Telnet::Cisco->new(Timeout =>15 , Host => $host);

等待15秒後才Timeout

匿名 提到...

HI,我想問如果要進cisco(config)# 要如何進入及輸入指令呢?
要怎寫= =跪求大大

匿名 提到...

例如要新增vlan 100
進入vlan 設置ip add x.x.x.x x.x.x.x
no shutdown
要如何寫>"<

匿名 提到...

另外$session->cmd('copy run tftp://IP');這段輸入完ip 運行時會出現time-out....