Ожидайте, что не работает, используя аргументы -c

966
G Gordon Worley III

Итак, у меня есть сценарий ожидаемого типа, который работает:

#!/usr/bin/expect spawn scp me@myserver.com:* . expect { password:  } 

Исходя из справочной страницы для ожидаемого, я думаю, что я должен иметь возможность сделать это вместо командной строки, чтобы выполнить то же самое

expect -c "spawn scp me@myserver.com:* ." -c "expect }" 

Но это возвращается в терминал

spawn scp me@myserver.com:* . me@myserver.com's password:  

а затем через несколько секунд сдается без сообщения об ошибке и никогда ничего не делает.

Заметка

Да, я хорошо знаю, что я не должен делать это с помощью scp и должен вместо этого использовать ключи.

0

1 ответ на вопрос

0
glenn jackman

Я не уверен, но я подозреваю, что множественные -cаргументы являются проблемой. Вы можете использовать here-doc для передачи скрипта на stdin:

expect <<'END' spawn scp me@myserver.com:* . expect { password:  } END 

Одинарные кавычки вокруг первого 'END'будут цитировать весь документ.

по сути, я сделал это, но вместо этого использовал эхо, чтобы передать ожидаемое G Gordon Worley III 10 лет назад 0

Похожие вопросы