×
Ruby on Rails: постинг твитов через Twitter API (04 нояб 2017)

Практикуемся в Ruby on Rails.

Вопрос Скрипт для массового изменения конф. свичей Zyxel

Больше
6 года 8 мес. назад #1 от Jannet
Jannet создал эту тему: Скрипт для массового изменения конф. свичей Zyxel
Оригинал статьи размещен на lissyara.su.
#!/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:
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, к примеру:
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

При исполнении скрипта ведется лог.

Еще немного - и я всему научусь. :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.