Отправка команд CISCO, отправленных через SSH / Telnet

Основная информация

  • Имя сценария: publip.sh (publi (точка) sh ... publipSH.
  • Гибкость: полностью настраиваемый.
  • Ограничения: требует, чтобы пароль был одинаковым для всех устройств, или вам нужно будет добавить несколько строк кода ...
  • Уровень риска: высокий. Будьте очень осторожны с записями, неправильные манипуляции могут заморозить всю вашу сеть.
  • Требуются знания Linux: Откройте / отредактируйте файл (vi file_name) и сохраните изменения (Esc затем: wq?. Запустите скрипт, используя команду ./Scriptname из целевой папки.

Что такое скрипт pubip.sh?

Этот сценарий позволяет администратору сети отправлять команды Cisco на несколько выбранных удаленных устройств (маршрутизатор, межсетевой экран, коммутатор, точки беспроводного доступа ...) через SSH или Telnet (сценарий автоматически обрабатывает оба типа подключения).

  • Эти командные строки первоначально будут вводиться в последовательности, по одной команде на строку (в виде пакета или файла конфигурации), в небольшой файл с именем commandes.txt (ограничения по размеру нет)
  • Введите все IP-адреса (или псевдоним DNS) для различных устройств в сети (количество устройств не ограничено).
  • Наконец, при запуске скрипта вам будет предложено ввести пароль, который в нашем случае должен быть одинаковым для всех устройств.

Сценарий идет намного дальше!

Действительно, он полностью автономен и может зависать от ошибок подключения, ввода данных и записи изменений в лог-файл. Этот сценарий также идентифицирует оборудование, к которому он может подключиться через SSH или Telnet, а затем хранит архив процедур, генерирующих критические ошибки (сценарий сбоя, неверное истолкование командного слова оборудованием). Различные типы ошибок:

  • 1 - Тайм-аут соединения
  • 2 - Ошибка входа в систему, неверный пароль
  • 3 - псевдоним DNS или IP-адрес не существует
  • 4 - Сбои сценария Expect (создать файл журнала оборудования)
  • 5 - удаленное соединение отключено
  • 6 - правильный псевдоним DNS, но не существует IP
  • 7 - Оборудование не Cisco (HP Procurve)
  • 8 - Оборудование не от Cisco (X1000)
  • 9 - Оборудование сторонних производителей (Alcatel)
  • 10 -Отправленная команда не распознается оборудованием
  • 11 - Ошибка не указана выше ($? = 1)

Вы сможете одновременно работать на всем своем оборудовании и собирать ценную информацию в своей сети!

Содержание вспомогательных файлов

commandes.txt

Вам нужно будет ввести команды ... Файл для любых изменений в конфигурации маршрутизатора должен начинаться с «conf t» и «end». Модификации должны быть выполнены иерархически и не забудьте сохранить свои изменения! Небольшой пример:

 # commandes.txt conf t маршрутизатор ospf 100 сеть 50.50.100.0 0.0.0.255 область 0 выходной интерфейс fa0 / 0 ip ospf hello-interval 5 ip ospf dead-interval 20 область выхода 0 аутентификация конец дайджеста сообщения аутентификации 

написать мем

liste.txt

Введите псевдоним IP или DNS для всего оборудования:

 # liste.txt 10.25.85.46 routeur-marseille switch-assemblye-generale 80.54.136.105 

Скрипт не учитывает пустые места.

Сценарий

Сценарий будет подписан маленьким # [1], который будет обсуждаться в нижней части сценария.

 #! / bin / bash # script.sh echo "veuillez donner le mot de passe" stty -echo # [1] чтение пароля stty echo export ssh = "./ ssh.sh" # [2] export telnet = "./ telnet.sh "export erreur =" ./ rapport_erreurs.log "export temp =" ./ tmp_routeur.log "export cmdcisco =" ./ commandes.txt "export liste =" ./ liste.txt "экспортировать пароль экспортировать routeur экспортировать commande rm -f $ erreur # [3] rm -f $ ssh rm -f $ telnet cat $ liste | пока читаю роутер; do if ["$ routeur"! = ""] тогда if [! -f $ ssh] # [4] затем echo 'ожидаем 2> & 1 <> $ ssh echo' spawn ssh [электронная почта защищена] $ routeur '>> $ ssh echo' Ожидаем {'>> $ ssh echo' "Пароль:" {send "$ password \ r"} '>> $ ssh echo' timeout {exit} '>> $ ssh echo'} '>> $ ssh echo' Ожидайте "#" '>> $ ssh cat $ cmdcisco | во время чтения commande do echo "send \" $ commande \ r \ "" echo 'Ожидает "#"' Done >> $ ssh echo 'send "exit \ r"' >> $ ssh echo 'Ожидает "закрыто"' >> $ ssh echo 'exit' >> $ ssh echo 'EOF' >> $ ssh chmod + x $ ssh # [5] fi time -p $ ssh> $ temp 2> & 1 # [6] COD_RET = $? auth = "cat $ temp | grep -c" Пароль: "" # [7] если ["$ auth" -gt "1"], то выведите "Problème d'authentification sur $ routeur!" echo "$ routeur: неверный логин / пароль" >> $ erreur continue fi temps = "grep" real '$ temp | sed 's / real / § /' | cut -d'§ '-f2 | cut -d '' -f1 | cut -d '.' -f1 'if [$ temps -ge 10 -a! "'grep' закрыл '$ temp'"] # [8] затем повторил "L'equipement $ routeur ne réponds pas!"; echo "$ routeur: время ожидания истекло" >> $ erreur continue fi if ["$ COD_RET"! = "0"] # [9] then # Ошибка при подключении к SSH if [! -f $ telnet] затем echo 'Ожидайте 2> & 1 <> $ telnet echo' spawn telnet $ routeur '>> $ telnet echo' отправьте "admin \ r" '>> $ telnet echo' ожидайте "Пароль:" '>> $ telnet echo 'send "$ password \ r"' >> $ telnet echo 'Ожидайте "#"' >> $ telnet cat $ cmdcisco | во время чтения commande do echo "send \" $ commande \ r \ "" echo 'Ожидает "#"' Done >> $ telnet echo 'send "exit \ r"' >> $ telnet echo 'Ожидает "закрыто"' >> $ telnet echo 'exit' >> $ telnet echo 'EOF' >> $ telnet chmod + x $ telnet fi $ telnet> $ temp 2> & 1 fi COD_RET = $? auth = "cat $ temp | grep -c" Пароль: "" # [10] если ["$ auth" -gt "1"], то выведите "Problème d'authentification sur $ routeur!" echo "$ routeur: неверный логин / пароль" >> $ erreur elif ["'grep' Ошибка поиска имени хоста '$ temp'"] затем echo "l'equipement $ routeur n'existe pas!" echo "$ routeur: не существует" >> $ erreur elif ["'grep' Неизвестный хост '$ temp'"] затем echo "la saisie de l'ip ou du nom $ routeur est incorrecte!" echo "$ routeur: неправильное написание" >> $ erreur elif ["'grep' send: spawn id exp4 не открывается '$ temp'"], затем echo "/! \ ERREUR на этой странице. Консультируйтесь с журналом $ routeur! !!» echo "$ routeur: ожидать выполнения сценария не удалось!" >> $ erreur cp $ temp $ routeur.error.log elif ["'grep' Ошибка аутентификации '$ temp'"], затем выведите "Mot de passe erroné pour $ routeur!" echo "$ routeur: неверный логин / пароль" >> $ erreur elif ["'grep' Соединение отклонено '$ temp'"], затем echo "Connexion à distance sur $ routeur désactivé!" echo "$ routeur: vty соединение отключено" >> $ erreur elif ["'grep' Нет маршрута к хосту '$ temp'"], затем echo "Alias ​​DNS $ routeur existing mais IP invalid!" echo "$ routeur: нет маршрута к хосту" >> $ erreur elif ["'grep' ProCurve '$ temp'"] затем echo "routeur $ routeur HP et non Cisco!" echo "$ routeur: не маршрутизатор Cisco (HP ProCurve)" >> >> $ erreur elif ["grep 'Alcatel' $ temp '"] затем echo "routeur $ routeur Alcatel et non Cisco!" echo "$ routeur: не маршрутизатор Cisco (Alcatel)" >> >> $ erreur elif ["'grep' Добро пожаловать в X1000 '$ temp'"] затем echo "routeur $ routeur X1000 et non Cisco!" echo "$ routeur: не Cisco equipement (X1000)" >> $ erreur elif ["'grep'% Неизвестная команда '$ temp'" -o "'grep'% Неверный '$ temp'"] затем echo "/! \ Командиры Cisco не проводят разведку по оборудованию. Consultez le fichier log de $ routeur !!! " echo "$ routeur: найдены нераспознанные команды" >> $ erreur cp $ temp $ routeur.error.log elif ["'grep' Соединено с '$ temp'" -o "'grep' Соединение закрыто внешним хостом. ' $ temp '"] then echo" $ routeur Telnet OK! " elif ["grep" Conregion enregistree sur le терминал '$ temp' "-o" 'grep' Соединение с '$ temp' "] затем выдает" $ routeur SSH OK! " elif ["$ COD_RET"! = "0"] затем повторить "Проблема связи с оборудованием $ routeur!" echo "$ routeur: проблема с подключением" >> $ erreur fi fi done rm -f $ temp # [11] exit 

Комментарии

  • 1 : Скрыть ввод пароля
  • 2 : Все файлы хранятся в переменных (относительный путь), что позволяет запускать скрипт из любого места.
  • 3 : удаляет существующие файлы, созданные, если скрипт уже был выполнен.
  • 4 : Создайте сценарий Expect
  • 5 : Установите разрешения для сценария Expect
  • 6 : Выполните сценарий Expect, объединяя ошибку вывода со стандартным выводом, вычисляя время выполнения для обработки тайм-аута.
  • 7. Проверьте наличие проблем с аутентификацией, посчитав количество появлений «Password» во временном файле.
  • 8. Проверьте время выполнения и убедитесь, что оно не превышает 10 (ожидаемое значение времени ожидания).
  • 9 : При ошибке соединения SSH повторите процедуру через Telnet.
  • 10 : Проверьте все случаи ошибок, сгенерированных сценарием. (См. II).
  • 11 : Удалить временный файл.

Предыдущая статья Следующая статья

Лучшие советы