Перейти к содержимому
Калькуляторы

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

zabbix+python-ssh-client

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

python + telnet\ssh + pexpect + mysql

 

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я делаю так:

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

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

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

 

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

 

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

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

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Изменено пользователем rover-lt

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

 

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

 

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не получаеться передать файл по 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> 

Подскажите, может я где то не туда смотрю...

Изменено пользователем navigator.vip14
Добавил спойлеры

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

19 часов назад, navigator.vip14 сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

6 часов назад, nixx сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.