st_admin Posted November 18, 2016 · Report post Необходимо собрать данные с 300+ коммутаторов и подобного оборудования различных вендоров. Т.е нужно удаленно зайти на коммутатор, выполнить ряд команд типа show tech-support, show mac address-table, сохранить вывод команд в лог. Как максимально можно автоматизировать эту задачу? Вижу это как скрипт, который будет брать ИП из списка в файле, выполнять ряд команд из файлика, и создавать лог выведенной информации в текстовый файл с названием хоста. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
saaremaa Posted November 18, 2016 · Report post zabbix+python-ssh-client zabbix-оперативный контроль за оборудованием по snmp и он же может давать команду скрипту на сбор нужных данных по ssh с помощью скрипта python. От идеи с файлом ip-адресов рекомендую отказаться сразу. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Morbid Posted November 18, 2016 · Report post python + telnet\ssh + pexpect + mysql Собираю инфу с 700+ устройства Без всяких проблем. P.S. Правда часть инфы беру по SNMP, часть по telnet\ssh (все зависит от того что надо взять) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ancient Posted November 18, 2016 · Report post Необходимо собрать данные с 300+ коммутаторов и подобного оборудования различных вендоров. Т.е нужно удаленно зайти на коммутатор, выполнить ряд команд типа show tech-support, show mac address-table, сохранить вывод команд в лог. Как максимально можно автоматизировать эту задачу? Вижу это как скрипт, который будет брать ИП из списка в файле, выполнять ряд команд из файлика, и создавать лог выведенной информации в текстовый файл с названием хоста. ansible https://www.ansible.com/network-automation noc http://kb.nocproject.org/ https://kb.nocproject.org/pages/viewpage.action?pageId=22380903#id-УстановкаNOCTowerнаDebian8.5-ПодготовкаNOC-tower Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
terrible Posted November 18, 2016 · Report post Я делаю так: php + mysql + snmp/telnet - онлайн мониторинг по алгоритмам опроса Cacti и фича промышленного выполнения telnet команд на всех железках с разбивкой по вендорам и моделям оборудования, без ограничения по количеству устройств, с сортировкой вывода по различиям результатов. Удобно менять конфигурации свичей по моделям на всём парке оборудования. самописное, никакий файликов, всё в mysql Необходимо собрать данные с 300+ коммутаторов и подобного оборудования различных вендоров. Т.е нужно удаленно зайти на коммутатор, выполнить ряд команд типа show tech-support, show mac address-table, сохранить вывод команд в лог. Как максимально можно автоматизировать эту задачу? Вижу это как скрипт, который будет брать ИП из списка в файле, выполнять ряд команд из файлика, и создавать лог выведенной информации в текстовый файл с названием хоста. Вы лучше напишите задачу, которая перед вами стоит, или проблему, с которой столкнулись, а не втупую ищите какой-то специфический софт для непродуманной цели. Возможно будут варианты решения задач и обнаружения проблем без вышеописанной вами дичи. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Mystray Posted November 21, 2016 · Report post RANCID? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
rover-lt Posted November 21, 2016 (edited) · Report post RANCID? бешенолютоплюсую. Кто мне скажет, что лучше собирать noc-ом - заведу в аду отдельный котел! Я бы сказал что для автоопределения железок собрать каким observium-мом, а он экспортирует данные для сбора rancid-ом. Edited November 21, 2016 by rover-lt Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Saab95 Posted November 21, 2016 · Report post Необходимо собрать данные с 300+ коммутаторов и подобного оборудования различных вендоров. Т.е нужно удаленно зайти на коммутатор, выполнить ряд команд типа show tech-support, show mac address-table, сохранить вывод команд в лог. Как максимально можно автоматизировать эту задачу? Вижу это как скрипт, который будет брать ИП из списка в файле, выполнять ряд команд из файлика, и создавать лог выведенной информации в текстовый файл с названием хоста. Самое простое это создать свое ПО для работы. Т.к. использования всяких софтин и скриптов, которые тут насоветовали, это значит подгонять свои хотелки под возможности этих приложений. Сделав свой софт, будете развивать его функционал для достижения тех целей, которые нужны. При этом надо сразу отказаться от списка в файле и вообще списка - пропингуйте сеть по служебным адресам и получите список IP адресов, поместите их в базу, далее пройдитесь по каждому адресу, делая запросы на оборудование и получая ответы, по ним определите и тип оборудования, и наименование, и все необходимое для работы. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
man781 Posted November 21, 2016 · Report post делаю такие вещи с помощью цикла в bash+telnet (expect) и в ус не дую :) (скрипт проходит свичи по списку и делает что надо по шаблону команд с выводом результатов в лог) Потом анализируется лог. Да - нужно ручками делать и глазами (мозгом) анализировать работу и результат. Но по моей многолетней практике - тысячи домовых свичей я анализировал и причесывал конфиги и решал конкретную задачу точечно - быстрее и качественнее, чем если пытался автоматизировать типа УНИВЕРСАЛЬНО и использовать высокоуровневые инструменты. (я - ретроград? я - консерватор? я - тупой? (нужное подчеркнуть :))) Если кого интересует - могу примеры выложить здесь.... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Negator Posted November 21, 2016 · Report post Давай, выкладывайте. У нас есть шаблон для любого типа свиичей. Генерится напрямую из биллинга одной кнопкой. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_admin Posted November 22, 2016 · Report post Задачу решил написанием своего скрипта на Powershell с использованием библиотеки Posh-SSH, скрипт перебирает строки из файла, коннектится к айпишникам, сливает инфу в лог файл и обзывает файл именем хостнейма из того же файла с айпишниками. Команды выполняются те которые укажешь с нужной задержкой. В принципе кому интересно тоже могу поделиться. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ancient Posted November 22, 2016 · Report post RANCID? бешенолютоплюсую. Кто мне скажет, что лучше собирать noc-ом - заведу в аду отдельный котел! Я бы сказал что для автоопределения железок собрать каким observium-мом, а он экспортирует данные для сбора rancid-ом. в чем вы видите преимущества rancid против noc? Нок ставится буквально за 15 минут, нормальные коммутаторы в нем работают сразу же. Под не нормальные за парчу часов переделываете конфиг. Под всякие кривые железяки всё равно любой софт придётся доделывать. А обсервиум скурвился и на смену ему пришел LibreNMS, а там работае предполагается не с rancid, а с oxidized Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
terrible Posted November 22, 2016 · Report post Давай, выкладывайте. У нас есть шаблон для любого типа свиичей. Генерится напрямую из биллинга одной кнопкой. Генерируется или скачивается? Синтаксис у разных вендоров (и/или моделей) бывает сильно отличается Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
rover-lt Posted November 22, 2016 · Report post Задачу решил написанием своего скрипта на Powershell с использованием библиотеки Posh-SSH, скрипт перебирает строки из файла, коннектится к айпишникам, сливает инфу в лог файл и обзывает файл именем хостнейма из того же файла с айпишниками. Команды выполняются те которые укажешь с нужной задержкой. В принципе кому интересно тоже могу поделиться. не. не делись. Все кто хотел, уже решили это задачу. Пауэршелл (упаси бох!) нафиг никому не нужен. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
man781 Posted November 22, 2016 · Report post Давай, выкладывайте. файлег list_of_switchs.txt со списком свичейБ с которыми мы хотим совершить какую-либо операцию #Разделитель - пробел W005 10.214.68.3 A018 10.192.14.2 A017 10.192.8.4 Далее такой скриптик - который читаем в массив список свичей из файла list_of_switchs.txt вида: #!/bin/bash #У меня на свичи один пароль - если у вас разный, легко модифицировать скрипт и даже с базы данных подтягивать инфу и/или добавить нужные параметры в [b]list_of_switchs.txt[/b] telnet_user="admin" telnet_password="bla-bla-bla" index=0 while read line; do array[$index]="$line" index=$(($index+1)) done < ./list_of_switchs.txt #while for ((a=0; a < ${#array[*]}; a++)) do n=0 for word in ${array[$a]}; do #цикл - в котором надо из массива брать строчку и разбить на переменные n=$(($n+1)) #echo $n if [ "$n" = "1" ]; #ебошим первое слово из строки в переменную then echo $word switch_name=$word fi if [ "$n" = "2" ]; #ебошим второе слово из строки в переменную then echo $word switch_ip=$word fi done # скармливаем в expect нужные параметры и запускаем скрипт с командами /usr/bin/expect ./switch.sh $switch_name $switch_ip $telnet_user $telnet_password | tee -a ./switch_result.txt #следить за выполнением визуально и в логе ./switch_result.txt done Вот пример файла ./switch.sh в котором вы херачите последовательность команд, которые надо выполнить (что угодно - слить конфиг на tftp, залить с tftp, вывести таблицу маков, что-то подтюнить на свичах) #!/usr/bin/expect set switch_name [lrange $argv 0 0] set switch_ip [lrange $argv 1 1] set telnet_user [lrange $argv 2 2] set telnet_password [lrange $argv 3 3] # Открываем telnet сессию на удалённом сервере, и ждем запроса имени пользователя. spawn telnet $switch_ip expect "User name:" # Посылаем имя пользователя и ждем запроса пароля. send "$telnet_user\r" expect "Password:" # Посылаем пароль и ждем приглашения ввода командного интерпретатора. send "$telnet_password\r" expect "$switch_name#" send "show mac address-table all\r" expect "$switch_name#" send "show ver\r" expect "$switch_name#" send "conf\r" expect "$switch_name\(config\)#" send "vlan 11\r" expect "$switch_name\(config-vlan\)#" send "inactive\r" expect "$switch_name\(config-vlan\)#" send "exit\r" expect "$switch_name\(config\)#" send "exit\r" expect "$switch_name#" send "wr me\r" expect "$switch_name#" send "copy running-config tftp 172.20.100.1 /switches/$switch_name-$switch_ip.conf\r" expect "$switch_name#" expect "$switch_name#" send "exit\r" expect eof P.S. Все что нужно - это линукс + консоль и установленный стандартно из репов expect. Дальше полет фантазии не ограничен - я перехерачивал сеть из тысяч свичей - и мне было достаточно этих инструментов (наличие мозга - обязательно) На кошерность не претендую ) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
navigator.vip14 Posted December 8, 2017 (edited) · Report post Не получаеться передать файл по ftp на Mikrotik с помощью скрипта. Спойлер #!/usr/bin/expect -f set switch_name [lrange $argv 0 0] set switch_ip [lrange $argv 1 1] set user [lrange $argv 2 2] set password [lrange $argv 3 3] spawn ftp $switch_ip expect "Name:" send "$user\r" expect "Password:" send "$password\r" expect "ftp> " send "lcd\r" expect "ftp> " send "put iddsa\r" expect "ftp> " send "lcd\r" expect "ftp> " send "quit\r" exit На удаленном устройстве создается файл с нулевым размером, а в логе программы пишет: Спойлер spawn ftp 100.0.0.21 Connected to 100.0.0.21. 220 Master_ver1.1 FTP server (MikroTik 6.40.5) ready Name (100.0.0.21:genezis): user 331 Password required for user Password: 230 User user logged in Remote system type is UNIX. ftp> lcd Local directory now /home/genezis ftp> put iddsa local: iddsa remote: iddsa 200 PORT command successful lcd Когда подключаюсь вруную через терминал, то все работает и в результатах пишет на 2 строчки больше. Спойлер Connected to 192.168.3.1. 220 Master_ver1.1 FTP server (MikroTik 6.40.5) ready Name (192.168.3.1:genezis): user 331 Password required for user Password: 230 User user logged in Remote system type is UNIX. ftp> put iddsa local: iddsa remote: iddsa 200 PORT command successful 150 Opening ASCII mode data connection for '/iddsa' 226 ASCII transfer complete 613 bytes sent in 0.00 secs (4215.7 kB/s) ftp> Подскажите, может я где то не туда смотрю... Edited December 8, 2017 by navigator.vip14 Добавил спойлеры Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nixx Posted December 9, 2017 · Report post 19 часов назад, navigator.vip14 сказал: ftp> put iddsa local: iddsa remote: iddsa 200 PORT command successful lcd попробуйте написать перед этим команду pasv. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
navigator.vip14 Posted December 9, 2017 · Report post 6 часов назад, nixx сказал: попробуйте написать перед этим команду pasv. Задача решена. Файл не хотел передаваться через внутренний IP, то есть на мое личное устройство. Когда попробовал на уделенную точку, все прекрасно залилось. К стати модифицировал скрипт, теперь он у меня перебирает адреса из списка диапазонов и активные записывает в файл по которому потом коннектится к устройствам. Если ком интересно, могу поделится. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vlad11 Posted December 12, 2017 · Report post Выкладывайте на github :) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...