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

НУЖЕН СОВЕТ!автоматизация обслуживания сети Кто чем пользуется?

Необходимо собрать данные с 300+ коммутаторов и подобного оборудования различных вендоров.

Т.е нужно удаленно зайти на коммутатор, выполнить ряд команд типа show tech-support, show mac address-table, сохранить вывод команд в лог.

Как максимально можно автоматизировать эту задачу? Вижу это как скрипт, который будет брать ИП из списка в файле, выполнять ряд команд из файлика, и создавать лог выведенной информации в текстовый файл с названием хоста.

Share this post


Link to post
Share on other sites

zabbix+python-ssh-client

zabbix-оперативный контроль за оборудованием по snmp и он же может давать команду скрипту на сбор нужных данных по ssh с помощью скрипта python.

От идеи с файлом ip-адресов рекомендую отказаться сразу.

Share this post


Link to post
Share on other sites

python + telnet\ssh + pexpect + mysql

 

Собираю инфу с 700+ устройства

 

Без всяких проблем.

 

P.S. Правда часть инфы беру по SNMP, часть по telnet\ssh (все зависит от того что надо взять)

Share this post


Link to post
Share on other sites

Необходимо собрать данные с 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

Share this post


Link to post
Share on other sites

Я делаю так:

php + mysql + snmp/telnet - онлайн мониторинг по алгоритмам опроса Cacti

и фича промышленного выполнения telnet команд на всех железках с разбивкой по вендорам и моделям оборудования, без ограничения по количеству устройств, с сортировкой вывода по различиям результатов.

Удобно менять конфигурации свичей по моделям на всём парке оборудования.

 

самописное, никакий файликов, всё в mysql

 

Необходимо собрать данные с 300+ коммутаторов и подобного оборудования различных вендоров.

Т.е нужно удаленно зайти на коммутатор, выполнить ряд команд типа show tech-support, show mac address-table, сохранить вывод команд в лог.

Как максимально можно автоматизировать эту задачу? Вижу это как скрипт, который будет брать ИП из списка в файле, выполнять ряд команд из файлика, и создавать лог выведенной информации в текстовый файл с названием хоста.

 

Вы лучше напишите задачу, которая перед вами стоит, или проблему, с которой столкнулись, а не втупую ищите какой-то специфический софт для непродуманной цели.

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

Share this post


Link to post
Share on other sites

бешенолютоплюсую. Кто мне скажет, что лучше собирать noc-ом - заведу в аду отдельный котел!

Я бы сказал что для автоопределения железок собрать каким observium-мом, а он экспортирует данные для сбора rancid-ом.

Edited by rover-lt

Share this post


Link to post
Share on other sites

Необходимо собрать данные с 300+ коммутаторов и подобного оборудования различных вендоров.

Т.е нужно удаленно зайти на коммутатор, выполнить ряд команд типа show tech-support, show mac address-table, сохранить вывод команд в лог.

Как максимально можно автоматизировать эту задачу? Вижу это как скрипт, который будет брать ИП из списка в файле, выполнять ряд команд из файлика, и создавать лог выведенной информации в текстовый файл с названием хоста.

 

Самое простое это создать свое ПО для работы. Т.к. использования всяких софтин и скриптов, которые тут насоветовали, это значит подгонять свои хотелки под возможности этих приложений.

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

 

При этом надо сразу отказаться от списка в файле и вообще списка - пропингуйте сеть по служебным адресам и получите список IP адресов, поместите их в базу, далее пройдитесь по каждому адресу, делая запросы на оборудование и получая ответы, по ним определите и тип оборудования, и наименование, и все необходимое для работы.

Share this post


Link to post
Share on other sites

делаю такие вещи с помощью цикла в bash+telnet (expect) и в ус не дую :)

(скрипт проходит свичи по списку и делает что надо по шаблону команд с выводом результатов в лог)

Потом анализируется лог.

Да - нужно ручками делать и глазами (мозгом) анализировать работу и результат.

Но по моей многолетней практике - тысячи домовых свичей я анализировал и причесывал конфиги и решал конкретную задачу точечно - быстрее и качественнее, чем если пытался автоматизировать типа УНИВЕРСАЛЬНО и использовать высокоуровневые инструменты.

(я - ретроград? я - консерватор? я - тупой? (нужное подчеркнуть :)))

 

Если кого интересует - могу примеры выложить здесь....

Share this post


Link to post
Share on other sites

Давай, выкладывайте.

У нас есть шаблон для любого типа свиичей. Генерится напрямую из биллинга одной кнопкой.

Share this post


Link to post
Share on other sites

Задачу решил написанием своего скрипта на Powershell с использованием библиотеки Posh-SSH, скрипт перебирает строки из файла, коннектится к айпишникам, сливает инфу в лог файл и обзывает файл именем хостнейма из того же файла с айпишниками. Команды выполняются те которые укажешь с нужной задержкой. В принципе кому интересно тоже могу поделиться.

Share this post


Link to post
Share on other sites

бешенолютоплюсую. Кто мне скажет, что лучше собирать noc-ом - заведу в аду отдельный котел!

Я бы сказал что для автоопределения железок собрать каким observium-мом, а он экспортирует данные для сбора rancid-ом.

в чем вы видите преимущества rancid против noc? Нок ставится буквально за 15 минут, нормальные коммутаторы в нем работают сразу же. Под не нормальные за парчу часов переделываете конфиг. Под всякие кривые железяки всё равно любой софт придётся доделывать.

А обсервиум скурвился и на смену ему пришел LibreNMS, а там работае предполагается не с rancid, а с oxidized

Share this post


Link to post
Share on other sites

Давай, выкладывайте.

У нас есть шаблон для любого типа свиичей. Генерится напрямую из биллинга одной кнопкой.

Генерируется или скачивается? Синтаксис у разных вендоров (и/или моделей) бывает сильно отличается

Share this post


Link to post
Share on other sites

Задачу решил написанием своего скрипта на Powershell с использованием библиотеки Posh-SSH, скрипт перебирает строки из файла, коннектится к айпишникам, сливает инфу в лог файл и обзывает файл именем хостнейма из того же файла с айпишниками. Команды выполняются те которые укажешь с нужной задержкой. В принципе кому интересно тоже могу поделиться.

не. не делись. Все кто хотел, уже решили это задачу.

Пауэршелл (упаси бох!) нафиг никому не нужен.

 

 

Share this post


Link to post
Share on other sites

Давай, выкладывайте.

 

 

файлег 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.

Дальше полет фантазии не ограничен - я перехерачивал сеть из тысяч свичей - и мне было достаточно этих инструментов (наличие мозга - обязательно)

 

На кошерность не претендую )

Share this post


Link to post
Share on other sites

Не получаеться передать файл по 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 by navigator.vip14
Добавил спойлеры

Share this post


Link to post
Share on other sites
19 часов назад, navigator.vip14 сказал:

ftp> put iddsa
local: iddsa remote: iddsa
200 PORT command successful
lcd

попробуйте написать перед этим команду pasv.

Share this post


Link to post
Share on other sites
6 часов назад, nixx сказал:

попробуйте написать перед этим команду pasv.

Задача решена. Файл не хотел передаваться через внутренний IP, то есть на мое личное устройство. Когда попробовал на уделенную точку, все прекрасно залилось. К стати модифицировал скрипт, теперь он у меня перебирает адреса из списка диапазонов и активные записывает в файл по которому потом коннектится к устройствам. Если ком интересно, могу поделится.

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