Оригинал статьи размещен на lissyara.su.
Code:
#!/usr/local/bin/perl
use Time::HiRes;
use Net::Telnet;
$user = "admin";
$pass = "1234";
open (IPLIST, "iplist");
open (WRFILE, ">>zyxel.log");
while ($host = <IPLIST>)
{
$th = new Net::Telnet(Timeout => 15, Telnetmode => 1,Errmode => "return");
print "======================= START =======================\n";
print "[+] Connectiong to: ".$host."\n";
print "=====================================================\n";
print WRFILE "======================= START =======================\n";
print WRFILE "[+] Connectiong to: ".$host."\n";
print WRFILE "=====================================================\n";
$th->open($host);
$th->waitfor('/ser name:.*$/');
$th->print($user);
$th->waitfor('/assword:.*$/');
$th->print($pass);
$th->waitfor('/#.*$/');
open (COMMANDS, "commands");
while ($cmds = <COMMANDS>)
{
$th->print($cmds);
@out = $th->waitfor('/#.*$/');
print @out;
print WRFILE @out;
}
close(COMMANDS);
print "\n=================== END ===================\n\n\n";
print WRFILE "\n=================== END ===================\n\n\n";
Time::HiRes::sleep(10);
}
close(WRFILE);
close(IPLIST);
Скрипт работает следующим образом, берет IP или hostname из файла iplist:
Code:
192.168.176.59
192.168.176.91
192.168.176.93
192.168.176.94
192.168.176.68
192.168.176.16
192.168.176.17
192.168.176.18
192.168.176.19
192.168.176.21
...
...
192.168.176.47
192.168.176.45
192.168.176.44
192.168.176.38
192.168.176.34
192.168.176.27
По очереди заходит на каждый свич по телнету, и выполняет команды, находящиеся в файде commands, к примеру:
Code:
conf t
vlan 1
fixed 24-26
no untagged 24
exit
vlan 31
name Management
normal ""
fixed 24-26
no untagged 24
exit
...
...
vlan-trunking
bandwidth-limit ingress 1
bandwidth-limit egress 1
igmp-snooping filtering profile uplink
diffserv
exit
no port-security 24 learn inactive
no port-security 24
spanning-tree 24
mstp hello-time 3 maximum-age 40 forward-delay 30
mstp max-hop 40
mstp instance 0 interface port-channel 24
exit
wr mem
При исполнении скрипта ведется лог.