Автоматизация Π²Π²ΠΎΠ΄Π° Π² SecureCRT с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скриптов

Π£ сСтСвых ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ² часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Π°, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ copy/past ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ· Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π° Π² консоль. ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ нСсколько ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²: Username/Password ΠΈ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π΅Ρ‰Π΅. Π£ΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ этот процСсс позволяСт использованиС скриптов. НО Π·Π°Π΄Π°Ρ‡ΠΈ написаниС скрипта ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ скрипта суммарно Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Π½ΡΡ‚ΡŒ мСньшС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ настройка Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΠΈΠ½Π°Ρ‡Π΅ скрипты бСсполСзны.

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Π° эта ΡΡ‚Π°Ρ‚ΡŒΡ. Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Fast Start ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π° Π½Π° экономию Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ сСтСвым ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°ΠΌ, ΠΏΡ€ΠΈ настройкС оборудования (ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ) Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… устройствах. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ПО SecureCRT ΠΈ встроСнный Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ скриптов.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ SecureCRT ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ встроСн ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ выполнСния скриптов. Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ скрипты Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅:

  • Автоматизированный Π²Π²ΠΎΠ΄ ΠΈ Π²Ρ‹Π²ΠΎΠ΄, ΠΈ минимальная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° коррСктности Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°.
  • Π£ΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ – ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡƒΠ· ΠΌΠ΅ΠΆΠ΄Ρƒ настройкой оборудования. (Π”Π΅ Ρ„Π°ΠΊΡ‚ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡƒΠ·, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ для выполнСния дСйствий ΠΏΠΎ copy/past Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΏΡ€ΠΈ 3-Ρ… ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄ для примСнСния Π½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ.)

Π’ Π΄Π°Π½Π½ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ рассмотрСны Π·Π°Π΄Π°Ρ‡ΠΈ:

  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΡ… скриптов.
  • Запуск скриптов Π½Π° SecureCRT.
  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования простых ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… скриптов. (ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ.)

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΡ… скриптов.

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠ΅ скрипты ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ всСго Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Send ΠΈ WaitForString. Π­Ρ‚ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° Ρ…Π²Π°Ρ‚ΠΈΡ‚ Π½Π° 90% (ΠΈ Π±ΠΎΠ»Π΅Π΅) выполняСмых Π·Π°Π΄Π°Ρ‡.

Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° языкС Python, JS, VBS (Visual Basic), Perl ΠΈ Ρ‚. Π΄.

Python

# $language = "Python"
# $interface = "1.0"
def main():
  crt.Screen.Synchronous = True
  crt.Screen.Send("r")
  crt.Screen.WaitForString("name")
  crt.Screen.Send("adminr")
  crt.Screen.WaitForString("Password:")
  crt.Screen.Send("Password")
  crt.Screen.Synchronous = False
main()

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ„Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ «*.py»

VBS

# $language = "VBScript"
# $interface = "1.0"
Sub Main
  crt.Screen.Synchronous = True
  crt.Screen.Send vbcr
  crt.Screen.WaitForString "name"
  crt.Screen.Send "cisco" & vbcr
  crt.Screen.WaitForString "assword"
  crt.Screen.Send "cisco" & vbcr
  crt.Screen.Synchronous = False
End Sub

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ„Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ «*.vbs»

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ скрипта с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ записи скрипта.

ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс написания скрипта. Π’Ρ‹ запускаСтС запись скрипта. SecureCRT записываСт ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚ оборудования ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π’Π°ΠΌ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ скрипт.

Π°. Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ запись скрипта:
МСню SecureCRT => Script => Start Recording Script
Π±. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ дСйствия с консолью (Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ дСйствия ΠΏΠΎ настройкС Π² CLI).
Π². Π—Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ запись скрипта:
МСню SecureCRT => Script => Stop Recording Script…
Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» со скриптом.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ сохранСнного скрипта:

Автоматизация Π²Π²ΠΎΠ΄Π° Π² SecureCRT с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скриптов

Запуск скриптов Π½Π° SecureCRT.

ПослС создания/рСдактирования скрипта, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π·Π°ΠΊΠΎΠ½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ вопрос: Как ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ скрипт?
БущСствуСт нСсколько способов:

  • Запуск Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ· мСню Script
  • АвтоматичСский запуск послС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (logon script)
  • АвтоматичСский logon Π±Π΅Π· использования скрипта
  • Запуск Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² SecureCRT (ΠΊΠ½ΠΎΠΏΠΊΡƒ Π΅Ρ‰Π΅ прСдстоит ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² SecureCRT)

Запуск Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ· мСню Script

МСню SecureCRT => Script => Run…
β€” ПослСдниС 10 скриптов Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΈ доступны для быстрого запуска:
МСню SecureCRT => Script => 1 «Имя Ρ„Π°ΠΉΠ»Π° со скриптом»
МСню SecureCRT => Script => 2 «Имя Ρ„Π°ΠΉΠ»Π° со скриптом»
МСню SecureCRT => Script => 3 «Имя Ρ„Π°ΠΉΠ»Π° со скриптом»
МСню SecureCRT => Script => 4 «Имя Ρ„Π°ΠΉΠ»Π° со скриптом»
МСню SecureCRT => Script => 5 «Имя Ρ„Π°ΠΉΠ»Π° со скриптом»

АвтоматичСский запуск послС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (logon script)

Настройки автоматичСского скрипта логирования Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ для сохранСнной сСссии: Connection => Logon Actions => Logon script

Автоматизация Π²Π²ΠΎΠ΄Π° Π² SecureCRT с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скриптов

АвтоматичСский logon Π±Π΅Π· использования скрипта

БущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ автоматичСского Π²Π²ΠΎΠ΄Π° ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ пароля Π±Π΅Π· написания скрипта, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ встроСнный Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» SecureCRT. Π’ настройках соСдинСния Β«ConnectionΒ» => Logon Actions => Automate logon – Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ нСсколько связок – ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ собой ΠΏΠ°Ρ€Ρ‹: Β«ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ тСкст» + Β«ΠŸΠΎΡΡ‹Π»Π°Π΅ΠΌΡ‹Π΅ символы Π½Π° этот тСкст» Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ°Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ. (ΠŸΡ€ΠΈΠΌΠ΅Ρ€: 1-я ΠΏΠ°Ρ€Π° ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π° ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, вторая ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π° пароля, Ρ‚Ρ€Π΅Ρ‚ΡŒΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡ Π² ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ, чСтвСртая ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΎΡ‚ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ°.)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ автоматичСского logon Π½Π° Cisco ASA:

Автоматизация Π²Π²ΠΎΠ΄Π° Π² SecureCRT с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скриптов

Запуск Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² SecureCRT (ΠΊΠ½ΠΎΠΏΠΊΡƒ Π΅Ρ‰Π΅ прСдстоит ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² SecureCRT)

Π’ SecureCRT ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ скрипт – ΠΊΠ½ΠΎΠΏΠΊΠ΅. Кнопка добавляСтся Π½Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ для этой Ρ†Π΅Π»ΠΈ панСль.

Π°. ДобавляСм панСль Π² интСрфСйс: МСню SecureCRT => View => Button Bar
Π±. ДобавляСм ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π° панСль ΠΈ добавляСм скрипт. – ΠŸΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΊΠΈ Ρ‰Π΅Π»ΠΊΠ°Π΅ΠΌ Π½Π° панСль Button Bar ΠΈ Π² контСкстном мСню Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΡƒΠ½ΠΊΡ‚ Β«New button…Β».
Π². Π’ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ Β«Map ButtonΒ» Π² ΠΏΠΎΠ»Π΅ Β«ActionΒ» Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ дСйствиС (function) Β«Run ScriptΒ».
Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ подпись ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ΅. Π¦Π²Π΅Ρ‚ для ΠΈΠΊΠΎΠ½ΠΊΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π—Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅ΠΌ настройки Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ΠΌ Ok.

Автоматизация Π²Π²ΠΎΠ΄Π° Π² SecureCRT с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скриптов

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:

ПанСль с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π».

1. Π•ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Logon ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ сСссии ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ панСль ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΊ этой Π²ΠΊΠ»Π°Π΄ΠΊΠ΅.

2. Π•ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для стандартных дСйствий с ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π·Π°Π΄Π°Ρ‚ΡŒ Π·Π°Ρ€Π°Π½Π΅Π΅ Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ дСйствия: ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ show version, show running-config, ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ.

Автоматизация Π²Π²ΠΎΠ΄Π° Π² SecureCRT с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скриптов
К Π΄Π°Π½Π½Ρ‹ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌ Π½Π΅ привязан Π½ΠΈ ΠΊΠ°ΠΊΠΎΠΉ скрипт. Волько строка с дСйствиями:

Автоматизация Π²Π²ΠΎΠ΄Π° Π² SecureCRT с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скриптов
Настройка – Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Π½Π° сСссию ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π»Π°ΡΡŒ нСобходимая панСль с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² настройках сСссии:

Автоматизация Π²Π²ΠΎΠ΄Π° Π² SecureCRT с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скриптов
Для Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ смысл Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ скрипты для Login ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° панСль с частыми ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ для Π²Π΅Π½Π΄ΠΎΡ€Π°.

Автоматизация Π²Π²ΠΎΠ΄Π° Π² SecureCRT с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скриптов
ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Go Cisco – панСль ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π½Π° Cisco Button Bar.

Автоматизация Π²Π²ΠΎΠ΄Π° Π² SecureCRT с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скриптов

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования простых ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… скриптов. (ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ.)

ΠŸΡ€ΠΎΡΡ‚Ρ‹Ρ… скриптов Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π° всС случаС ΠΆΠΈΠ·Π½ΠΈ. Но ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΌΠ½Π΅ понадобилось Ρ‡ΡƒΡ‚ΡŒ ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ скрипт – для ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π­Ρ‚ΠΎ услоТнСниС – всСго лишь Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π»ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Запрос Π΄Π°Π½Π½Ρ‹Ρ… Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°

Π£ мСня Π² скриптС запросов Π΄Π°Π½Π½Ρ‹Ρ… Π±Ρ‹Π»ΠΎ 2. Π­Ρ‚ΠΎ Hostname ΠΈ 4-ΠΉ ΠΎΠΊΡ‚Π΅Ρ‚ IP адрСса. Для выполнСния этого дСйствия – я Π·Π°Π³ΡƒΠ³Π»ΠΈΠ» ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ нашСл Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС SecureCRT (vandyke). – Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» называСтся prompt.

	crt.Screen.WaitForString("-Vlanif200]")
	hostnamestr = crt.Dialog.Prompt("Enter hostname:", "hostname", "", False)
	ipaddressstr = crt.Dialog.Prompt("Enter ip address:", "ip", "", False)
	crt.Screen.Send("ip address 10.10.10.")
	crt.Screen.Send(ipaddressstr)
	crt.Screen.Send(" 23r")
	crt.Screen.Send("quitr")
	crt.Screen.Send("sysname ")
	crt.Screen.Send(hostnamestr)
	crt.Screen.Send("r") 

Π­Ρ‚Π° Ρ‡Π°ΡΡ‚ΡŒ скрипта Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π»Π° Hostname ΠΈ Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΈΠ· послСднСго ΠΎΠΊΡ‚Π΅Ρ‚Π°. Π’. ΠΊ. оборудования Π±Ρ‹Π»ΠΎ 15 ΡˆΡ‚. И Π΄Π°Π½Π½Ρ‹Π΅ Π±Ρ‹Π»ΠΈ прСдставлСны Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Ρ‚ΠΎ я ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π» ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ значСния ΠΈ вставлял Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π°. Π”Π°Π»ΡŒΡˆΠ΅ скрипт Ρ€Π°Π±ΠΎΡ‚Π°Π» ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

FTP ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° сСтСвоС ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅.

Π”Π°Π½Π½Ρ‹ΠΉ скрипт запускал Ρƒ мСня ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ (shell) ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π» Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ FTP. По Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π» сСссию. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠ½ΠΎΡ‚ для этого Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‚. ΠΊ. ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π±ΡƒΡ„Π΅Ρ€Π΅ FTP Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ:

# $language = "Python"
# $interface = "1.0"

# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.

def main():
	crt.Screen.Synchronous = True
	crt.Screen.Send("ftp 192.168.1.1r")
	crt.Screen.WaitForString("Name")
	crt.Screen.Send("adminr")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Passwordr")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("binaryr")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("put S5720LI-V200R011SPH016.patr")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("quitr")
	crt.Screen.Synchronous = False
main()

Π’Π²ΠΎΠ΄ username/password с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скрипта

Π£ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° доступ ΠΊ сСтСвому ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΡŽ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π±Ρ‹Π» Π·Π°ΠΊΡ€Ρ‹Ρ‚. Π—Π°ΠΉΡ‚ΠΈ Π½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ сначала ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ²ΡˆΠΈΡΡŒ ΠΊ Π¨Π»ΡŽΠ·Ρƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π° с Π½Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌ Π½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΊ Π½Π΅ΠΌΡƒ. Для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ использовался ssh ΠΊΠ»ΠΈΠ΅Π½Ρ‚ встроСнный Π² IOS/ПО оборудования. БоотвСтствСнно имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π»ΠΈΡΡŒ Π² консоли. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скрипта Π½ΠΈΠΆΠ΅, имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ вводились автоматичСски:

# $language = "Python"
# $interface = "1.0"

# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.

def main():
	crt.Screen.Synchronous = True
	crt.Screen.Send("snmpadminr")
	crt.Screen.WaitForString("assword:")
	crt.Screen.Send("Passwordr")
	crt.Screen.Synchronous = False
main()

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π‘ΠΊΡ€ΠΈΠΏΡ‚Π° Π±Ρ‹Π»ΠΎ 2. Один для ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи администратора, Π²Ρ‚ΠΎΡ€ΠΎΠΉ для ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи eSIGHT.

Π‘ΠΊΡ€ΠΈΠΏΡ‚ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π΄ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π²ΠΎ врСмя выполнСния скрипта.

Π—Π°Π΄Π°Ρ‡Π΅ΠΉ Π±Ρ‹Π»ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π° всСм сСтСвом ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ статичСский ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚. Но шлюз Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ Π±Ρ‹Π» свой (ΠΈ ΠΎΠ½ отличался ΠΎΡ‚ шлюза ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ). Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ скрипт Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ» Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π²Π²ΠΎΠ΄ΠΈΠ» Π² Ρ€Π΅ΠΆΠΈΠΌ конфигурирования нСдописывал Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ (IP адрСс шлюза Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚) – эту Ρ‡Π°ΡΡ‚ΡŒ дописывал я. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ я Π½Π°ΠΆΠΈΠΌΠ°Π» Enter, скрипт ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

# $language = "Python"
# $interface = "1.0"

# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.

def main():
	crt.Screen.Synchronous = True
	crt.Screen.Send("Zdes-mogla-bit-vasha-reklamar")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("show run | inc ip router")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("conf tr")
	crt.Screen.WaitForString("(config)#")
	crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ")
	crt.Screen.WaitForString("(config)#")
	crt.Screen.Send("endr")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("copy run star")
	crt.Screen.WaitForString("[startup-config]?")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("exitr")
	crt.Screen.Synchronous = False
main()

Π’ Π΄Π°Π½Π½ΠΎΠΌ скриптС Π² строчкС: crt.Screen.Send(Β«ip route 10.10.10.8 255.255.255.252 β€ž) Π½Π΅ дописан IP адрСс шлюза ΠΈ отсутствуСт символ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ. Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΆΠ΄Π΅Ρ‚ появлСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строчки с символами Β«(config)#Β» Π”Π°Π½Π½Ρ‹Π΅ символы появлялись послС Π²Π²ΠΎΠ΄Π° ΠΌΠ½ΠΎΠΉ ip адрСса ΠΈ enter.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:

ΠŸΡ€ΠΈ написании скрипта ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π΅ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: ВрСмя написания скрипта ΠΈ выполнСния скрипта Π½ΠΈ ΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ большС, Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ тСорСтичСски Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° выполнСния этой ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ (copy/paste ΠΈΠ· Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π°, написаниС ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° playbook для ansible, написаниС ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° скрипта python). Π’. Π΅. использованиС скрипта Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ врСмя, Π° Π½Π΅ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя Π½Π° ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²ΡƒΡŽ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ процСссов (Π’. Π΅. ΠΊΠΎΠ³Π΄Π° скрипт ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ повторСния большС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚). Но Ссли скрипт ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ автоматизация со скриптом ΠΈ написаниС/ΠΎΡ‚Π»Π°Π΄ΠΊΠ° скрипта Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ мСньшС Ρ‡Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π»ΡŽΠ±Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ способом (ansible, command window), Ρ‚ΠΎ скрипт β€” Π»ΡƒΡ‡ΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.
ΠžΡ‚Π»Π°Π΄ΠΊΠ° скрипта. Π‘ΠΊΡ€ΠΈΠΏΡ‚ растСт постСпСнно, ΠΎΡ‚Π»Π°Π΄ΠΊΠ° происходит Π½Π° ΠΎΠ±ΠΊΠ°Ρ‚Π΅ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ, Π²Ρ‚ΠΎΡ€ΠΎΠΌ, Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ устройствС ΠΈ ΠΊ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΌΡƒ скрипт скорСС всСго Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ.

Запуск скрипта (с Π²Π²ΠΎΠ΄ΠΎΠΌ username+password) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΊΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ происходит быстрСС, Ρ‡Π΅ΠΌ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π° Username ΠΈ Password. Но Π½Π΅ бСзопасно с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния бСзопасности.
Π”Ρ€ΡƒΠ³ΠΎΠΉ (Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ) ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ³Π΄Π° использованиС скрипта: ΠŸΡ€ΡΠΌΠΎΠ³ΠΎ доступа Π½Π° сСтСвоС ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ Ρƒ Вас Π½Π΅Ρ‚. Но Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π΄ΠΎΠ½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ всС сСтСвоС ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ (завСсти Π² систСму ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°, Π΄ΠΎΠ½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Username/password/snmpv3username/password). Π•ΡΡ‚ΡŒ доступ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° Core ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€, с Π½Π΅Π³ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Π΅ SSH Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅. ΠŸΠΎΡ‡Π΅ΠΌΡƒ нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ срСдства Ansible. β€” ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ упираСмся Π² ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ количСству допустимых ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… сСссий Π½Π° сСтСвом ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ (line vty 0 4, user-interface vty 0 4) (Π΄Ρ€ΡƒΠ³ΠΎΠΉ вопрос ΠΊΠ°ΠΊ Π² Ansible Π·Π°Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ SSH ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Ρ…ΠΎΠΏΠΎΠΌ).

Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ врСмя ΠΏΡ€ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… опСрациях – Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎ FTP. ПослС окончания копирования скрипт сразу Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π§Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ потрСбуСтся ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ копирования, ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΡΠΎΠ·Π½Π°Ρ‚ΡŒ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ копирования, ΠΏΠΎΡ‚ΠΎΠΌ ввСсти ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π‘ΠΊΡ€ΠΈΠΏΡ‚ это Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ быстрСС.

Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ срСдства массовой доставки Π΄Π°Π½Π½Ρ‹Ρ…: Консоль. Или ΠΊΠΎΠ³Π΄Π° Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… для оборудования ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Π°: hostname, management ip address. Или ΠΊΠΎΠ³Π΄Π° ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΊ Π½Π΅ΠΉ слоТнСС, Ρ‡Π΅ΠΌ Π΄ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ с оборудования Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ скрипта. β€” ΠŸΡ€ΠΈΠΌΠ΅Ρ€ со скриптом ΠΏΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Π½ΠΈΡŽ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°, ΠΊΠΎΠ³Π΄Π° Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ IP адрСс ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° свой. (Мои ΠΊΠΎΠ»Π»Π΅Π³ΠΈ писали Ρ‚Π°ΠΊΠΈΠ΅ скрипты β€” ΠΊΠΎΠ³Π΄Π° DMVPN spoke Π±Ρ‹Π»ΠΎ Π·Π° 3 сотни. НСобходимо Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ настройки DMVPN).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ: Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… настроСк Π½Π° Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€Π΅ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΡ€Ρ‚Ρ‹:

А. Вставил ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ кабСль Π² устройство.
Π‘. Запустил скрипт
Π’. ДоТдался выполнСния скрипта
Π“. ΠŸΠ΅Ρ€Π΅Ρ‚ΠΊΠ½ΡƒΠ» ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ кабСль Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ устройство.
Π”. Если свитч Π½Π΅ послСдний, ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΡƒΠ½ΠΊΡ‚Ρƒ Π‘.

Π˜Ρ‚ΠΎΠ³ΠΎ ΠΏΠΎ ΠΈΡ‚ΠΎΠ³Π°ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ скрипта:

  • Π½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ Π·Π°Π΄Π°Π½ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ.
  • Π²Π²Π΅Π΄Π΅Π½ Username
  • Π²Π²Π΅Π΄Π΅Π½ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ IP адрСс устройства.

P. S. ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ. Π’. ΠΊ. ΠΏΠΎ Default ssh оказался Π½Π΅ настроСн/Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½. (Π”Π° это моя ошибка.)

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ источники.

1. О создании скриптов
2. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ скриптов

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1: ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ скриптов.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ скрипта, с двумя запросами: Hostname ΠΈ IP адрСсом. Боздавался для прСднастройки оборудования Ρ‡Π΅Ρ€Π΅Π· консоль (9600 Π±ΠΎΠ΄). А Ρ‚Π°ΠΊΠΆΠ΅ для ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ оборудования ΠΊ сСти.

# $language = "Python"
# $interface = "1.0"

# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.

def main():
	crt.Screen.Synchronous = True
	crt.Screen.Send("r")
	crt.Screen.WaitForString("name")
	crt.Screen.Send("adminr")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Passwordr")
	crt.Screen.Send("sysr")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("interface Vlanif 1r")
	crt.Screen.WaitForString("Vlanif1]")
	crt.Screen.Send("undo ip addressr")
	crt.Screen.Send("shutdownr")
	crt.Screen.Send("vlan 100r")
	crt.Screen.Send(" description description1r")
	crt.Screen.Send(" name description1r")
	crt.Screen.Send("vlan 110r")
	crt.Screen.Send(" description description2r")
	crt.Screen.Send(" name description2r")
	crt.Screen.Send("vlan 120r")
	crt.Screen.Send(" description description3r")
	crt.Screen.Send(" name description3r")
	crt.Screen.Send("vlan 130r")
	crt.Screen.Send(" description description4r")
	crt.Screen.Send(" name description4r")
	crt.Screen.Send("vlan 140r")
	crt.Screen.Send(" description description5r")
	crt.Screen.Send(" name description5r")
	crt.Screen.Send("vlan 150r")
	crt.Screen.Send(" description description6r")
	crt.Screen.Send(" name description6r")
	crt.Screen.Send("vlan 160r")
	crt.Screen.Send(" description description7r")
	crt.Screen.Send(" name description7r")
	crt.Screen.Send("vlan 170r")
	crt.Screen.Send(" description description8r")
	crt.Screen.Send(" name description8r")               
	crt.Screen.Send("vlan 180r")
	crt.Screen.Send(" description description9r")
	crt.Screen.Send(" name description9r")
	crt.Screen.Send("vlan 200r")
	crt.Screen.Send(" description description10r")
	crt.Screen.Send(" name description10r")
	crt.Screen.Send("vlan 300r")
	crt.Screen.Send(" description description11r")
	crt.Screen.Send(" name description11r")
	crt.Screen.Send("quitr")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("stp region-configurationr")
	crt.Screen.Send("region-name descr")
	crt.Screen.Send("active region-configurationr")
	crt.Screen.WaitForString("mst-region]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("stp instance 0 priority 57344r")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("interface range GigabitEthernet 0/0/1 to GigabitEthernet 0/0/42r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description Usersr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type hybridr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("voice-vlan 100 enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("voice-vlan legacy enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid pvid vlan 120r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid tagged vlan 100r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid untagged vlan 120r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("stp edged-port enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("trust 8021pr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("interface range GigabitEthernet 0/0/43 to GigabitEthernet 0/0/48r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description Printersr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type accessr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port default vlan 130r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("stp edged-port enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("trust 8021pr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("interface range XGigabitEthernet 0/0/1 to XGigabitEthernet 0/0/2r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description uplinkr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type trunkr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port trunk allow-pass vlan 100 110 120 130 140 150 160 170 180 200r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port trunk allow-pass vlan 300r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.4r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.2r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.134r")
	crt.Screen.Send("ip route-static 0.0.0.0 0.0.0.0 10.10.10.254r")
	crt.Screen.Send("interface Vlanif 200r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
        hostnamestr = crt.Dialog.Prompt("Enter hostname:", "hostname", "", False)
        ipaddressstr = crt.Dialog.Prompt("Enter ip address:", "ip", "", False)
	crt.Screen.Send("ip address 10.10.10.")
	crt.Screen.Send(ipaddressstr)
	crt.Screen.Send(" 24r")
	crt.Screen.Send("quitr")
	crt.Screen.Send("sysname ")
	crt.Screen.Send(hostnamestr)
	crt.Screen.Send("r")
	crt.Screen.WaitForString("]")
	crt.Screen.Synchronous = False
main()

Π’Π°ΠΊΠΈΠ΅ скрипты ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹, Π½ΠΎ количСство оборудования – 15 ΡˆΡ‚. Позволило ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ настройку. Π”Π°Π»ΡŒΡˆΠ΅ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ быстрСС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SecureCRT Command window.

Настройка ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи для ssh.

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Настройка Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· консоль.

# $language = "Python"
# $interface = "1.0"

# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.

def main():
	crt.Screen.Synchronous = True
	crt.Screen.Send("r")
	crt.Screen.WaitForString("name")
	crt.Screen.Send("adminr")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Passwordr")
	crt.Screen.WaitForString(">")
	crt.Screen.Send("sysr")
	crt.Screen.Send("stelnet server enabler")
	crt.Screen.Send("aaar")
	crt.Screen.Send("local-user admin service-type terminal ftp http sshr")
	crt.Screen.Send("quitr")
	crt.Screen.Send("user-interface vty 0 4r")
	crt.Screen.Send("authentication-mode aaar")
	crt.Screen.Send("quitr")
	crt.Screen.Send("quitr")
	crt.Screen.Synchronous = False
main()


О SecureCRT:ΠŸΠ»Π°Ρ‚Π½ΠΎΠ΅ ПО: ΠΎΡ‚ 99$ (самая малСнькая Ρ†Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° SecureCRT Π½Π° ΠΎΠ΄ΠΈΠ½ Π³ΠΎΠ΄)
ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сайт
1 Ρ€Π°Π· покупаСтся лицСнзия Π½Π° ПО, с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ (для обновлСния), ΠΏΠΎΡ‚ΠΎΠΌ ПО ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с этой Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ врСмя.

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах Mac OS X ΠΈ Windows.

Π•ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° скриптов (эта ΡΡ‚Π°Ρ‚ΡŒΡ)
Π•ΡΡ‚ΡŒ Command Window
Serial/Telnet/SSH1/SSH2/Shell ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com