alexxx71 Опубликовано 26 ноября, 2009 · Жалоба Задача - Есть 2000 Edgecore3528' ов в сетке. Нужно массово обновить на них прошивку. Мб скрипт какой нибудь ? Какие могут быть варианты ? Кто чем пользуется ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
XeonVs Опубликовано 26 ноября, 2009 · Жалоба Задача - Есть 2000 Edgecore3528' ов в сетке. Нужно массово обновить на них прошивку. Мб скрипт какой нибудь ? Какие могут быть варианты ? Кто чем пользуется ? через expect прошиваем\настраиваем. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alexxx71 Опубликовано 26 ноября, 2009 (изменено) · Жалоба А типовой пример можно? Если не сложно. И если не сложно подскажите литературу по Expect в сети. Я погуглил - гуглится с трудом.. просто тупо скрипты.. теории нету :) Изменено 26 ноября, 2009 пользователем alexxx71 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Wingman Опубликовано 26 ноября, 2009 (изменено) · Жалоба А типовой пример можно? Если не сложно. И если не сложно подскажите литературу по Expect в сети. Я погуглил - гуглится с трудом.. просто тупо скрипты.. теории нету :) expect фтопку ;) #!/usr/bin/perl use strict; use Net::Telnet; use DBI; my $DEBUG = 1; my $dbh = DBI->connect("DBI:mysql:database=XXXX;host=localhost","xxxx","xxxx") || die $DBI::errstr; my $sth = $dbh->prepare("SELECT id,ip,type_id FROM switches WHERE type_id=1 OR type_id=15 OR type_id=21 OR type_id=22"); $sth->execute; my $t2 = new Net::Telnet( Timeout => 15, Prompt => '/(:[0-9]|:([a-zA-Z]+?))#$/'); my $login = "script"; my $pass = "xxxx"; while(my $ref = $sth->fetchrow_arrayref) { my $id = $$ref[0]; my $ip = $$ref[1]; my $type_id = $$ref[2]; eval { print "\nSwitch: $ip (type $type_id) ... " if $DEBUG; $t2->open($ip); print "Connected... " if $DEBUG; $t2->login($login, $pass); print "Logged in... " if $DEBUG; $t2->print("ena admin"); $t2->waitfor('/PassWord:.*$/'); $t2->print("admin"); print "Enabled admin.\n" if $DEBUG; /// тут любые свои команды: $t2->cmd("disa clipa"); @fdb = $t2->cmd("sh fdb"); print "Done.\n" if $DEBUG; $t2->close; }; print $@ if $@; } Скрипт заточен под длинк, но, думаю, переточить под что угодно с телнетом труда н составит =) Изменено 26 ноября, 2009 пользователем Wingman Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alexxx71 Опубликовано 26 ноября, 2009 · Жалоба Спасибо автору Perl это тру, и все таки хотелось бы увидеть вариант на Expect'е. И за литературу по этой тематике буду отдельно признателен :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dyr Опубликовано 26 ноября, 2009 · Жалоба Telnet фтопку, Net::SNMP наш выбор! ;-Р :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
XeonVs Опубликовано 26 ноября, 2009 (изменено) · Жалоба Спасибо автору Perl это тру, и все таки хотелось бы увидеть вариант на Expect'е. И за литературу по этой тематике буду отдельно признателен :) гугл, первой ссылкой http://ru.wikipedia.org/wiki/Expect второй и третей доп. материал. Net-Telnet иногда бывает неадекватен на разных прошивках братьев китайцев. Изменено 26 ноября, 2009 пользователем XeonVs Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
DemYaN Опубликовано 26 ноября, 2009 · Жалоба snmpset -m +ES3528MO-MIB -v2c -c private 172.30.14.30 ES3528MO-MIB::fileCopyTftpServer.0 a 172.30.100.2 snmpset -m +ES3528MO-MIB -v2c -c private 172.30.14.30 ES3528MO-MIB::fileCopySrcOperType.0 i 4 snmpset -m +ES3528MO-MIB -v2c -c private 172.30.14.30 ES3528MO-MIB::fileCopyDestOperType.0 i 1 snmpset -m +ES3528MO-MIB -v2c -c private 172.30.14.30 ES3528MO-MIB::fileCopyFileType.0 i 1 snmpset -m +ES3528MO-MIB -v2c -c private 172.30.14.30 ES3528MO-MIB::fileCopySrcFileName.0 s "fw/ES3528_52M_opcode_V1.3.7.4.bix" snmpset -m +ES3528MO-MIB -v2c -c private 172.30.14.30 ES3528MO-MIB::fileCopyDestFileName.0 s "ES3528_52M_opcode_V1.3.7.4.bix" snmpset -m +ES3528MO-MIB -v2c -c private 172.30.14.30 ES3528MO-MIB::fileCopyAction.0 i 2 в лупе проверяем fileCopyAction.0, когда станет 1 - прошивка залилась выставляем стартап на свежую прошивку: snmpset -m +ES3528MO-MIB -v2c -c private 172.30.14.30 ES3528MO-MIB::fileInfoIsStartUp.0.\'ES3528_52M_opcode_V1.3.7.4.bix\' i 1 PS Естественно нужно добавит проверку на наличие свободного места на флеше для новой прошивки. Если места нет, то искать файлы с fileInfoFileType = runtime(2) и fileInfoIsStartUp = false(2), удалить их через fileInfoDelete = delete(2) PSPS MIB прикреплен ES3528MO_V1.3.7.4.txt Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vadimus Опубликовано 26 ноября, 2009 · Жалоба Массово перепрошивать Edge-Core... Смело! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ktoto Опубликовано 26 ноября, 2009 · Жалоба Массово перепрошивать Edge-Core... Смело! Помню как менял софтину в ZyXEL ES-2024A, девайсов за 600 штук, все разбросаны по нескольким районам. Не рискнул все сразу. Растянул на 5 дней. Ибо не все поднимаются после перезагрузки. Коллеги думаю учинили бы мне показательную казнь если все 600 сразу исковеркать. Делал в 2 этапа, заливал прошивку после этого проверяли все ли коммутаторы выжили затем второй скрипт с функционалом reboot. По теме топика использовал expect. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Negator1983 Опубликовано 27 ноября, 2009 · Жалоба ну не знаю как edge-core но длинки прошиваю по snmp Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 12 декабря, 2009 · Жалоба Я использую следующий самописный комбайн: http://svn1.homelinux.net/viewcvs/?root=routers_mgmt Он и для смены прошивок, и вообще для всех операций управления коммутаторами. Поддержка Edgecore в нём минимальная, в основном D-Link. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
demonisius Опубликовано 15 декабря, 2009 · Жалоба Я использую следующий самописный комбайн:http://svn1.homelinux.net/viewcvs/?root=routers_mgmt Подскажи а как скачать то его? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 15 декабря, 2009 (изменено) · Жалоба Я использую следующий самописный комбайн:http://svn1.homelinux.net/viewcvs/?root=routers_mgmt Подскажи а как скачать то его? На главной странице сайта написано.Нужен клиент Subversion. svn checkout svn://svn1.homelinux.net/devel/routers_mgmt/ ~/routers_mgmt К сожалению, ни на документацию, ни на инсталлятор меня не хватило. Изменено 15 декабря, 2009 пользователем Ilya Evseev Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Wingman Опубликовано 15 декабря, 2009 (изменено) · Жалоба ну не знаю как edge-coreно длинки прошиваю по snmp Хз хз, у нас тоже длинки в основном. Так вот, при перепрошивке с "перепрыгиванием" через несколько беток по снмп - (правка: ИНОГДА) свитч после подьема не поднимает линк, помогает передергивание линка на родителе. При прошивке телнетом такого нет. На форуме длинка корбиновец отписывал о такой же проблеме. p.s. svn checkout svn://svn1.homelinux.net/devel/routers_mgmt/trunk ~/routers_mgmt svn: URL 'svn://svn1.homelinux.net/devel/routers_mgmt/trunk' doesn't exist ;( Изменено 15 декабря, 2009 пользователем Wingman Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Kostyan Опубликовано 15 декабря, 2009 · Жалоба svn checkout svn://svn1.homelinux.net/devel/routers_mgmt ~/routers_mgmt Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
awesome Опубликовано 17 декабря, 2010 · Жалоба Хотел переписать скрипт телнета под ссш но мало что получается подскажите где ошибка use strict; use Net::Telnet; use DBI; use Term::ReadKey; use Net::SSH::Perl; use Math::BigInt::Calc; my $DEBUG = 1; my $dbh = DBI->connect("DBI:mysql:database=switches;host=localhost","login","pass") || die $DBI::errstr; my $sth = $dbh->prepare("SELECT id,ip,type_id,login,pass FROM switches WHERE type_id LIKE '%zyxel2024%m4%'"); $sth->execute; my $t2 = new Net::SSH::Perl( host=> $cmd_login2, Timeout => 5, Prompt => '/(:[0-9]|:([a-zA-Z]+?))#$/', ssh_option => '-o StrictHostKeyChecking=no', ); while(my $ref = $sth->fetchrow_arrayref) { my $id = $$ref[0]; my $ip = $$ref[1]; my $type_id = $$ref[2]; my $login = $$ref[3]; my $pass = $$ref[4]; $cmd_login2 = "$$ref[3]\@$$ref[1]"; eval { print "\nSwitch: $ip (type $type_id) ... " if $DEBUG; $t2= Net::SSH::Perl->new($cmd_login2); print($t2->get); print "Connected... " if $DEBUG; $t2->print($pass); print($t2->get); print "Pass in... " if $DEBUG; sleep 5; $t2->print("show vlan"); print($t2->get); print "Send comand" if $DEBUG; $t2->close; }; print $@ if $@; } Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Wingman Опубликовано 17 декабря, 2010 · Жалоба Дык.. Дебаг - наше всё =) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...