Я пытаюсь ssh в несколько систем (читай из файла test.txt), используя ожидание внутри скрипта оболочки и выполнение команд на каждом. Сценарий возвращает ошибку «неверное имя команды». Я использую set и ожидаю здесь неправильного пути?using set и ожидать в сценарии оболочки
#!/usr/bin/expect -f
set username "root"
set pass "mypassword"
set fd [open /home/test.txt r]
set host [read $fd]
foreach line $host {
ssh -o StrictHostKeyChecking=no -n [email protected]$host 'ls; pwd'
expect "User:" { send "${username}\r" }
expect "root's Password:" { send "${pass}\r" }
expect eof
}
Ошибка возвращается
./expect.sh
spawn ssh -o StrictHostKeyChecking=no -n [email protected]
10.1.1.2
'ls
invalid command name "pwd'"
while executing
"pwd' "
("foreach" body line 3)
invoked from within
"foreach line $host {
Спасибо. Я пробовал с двойными кавычками, и ошибка больше не возникает. Однако сценарий по-прежнему запрашивает пароль. Результат возвращается, как показано ниже. - spawn ssh -o StrictHostKeyChecking = no -n [email protected] 10.1.1.2 ls; pwd Предупреждение: Постоянно добавляется '10 .1.1.1 10.1.1.2 '(RSA) к списку известных хостов. [email protected] 10.1.1.2 – user3331975