Jump to content
Калькуляторы

Скрипт глобальной прошивки техническое решение

Есть сеть на D-link коммутаторах, коммутаторов каждой серии по 60 штук, если ли скрипт на linux для прошивки коммутаторов всех одновременно по snmp? help?

Share this post


Link to post
Share on other sites

У меня есть скрипт который по телнету выполняет команды из файла commands, заходя по очереди на IP из файла

Share this post


Link to post
Share on other sites

expect + telnet (snmp) пишется минут за 10-15.

 

Лучше сами потренируйтесь.

 

Да, прошивая коммутаторы в поле, стоит предварительно проверить совместимость прошивок. На дебилинках сталкивался с крайне непредвиденными косяками с stp и ip-mac-port привязках.

Edited by passer

Share this post


Link to post
Share on other sites

на перле накидал подобный апдейт по телнету за 10 мин

 

Да, прошивая коммутаторы в поле, стоит предварительно проверить совместимость прошивок.

Знамо дело, сначала все прошивается и проверятся на стенде, затем десяток коммутаторов в поле, лишь потом массовый апдей

Share this post


Link to post
Share on other sites
на перле накидал подобный апдейт по телнету за 10 мин

у меня на обычно шелле все работает.

по snmp быстрее правда.

там все просто.

Share this post


Link to post
Share on other sites

по snmp быстрее правда.

там все просто.

Согласен, но у длинков есть один ... эмнь... одна особенность, менять ОИДы от прошивки к прошивке, CLI менее подвержен этому идиотизму

Edited by pppoetest

Share this post


Link to post
Share on other sites

скрипт на linux для прошивки коммутаторов всех одновременно по snmp?

Все одновременно опасно, т.к. при перепрошивке узлового устройства отвалятся конечные.

Если они в этот момент тоже перепрошиваются - не факт, что процесс закончится успешно.

 

Сценарий для сбора конфигов, можете взять за основу:

#!/usr/bin/perl

use strict;
use warnings;

use DBI;
use Net::Telnet;

my $TFTP_SERVER = '10.90.90.250';
my $TFTP_PATH = 'configs';

my $LOGIN = 'admin';
my $PASSWORD = 'MyPass';

sub exec_telnet($$) {
       my ($IP, $CMD) = @_;
       my $t = new Net::Telnet(Prompt => '/[\$%#>] *$/');
       unless ($t) {
               warn "$IP: Cannot create Net::Telnet\n";
               return undef;
       }
       unless ($t->open($IP)) {
               warn "$IP: Cannot open:".$t->errmsg."\n";
               return undef;
       }
       print "$IP: Open OK.\n";
       unless ($t->login($LOGIN, $PASSWORD)) {
               warn "$IP: Cannot login:".$t->errmsg."\n";
               return undef;
       }
       print "$IP: Login OK.\n";
       my @lines = $t->cmd($CMD);
       print "$IP: command passed.\n";
       $t->close;
       print "$IP: Closed.\n";
}

...
exec_telnet('10.90.90.12', "upload cfg_toTFTP tftp://$TFTP_SERVER/$TFTP_PATH/10.90.90.12.cfg");
exec_telnet('10.90.90.13', "upload configuration     $TFTP_SERVER $TFTP_PATH/10.90.90.13.cfg running");
exec_telnet('10.90.90.14', "upload cfg_toTFTP        $TFTP_SERVER $TFTP_PATH/10.90.90.14.cfg");
...

Share this post


Link to post
Share on other sites

по snmp быстрее правда.

там все просто.

Согласен, но у длинков есть один ... эмнь... одна особенность, менять ОИДы от прошивки к прошивке, CLI менее подвержен этому идиотизму

У длинков OID-ы по работе с файлами не меняются (я ни разу такого не встречал), а зачастую они одни и теже даже на нескольких сериях коммутаторов.

Share this post


Link to post
Share on other sites

Писал подобное на перле, но задача стояла: получить полностью настроенный коммутатор. Монтажник приходит, ставит коммутатор, настраивает ip и route, инженер с места пускает перловский скрипт. Скрипт проверяет прошивку, отключает stp, перепрошивает, включает stp, прописывает все типовые настройки, создаёт вланы,... + acl.

Удобно.

Share this post


Link to post
Share on other sites

Некогда нашёл это в интернете

cat conveer.sh 
#!/usr/local/bin/bash
FILE=`cat $1 | sort -u` 

for I in $FILE
 do

if [ -n "$I" ]
 then


(sleep 1; echo admin_login; echo "admin_password";sleep 2; cat ./commands; sleep 5; )| telnet $I                
fi

 

В скрипте правим admin_login и admin_password, в файл commands вписываем комманды, которые нужно выполнить на коммутаторе, в файл например с именем ipofswitchs вписываем в столбец ip адреса коммутаторов.

Далее командой sh conveer.sh ipofswitchs выполняем команды на коммутаторах.

Использую этот скрипт для до настройки или перенастройки коммутаторов dlink.

Share this post


Link to post
Share on other sites

Все одновременно опасно, т.к. при перепрошивке узлового устройства отвалятся конечные.

Если они в этот момент тоже перепрошиваются - не факт, что процесс закончится успешно.

ИМХО постараться надо. Кучу раз шились сразу по 5-6-7К (сейчас еще больше) разношерстных длинков и эджкоров скриптом в пару десятков строк на питоне и ни разу ничего не пропало. Залить новую прошивку оно вообще нехитро.

 

Хитрее с одновременным ребутом всех свитчей для зарузки новой прошивки. У Эджкоров есть отсрочка ребута, длинку приходится в кучу потоков скармливать всем свитчам "тяжелую команду" типа диагностики кабеля и сразу ребут. Кольца по свитчей 30 еще прокатывает. Длиннее пока нет.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this