Chinaunix首页 | 论坛 | 博客
  • 博客访问: 28778
  • 博文数量: 4
  • 博客积分: 362
  • 博客等级: 二等列兵
  • 技术积分: 45
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-12 20:53
文章分类

全部博文(4)

文章存档

2011年(2)

2010年(2)

分类: Python/Ruby

2011-04-03 22:19:29

     公司IDC机房有几百台服务器,交换机几十台。出现流量异常的时候,不能迅速定位到哪台服务器。于是学了2天perl,写个脚本进行统计。
     
  1. #!/usr/bin/perl
  2. #统计交换机端口下联设备IP和Mac地址
  3.  use Net::Telnet::Cisco;
  4.   open HOST,";
  5.   open IP,";
  6.   while (<HOST>){
  7.        chomp;
  8.        push(@host,$_);
  9.   }
  10.   close HOST;
  11.   while (<IP>){
  12.        chomp;
  13.        push(@ip,$_);
  14.   }
  15.   close IP;
  16.   foreach $h (@host){
  17.         print $h;
  18.         my $session = Net::Telnet::Cisco->new(Host => "$h");
  19.         $session->login('cisco', 'PASSWD');
  20.         open OUT,">>/home/Switch/$h.txt";
  21.         # Enable mode
  22.         if ($session->enable("ENPASSWD") ) {
  23.              print "Cennect is ok\n";
  24.            } else {
  25.              warn "Can't enable: " . $session->errmsg;
  26.            }
  27.         foreach $i (@ip){
  28.              my @outputing = $session->cmd("ping $i");
  29.              my @arp = $session->cmd("show ip arp | in $i");
  30.              my @result=split( ' ' , $arp[0] );
  31.              my @mac = $session->cmd("show mac-address-table dy add $result[3]");
  32.              my @IPlist = split( ' ' , $mac[5] );
  33.                  if ($IPlist[3]=~/.*\/.*/){
  34.                       print OUT "$i $IPlist[1] $IPlist[3]\n";
  35.                  }
  36.              }
  37.          close OUT;
  38.          $session->close;
  39.    }
阅读(1648) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

drvial2011-04-27 10:20:32

x9x9: 学习下~开头的两段如果合并一下就更工整了:
chomp(my @host=<HOST>);
chomp(my @ip=<IP>);.....
感谢指点~

x9x92011-04-12 22:25:48

学习下~开头的两段如果合并一下就更工整了:
chomp(my @host=<HOST>);
chomp(my @ip=<IP>);

小雅贝贝2011-04-11 10:40:35

不错啊,好文章。感谢你的参与。