У меня есть время цикла, как, например:Ожидайте сценарий побежал внутрь в то время как цикл завершается после обработки одной строки
#!/bin/bash
doit="/pathtocommand"
file="/pathtosourcefile"
while read -r username password; do
$doit "$username" "$password"
done < $file
И моя команда в то время как петля ($ пустяк) является ожидать сценарий.
#!/usr/bin/expect -f
## Set up variables to be passed in as command line arguments
#set username [lindex $argv 0];
#set password [lindex $argv 1];
lassign $argv username password
spawn telnet 192.168.100.101 106
expect "200 PWD Server ready"
send "USER user\r"
expect "300 please send the PASS"
send "PASS password\r"
expect "200 login OK, proceed"
## Use the line below for passwords that do not have to be enclosed with quotes
send "SETACCOUNTPASSWORD $username PASSWORD $password\r"
# Use the line below for a password that must be quoted ie one that contains a $ or a ! by escaping the double quotes
#send "SETACCOUNTPASSWORD $username PASSWORD \"$password\"\r"
expect "200 OK"
send "quit\r"
interact
Ожидаемый сценарий должен выполняться столько раз, сколько в моем файле есть строки. Но он останавливается после обработки первой строки. Я довольно уверен, что его что-то в сценарии ожидания, потому что изменение команды на что-то вроде эха работает.
Если отладить скрипт я вижу это:
+ doit=/pathtocommand
+ file=/pathtofile
+ read -r username password
+ /pathtofile 0100 01000100
spawn telnet 192.168.100.101 106
Trying 192.168.100.101...
Connected to 192.168.100.101.
Escape character is '^]'.
200 PWD Server ready
USER user
300 please send the PASS
PASS pass
200 login OK, proceed
SETACCOUNTPASSWORD 0100 PASSWORD 01000100
200 OK
quit
+ read -r username password
Он смотрит на меня, как скрипт пытается начать все сначала, но потом выходит. Может ли кто-нибудь помочь? Я нахожусь в хрусте, чтобы заставить эту работу работать. Я уже делал это с SSH без проблем. Не уверен, что это telnet вещь или что.