Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Programming —> Zyxel Configuration

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

Автор: Le1.


Привет всем, много писать не буду, просто скажу, что один раз понадобилось изменить конфиг на свичах Zyxel, дело вроде бы нормальное, но нужно было сделать это все на 300-400 устройствах.
Подумав немного, написал маленький скрипт на Perl-е, вот собственно и он:

#!/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



Также при исполнении скрипт пишет лог.

Вот собственно и все, строго не судите, так как я не гуру Perl-а, просто опубликовал статью чисто для заметки, вдруг комуто и поможет.



размещено: 2011-02-17,
последнее обновление: 2011-02-19,
автор: Le1


zar0ku1, 2011-02-19 в 18:38:58

Телнет не тру,
писал тоже самое на expecte, тоже для zyxel, но по ssh

Vadim, 2011-02-20 в 9:42:15

ИМХО, expect для этих целей больше подходит...

Scrable, 2011-06-27 в 1:40:34

 Ха, писал года 3 назад подобное на bash тока адреса и так далее брал из базы (mysql). Автору добавить бы работу с базой для полного улета. Думаю многим понадобится, тем более так в принципе не только зухели можно перестраивать.

littledev, 2011-08-16 в 11:43:11

snmp бы :)работаю с zyxel встречаю что пишешь команду - даёт ошибку, пишешь еще раз - хавает без ошибки, telnet  и ssh к сожалению не проверишь :(

Scrable, 2011-08-16 в 21:43:22

конструкцию команд надо привести к виду:
echo "команда"
sleep 1
ech "команда"
sleep 1
...
...
именно у зухелей есть такая фичка с консолью
проверить с telnet и ssh можно, как то делали

lsyz, 2011-09-12 в 23:51:41

http://anonymus88.livejournal.com/23175.html вот тут что-то похожее



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.1825 секунд
Из них PHP: 45%; SQL: 55%; Число SQL-запросов: 77 шт.
Исходный размер: 18037; Сжатая: 4965