Надсилання команд CISCO, надісланих через SSH / Telnet

Загальна інформація

  • Ім'я сценарію: publip.sh (publi (point) sh ... publipSH.
  • Гнучкість: повністю настроюється.
  • Обмеження: вимагає, щоб пароль був однаковим для всіх пристроїв, або вам потрібно буде додати кілька рядків коду ...
  • Рівень ризику: Високий. Будьте дуже обережні з записами, неправильна маніпуляція може заблокувати всю мережу.
  • Необхідні знання Linux: Відкрийте / відредагуйте файл (vi file_name) і збережіть зміни (Esc тоді: wq? .Запустіть скрипт за допомогою команди ./Scriptname з цільової папки.

Що таке сценарій publip.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 - Обладнання Non-Cisco (X1000)
  • 9 - Обладнання Non-Cisco (Alcatel)
  • 10 -Надіслане командування не розпізнається обладнанням
  • 11 - Помилка не вказана вище ($? = 1)

Ви зможете одночасно працювати на своєму обладнанні та збирати цінну інформацію у вашій мережі!

Зміст допоміжних файлів

commandes.txt

Вам потрібно буде ввести команди ... Файл повинен змінювати конфігурацію маршрутизатора, починаючи з "conf t" і "end". Модифікації повинні виконуватися в ієрархічному порядку і не забувайте зберігати зміни! Невеликий приклад:

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

запис mem

liste.txt

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

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

Скрипт не враховує порожні простори.

Сценарій

Сценарій буде підписаний маленьким # [1], який буде обговорюватися внизу скрипта

 #! / bin / bash # script.sh echo "візуальний довідник з пропуском" stty -echo # [1] прочитати пароль stty echo export ssh = "./ ssh.sh" # [2] експортувати telnet = "./ експортувати. \ t "експортувати. \ t" експортувати liste = "./ liste.txt" експортувати пароль експортувати rm -f $ erreur # [3] rm -f $ ssh rm -f $ telnet cat $ liste | при читанні маршруту; робити, якщо ["$ routeur"! = ""], то якщо [! -f $ ssh] # [4], потім echo 'expect 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 "очікує" # "'зроблено >> $ ssh echo' send" exit r "'>> $ ssh echo' очікує" закрито "'>> $ ssh echo 'exit' >> $ ssh echo 'EOF' >> $ ssh chmod + x $ ssh # [5] fi час -p $ ssh> $ temp 2> & 1 # [6] COD_RET = $? auth = "cat $ temp | grep -c" Пароль: "" # [7] якщо ["$ auth" -gt "1"], то echo "Problème d'authentification sur $ routeur!" echo "$ routeur: неправильний вхід / пароль" >> $ erreur продовжувати fi temps = "grep" реальний $ temp | sed 's / real / § /' | cut -d'§ '-f2 | cut -d '' -f1 | cut -d '.' -f1 'if [$ temps -ge 10 -a! "'grep' закрито '$ temp'"] # [8], потім echo "L'equipement $ routeur ne réponds pas!"; echo "$ routeur: з'єднання вичерпано" >> $ erreur continue, якщо ["$ COD_RET"! = "0"] # [9], то #Erreur de connectxion a l'équipement en SSH if [! -f $ telnet], потім echo 'expect 2> & 1 <> $ telnet echo' spawn telnet $ routeur '>> $ telnet echo' send 'admin \ t $ telnet echo 'send "$ password r"' >> $ telnet echo 'очікуйте "#"' >> $ telnet cat $ cmdcisco | в той час як читання commande do echo "send" $ commande r "" echo "очікує" # "'зроблено >> $ 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"], то echo "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 неправильний!" echo "$ routeur: неправильний орфографія" >> $ erreur elif ["'grep' send: spawn id exp4 не відкрийте '$ temp'"] потім echo "/! \ t !! " echo "$ routeur: Не вдалося виконати виконання сценарію!" >> $ erreur cp $ temp $ routeur.error.log elif ["'grep' Аутентифікація не вдалася '$ temp'"], потім повторіть "Mot de passe erroné pour $ routeur!" echo "$ routeur: неправильний вхід / пароль" >> $ erreur elif ["'grep' З'єднання відхилило '$ temp'"], потім відлуння "Connexion à distance sur $ routeur désactivé!" echo "$ routeur: vty connection disabled" >> $ erreur elif ["'grep' Немає маршруту для розміщення '$ temp'"], потім echo "Псевдонім DNS $ routeur існуючий IP-інвалід!" echo "$ routeur: Немає маршруту до хоста" >> $ erreur elif ["'grep' ProCurve '$ temp'"], потім echo "routeur $ routeur HP та без Cisco!" echo "$ routeur: не маршрутизатор Cisco (HP ProCurve)" >> $ erreur elif ["'grep' Alcatel '$ temp'"], потім echo "routeur $ routeur Alcatel і без Cisco!" echo "$ routeur: не маршрутизатор Cisco (Alcatel)" >> $ erreur elif ["'grep' Ласкаво просимо до X1000 '$ temp'"], потім echo "routeur $ routeur X1000 та без Cisco!" echo "$ routeur: не Cisco обладнання (X1000)" >> $ erreur elif ["'grep'% невідома команда '$ temp'" -o "'grep'% Недійсний '$ temp'"] потім echo "/! \ t Команди Cisco не виконують функцію консультування. echo "$ routeur: Знайдено нерозпізнаних команд" >> $ erreur cp $ temp $ routeur.error.log elif ["'grep' Підключено до '$ temp'" -o "'grep' З'єднання закрито зовнішнім хостом. ' $ temp '"] потім echo" $ routeur Telnet OK! " elif ["'grep' Приєднання до терміналу '$ temp'" -o "'grep' З'єднання з '$ temp'"], потім echo "$ routeur SSH OK!" elif ["$ COD_RET"! = "0"], після чого відтворює "Проблема з приєднанням апаратури $ routeur!" echo "$ routeur: проблема з підключенням" >> $ erreur fi fi зроблено rm -f $ temp # [11] вихід 

Коментарі

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

Попередня Стаття Наступна Стаття

Кращі Поради