Здраствуйте уважаемые!
Подскажите пожалуста как мне решить данную проблемму есть скрипт для подключения к коммутарору и выполнения на нем несколько комманд через telnet
Код:
#!/usr/bin/expect
#
set force_conservative 0
if {$force_conservative} {
set send_slow {1 .1}
proc send {ignore arg} {
sleep .1
exp_send -s -- $arg
}
}
set timeout -1
set ip [lrange $argv 0 0]
match_max 100000
sleep .1
# коннектимся к узлу
spawn telnet $ip\n
expect "UserName:"
###################################################################
# Посылаем имя пользователя и ждем запроса пароля.
send "root\r"
expect "PassWord:"
####################################################################
# Посылаем пароль и ждем приглашения ввода командного интерпретатора.
send "pass\r"
expect "#"
#####################################################################
# вводим комманды список команд указывать в файле ./commands.txt.
set ufile [open "./commands.txt" r]
foreach uline [split [read $ufile] "\n"] {
set lin [lindex $uline]
send $lin\n
expect "#"
}
close $ufile
# Запоминаем результат в переменной. Он может быть отображён, или записан на диск.
puts stdout "Работа с коммутатором $ip завершена успешно!.\r"
# Завершаем сессию telnet, и ждем символа конца строки (eof).
send "logout\r"
expect eof
при использовании данного скрипта на коммутаторах D-link DES-3028 скрипт работает, при выполнении на DES-3526 скрипт не выполняется ибо коммутатор не может прочитать приглашение коммандного интерпритатора
Код:
expect "UserName:"
expect "PassWord:"
expect "#"
При "курении" доков и интернета по Expect я не нашел какого либо способа решить данную проблемму. Подскажите пожалуйста способ как мне проверить какое приглашение возврашяется или обойти это.. насколько я понимаю у expect не особо умеет со строками работать... а переписывать скрипт на питон не очень охото)