2013-11-11 3 views
0

У меня есть следующий скрипт. Иногда он отлично работает, а другие застревают. Что здесь может быть не так?Ожидание иногда застревает во время входа в систему

#!/usr/bin/env expect 
# set Variables 
set timeout 60 
set ipaddr [lindex $argv 0] 
# start telnet connection 
spawn telnet $ipaddr 
match_max 100000 
# Look for user prompt 
expect "username:*" 
send -- "admin\r" 
expect "password:?" 
# Send pass 
send "thisisthepass\n" 
# look for WWP prompt 
expect ">" 
send "sendthiscommand\r" 
expect ">" 
send "exit\r" 
interact 

Сценарий отлично работает до конца, но иногда он застревает во время входа в систему. Такое поведение присутствует даже при одном и том же IP-адресе: например, он может запускать 1 из 5 попыток для одного и того же IP-адреса.

Я попытался добавить некоторый сон между отправкой пользователя и паролем, но он все тот же. Я также попытался без ожидать, отправив непосредственно строку пароля после того как пользователь одного, но все тот же: иногда скрипт работает нормально, но другой он просит снова ввести пароль, как будто это неправильно ...

username: admin 
password: 

username: 

ответ

1

вещи Я хотел бы сделать:

  • изменение send "thisisthepass\n" в send "thisisthepass\r"
  • включают exp_internal 1 где-то в верхней части вашего сценария, и посмотреть, что происходит, когда у вас есть неудачная попытка

exp_internal 1 будет включать отладку с большим количеством хорошей информации о том, что происходит с соответствием шаблону ожидания. Вы можете поделиться им здесь, и я буду рад взглянуть на него.

Вы уверены, что запрос пароля имеет дополнительный символ после него (ваш ? в expect "password:?". Всегда есть? Есть шанс разные устройства имеют немного другой пароль подсказки?

Смежные вопросы