2015-03-24 2 views
1

У меня есть сценарий, который должен взаимодействовать с двумя разными хостами (клиент & server), войти в систему и выполнить несколько разных команд на обоих из них одновременно.ожидать сценариев с отключенным экраном

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

Я использовал этот сценарий, и, кажется, что все работает нормально:

#!/usr/bin/expect -f 

spawn screen -S server ssh [email protected] 

set timeout 30 
expect "assword" { send "toor\r" } 
expect -re "(\\\$ |#)" 
send "iperf3 -s\r" 
interact 

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

я сделал:

spawn screen -d -m -S server ssh [email protected] 

но это показывает мне ошибку: spawn id exp6 не открывается.

что делать, чтобы решить эту проблему?

как нижняя строка. Мне нужно использовать ожидаемый результат с невидимым экраном.

Заранее спасибо.

ответ

1

Просто для других, столкнувшихся с одной и той же проблемой, мне удалось решить эту проблему, и я думаю, что проблема заключалась в следующем: ожидание не может взаимодействовать с «тем, что он не видит», то есть с отсоединенным экраном.

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

Сценарий стал таким:

#!/usr/bin/expect -f 

set timeout 30 

spawn screen -S server ssh <USER_NAME>@<IPADDRESS> 

expect "assword" { send "<YOUR_PASSWORD>\r" } 

expect -re "(\\\$ |#)" 

send "<YOUR_COMMAND>\r" 

send "\01d" # detach from the screen (ctrl-a + d) 

interact  # cause the screen not to close. 

Надежда, что было полезно.