Я изменяю скрипт на python для запуска в securecrt 8.5.2, чтобы сделать резервную копию рабочей конфигурации некоторого оборудования cisco ASR9K, которое у меня есть, но сценарий внезапно завершается после второго успешного ssh2-прыжка ( 2-я вкладка) и не отправляет команды, которые я написал (выход в этом конкретном примере), вот код, который у меня есть, так как я сказал, что это измененная версия страницы в vandyke для открытия ssh2.
Одна важная вещь заключается в том, что я должен вкладывать каждую сессию каждого отдельного маршрутизатора, потому что он не позволяет делать ssh напрямую из активного cli , поэтому мне пришлось импровизировать и реализовать это "соединение" в TAB ", я подозреваю, что secureCRT не знает, находится ли он в новой вкладке, которую я открыл, поэтому он не знает, куда отправлять команды.
Я играл с линией 30, но, похоже, это никак не сказалось. Я изменял ожидаемый текст, но он не распознает правильную вкладку или не читает правильную.
Личная информация: полный новичок в языке Python.
# $language = "python"
# $interface = "1.0"
# Connect to an SSH server using the SSH2 protocol. Specify the
# username and password and hostname on the command line as well as
# some SSH2 protocol specific options.
host = "X.X.X.a"
host2 = "X.X.X.b"
def main():
crt.Screen.Synchronous = True
# Prompt for a username and password instead of embedding it in a script...
#
usr = crt.Dialog.Prompt("Enter the user name for" + host, "Username", "", True)
passwd = crt.Dialog.Prompt("Enter TACACS+ for" + host, "Login", "", True)
# Build a command-line string to pass to the Connect method.
cmd = "/SSH2 /L %s /PASSWORD %s /C AES-128-CTR /M SHA1 %s" % (usr, passwd, host)
crt.Session.Connect(cmd)
crt.Screen.WaitForString("X.X.X.a#")
crt.Screen.Send("copy running-config tftp:\r")
crt.Screen.WaitForString("Host name or IP address (control-c to abort): []?")
crt.Screen.Send("tftpserver.com\r")
crt.Screen.WaitForString("Destination file name (control-c to abort): [running-config]?")
crt.Screen.Send("X.X.X.a_running_config\r")
crt.Screen.WaitForString("X.X.X.a")
cmd2 = "/SSH2 /L %s /PASSWORD %s /C AES-128 /M SHA1 %s" % (usr, passwd, host2)
crt.Session.ConnectInTab(cmd2)
crt.Screen.WaitForString("X.X.X.b#")
crt.Screen.Send("exit\r")
main()
crt.Session.ConnectInTab (cmd2)
Он подключается к оборудованию в новой вкладке, но я ожидаю, что скрипт продолжит делать то же, что и для host1 (XXXa), и отправит те же скучные вещи на host2 (XXXb) через вкладку ssh2, и продолжайте этот процесс до тех пор, пока я не сделаю это для всего необходимого оборудования.
Спасибо, что читаете меня.