allan_sundry Опубликовано 1 марта, 2013 · Жалоба Доброе время суток! У меня есть скрипт который заходит telnet'ом на коммутаторы Linksys SPS224G4 и отправляет копию конфигурации на tftp сервер. В последнее время было замечено что ряд коммутаторов перестал отдавать конфиг... При попытке ручного копирования наткнулся на такую ошибку: switch# copy startup-config tftp://XXX.XXX.XXX.XXX/20130301/switch 01-Mar-2013 17:30:25 %COPY-I-FILECPY: Files Copy - source URL flash://startup-config destination URL tftp://XXX.XXX.XXX.XXX/20130301/switch 01-Mar-2013 17:30:26 %TFTP-C-OPEN: No free UDP port Copy: Can't open TFTP client 01-Mar-2013 17:30:26 %COPY-W-TRAP: The copy operation has failed switch# При этом с части коммутаторов снялось уже около 200 копий, а некоторые перестали отдавать копии после 80 раз... Как можно "полечить" без перезагрузки коммутатора?! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
t1bur1an Опубликовано 2 марта, 2013 · Жалоба Интересная проблема. не сталкивался. Но вот что думаю, надо бы отходить от самописных скриптов и юзать что нибудь на подобии noc project. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
allan_sundry Опубликовано 2 марта, 2013 (изменено) · Жалоба Интересная проблема. не сталкивался. Но вот что думаю, надо бы отходить от самописных скриптов и юзать что нибудь на подобии noc project. Реклама?! о_О ?! И что же магического в "noc project"? Он умеет работать абсолютно со всеми коммутаторами и роутерами? Мой "перловый" скрипт заходит по telnet, запускает команду copy tftp, а после пишет exit - по сути эмуляция ручного копирования конфига... что может быть проще? C Zyxel проще слить конфиг со встроенного tfp-сервера, а вот с Linksys альтернатив по-моему нет Изменено 2 марта, 2013 пользователем allan_sundry Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
t1bur1an Опубликовано 3 марта, 2013 · Жалоба Да, можете просмотреть мою историю сообщений и увидете что в каждой теме советую этот проект )) Вообще его фишка в том что он парсит сам конфиг с коммутатора командой show running-config не используя тфтп. А проблему которую вы описали случается не только у линксисов. Какая у вас стоит версия прошивки на коммутаторах которые зависают подобным образом? Пробовали обновлять? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
allan_sundry Опубликовано 3 марта, 2013 · Жалоба Да, можете просмотреть мою историю сообщений и увидете что в каждой теме советую этот проект )) Вообще его фишка в том что он парсит сам конфиг с коммутатора командой show running-config не используя тфтп. А проблему которую вы описали случается не только у линксисов. Какая у вас стоит версия прошивки на коммутаторах которые зависают подобным образом? Пробовали обновлять? И как же реализовано копирование конфигурации в этом проекте? (интересно посмотреть на кусок кода отвечающий за это) Проблема не коррелирует с версией прошивки, официально 1.0.2 последняя... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
azhur Опубликовано 3 марта, 2013 · Жалоба И как же реализовано копирование конфигурации в этом проекте? Так как у встроенного в NOC сервера tftp поддержку WRQ так и не реализовали (хоть и просили), то скачать конфиг с коммутатора по tftp не получится. То есть так не сработает copy startup-config tftp://XXX.XXX.XXX.XXX/20130301/switch А вот дописать конфиг можно, если железка поддерживает: copy tftp://XXX.XXX.XXX.XXX/20130301/switch running-config Поэтому типичный вариант получения конфига - коннект по telnet|ssh, далее "show running-config" или её аналог, анализ и сохранение результата. Ввод логина-пароля, enable и прочее подобное - автоматизировано средствами самого NOC. Подробности реализации на совести автора скриптов поддержки конкретной железки. Вот пример для Cisco IOS из сорцев: http://code.nocproject.org/browse/noc/sa/profiles/Cisco/IOS/__init__.py?hb=true - общие переменные и функции профиля http://code.nocproject.org/browse/noc/sa/profiles/Cisco/IOS/get_config.py?hb=true - собственно скрипт получения конфига ЗЫ Возможен и вариант для веб-смартов - запрос и анализ страниц веб-интерфейса, но реализовано ли такое на практике для каких-то железок - я не знаю. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Butch3r Опубликовано 3 марта, 2013 · Жалоба А почему это не делать через SNMP? Просто как это сделано в ноке - зайти, написать show run и сохранить его содержимое - уж больно коряво Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
azhur Опубликовано 3 марта, 2013 · Жалоба А почему это не делать через SNMP? Что делать по SNMP? Или есть свитчи которые умеют по SNMP конфиг отдавать целиком? И много таких? Просто как это сделано в ноке - зайти, написать show run и сохранить его содержимое - уж больно коряво Не понимаю в чём корявость. Объясни, пожалуйста. Плюс - очень универсально. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Butch3r Опубликовано 3 марта, 2013 · Жалоба Что делать по SNMP? Или есть свитчи которые умеют по SNMP конфиг отдавать целиком? тоже самое: copy startup-config tftp://XXX.XXX.XXX.XXX/20130301/switch Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
azhur Опубликовано 3 марта, 2013 · Жалоба тоже самое: copy startup-config tftp://XXX.XXX.XXX.XXX/20130301/switch Дак не умеет NOC принимать файлы конфигов по tftp, о чём я писал уже! А если складывать на сторонний tftp-сервер - то понадобятся костыли, чтобы полученный файл конфига в систему контроля версий NOC-а засунуть. А если эту систему не использовать - то NOC не очень-то и нужен. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
allan_sundry Опубликовано 3 марта, 2013 · Жалоба хм... можно конечно попробовать реализовать на perl сохранение конфига без tftp... не думаю что это будет очень сложно Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
allan_sundry Опубликовано 5 марта, 2013 · Жалоба Проблема решилась изменением подхода - скрипт теперь не использует tftp: foreach (@linksys_sps){ my $file = sprintf($folder."/".$_); print ("Create file ",$file,"\n"); system "touch $file"; my $string = sprintf($_."#"); print ("Prompt String is ",$string,"\n"); print ("Connecting to ",$_,"\n"); my $telnet = new Net::Telnet ( Timeout=>20, Errmode=>'return' ); $telnet->open($_); if ($telnet->errmsg){ print "Can't connect to " . $_ . " Error: " . $telnet->errmsg . "\n"; } else { $telnet->waitfor('/User Name:$/i'); $telnet->print('admin'); $telnet->waitfor('/Password:$/i'); $telnet->print('password'); $telnet->waitfor(String => $string ); print ("Set Backup Terminal Variable ",$_,"\n"); $telnet->print("terminal datadump"); $telnet->waitfor(String => $string ); print ("Read configuration ",$_,"\n"); $telnet->print('sh run'); my @config = $telnet->waitfor(String => $string ); print ("Write configuration ",$_," to file ",$file,"\n"); open my $fh, '>', $file or die "Cannot open file: $!"; foreach my $config (@config) { print $fh "$config\n"; } close $fh; print ("Set Default Terminal Variable ",$_,"\n"); $telnet->print('no terminal datadump'); $telnet->waitfor(String => $string ); $telnet->print('exit'); } } P.S. возможно кому-то этот код поможет сохранить время и нервы ;) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...