Экран, ожидайте и сценарий отдельного взаимодействия
Попытка написать bash-скрипт, который откроет экран, запустит приложение на python и будет взаимодействовать с взаимодействием с python, как требуется при первом запуске.
Если это невозможно на экране, я был бы рад перейти на tmux в качестве альтернативы. Я просто не очень хорош в bash-скриптинге и не имею опыта.
Вот что у меня так далеко:
sent=blah
expexec=$(/usr/bin/expect -c "/usr/bin/python /opt/app.py expect \"Interaction:\" send \"$sent\r\" interact")
/usr/bin/screen -L -dmS spawner /bin/sleep 30
/bin/sleep 1
/usr/bin/screen -S spawner -X screen screen -L -dR myDaemon
/bin/sleep 1
/usr/bin/screen -S myDaemon -X detach
/usr/bin/screen -S myDaemon -X stuff "echo $expexec"
/usr/bin/screen -S spawner -X stuff "exit\r"
Надеюсь, кто-то может мне помочь...
Выше приведена последняя итерация, в которой я попытался записать всю команду, как показано в другом примере, в переменной. Все команды на экране работают, но я не могу ожидать, что они будут корректно выполняться, искать очередь ввода и отправлять ответ.
Заранее спасибо,
JG
1 ответ
На всякий случай, если это кому-нибудь еще поможет, я подумала, что дам всем знать, как у меня это работает. Я просто разделил один сценарий на два с ожидаемой частью в своем собственном сценарии. Моя версия использует только одну переменную, но она легко масштабируема.
ожидать сценарий:
#!/usr/bin/expect
set timeout 60
set sent [lindex $argv 0]
spawn /usr/bin/python /opt/app.py
expect "Interaction:"
send "$sent\r";
interact
основной скрипт:
#!/bin/sh
# variables
sent=blah
expectScript=/path/to/expect/script
# bash screen detachment foo
/usr/bin/screen -L -dmS spawner /bin/sleep 30
/bin/sleep 1
/usr/bin/screen -S spawner -X screen screen -L -dR myDaemon
/bin/sleep 1
/usr/bin/screen -S myDaemon -X detach
# sending the command to the screen
/usr/bin/screen -S myDaemon -X stuff "$expectScript $sent\r"
# close the screen spawner
/usr/bin/screen -S spawner -X stuff "exit\r"
JG