Изпращане на CISCO команди, изпратени чрез SSH / Telnet

Главна информация

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

Какво представлява скриптът publip.sh?

Този скрипт позволява на мрежовия администратор да изпраща команди на Cisco на няколко избрани отдалечени устройства (рутер, защитна стена, комутатор, безжични точки за достъп ...), чрез SSH или Telnet (скриптът автоматично обработва и двата типа връзки).

  • Тези командни редове първоначално ще бъдат въведени в последователност, една команда на ред (като пакет или конфигурационен файл), в малък файл, наречен commandes.txt (няма ограничение за размер)
  • Въведете всички IP адреси (или псевдоними на DNS) за различните устройства в мрежата (няма ограничение за броя на устройствата).
  • И накрая, когато стартирате скрипта, ще бъдете помолени да въведете парола, която в нашия случай трябва да бъде еднаква за всички устройства.

Скриптът върви много по-далеч!

Всъщност, той е напълно автономен и може да затвори грешки при свързването, въвеждане на данни и запис на промени в лог файл. Този скрипт също така идентифицира оборудването, за което е в състояние да се свърже чрез SSH или Telnet, и след това поддържа архив на процедурите, генериращи критични грешки (скрипт на срив, погрешно тълкуване на commanf от оборудването). Различните типове грешки са:

  • 1 - Изчакване на връзката
  • 2 - Грешка при влизане, грешна парола
  • 3 - DNS псевдоним или IP не съществува
  • 4 - Прекъсвания на скрипта Expect (създаване на регистрационен файл на оборудването)
  • 5 - Отдалечена връзка е деактивирана
  • 6 - Поправете псевдонима на DNS, но несъществуващ IP адрес
  • 7 - Оборудване не Cisco (HP Procurve)
  • 8 - Не-Cisco оборудване (X1000)
  • 9 - Не-Cisco оборудване (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-интервал 5 ip ospf мъртъв интервал 20 изход област 0 удостоверяване съобщение-digest end 

запишете mem

liste.txt

Въведете псевдонима за IP или DNS на цялото включено оборудване:

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

Скриптът не взема под внимание празни пространства.

Скриптът

Скриптът ще бъде озаглавен от малък # 1, който ще бъде обсъден в края на скрипта

 #! / bin / bash # script.sh ехо "veuillez donner le mot de passe" stty -echo # [1] чете парола stty echo export ssh = "./ ssh.sh" # [2] износ telnet = "./ експортиране на. \ tизнос. \ tизнос. \ t rm -f $ erreur # [3] rm -f $ ssh rm -f $ telnet cat $ liste | докато четете маршрута; направете, ако ["$ routeur"! = ""] тогава, ако [! -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" изход 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"] след това ехо "Problème d'authentification sur $ routeur!" echo "$ routeur: неправилно влизане / парола" >> $ erreur продължава fi temps = "grep" real '$ temp | sed 's / real / § /' | cut -d'§ '-f2 | cut -d '' -f1 | cut -d '.' -f1 'ако [$ temps -ge 10 -a! "'grep' затвори '$ temp'"] # [8] след това ехо "L'equipement $ routeur ne réponds pas!"; echo "$ routeur: връзката е изтекъл" >> $ erreur продължава fi, ако ["$ COD_RET"! = "0"] # [9] след това #Erreur de connection in l'équipement en SSH if [! -f $ telnet] след това ехо 'очаквам 2> & 1 <> $ telnet echo' spawn telnet $ routeur '>> $ telnet echo' send 'admin' ">> $ telnet echo" очаквам "Парола:" '>> $ telnet echo 'send "$ password r"' >> $ telnet echo 'очаквайте "#"' >> $ telnet cat $ cmdcisco | докато чете commande do echo "send" $ commande r "" echo "очаква" # "'done >> $ telnet echo' send" изход 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'"] след това ехо "l'equipement $ routeur n'existe pas!" echo "$ routeur: не съществува" >> $ erreur elif ["'grep' Неизвестен хост '$ temp'"] след това ехо "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'"] след това echo "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 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 оборудване (X1000)" >> $ erreur elif ["'grep'% Неизвестна команда '$ temp'" -o "'grep'% Невалидна '$ temp'"] след това ехо "/! \ t Команди на Cisco не се срещат с апаратура. Консултирайте се с fichier log de $ routeur !!! " 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"] и след това ехо "Проблeме де свързване на l'обед. $ routeur!" echo "$ routeur: проблем с връзката" >> $ erreur fi fi done rm -f $ temp # [11] изход 

Коментари

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

Предишна Статия Следваща Статия

Топ Съвети