ожидать, что скрипт работает при вызове по отдельности, но не как солт-состояние - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь сделать SCP, а также SSH через ожидают.Приведенный ниже сценарий работает, если я вызываю его напрямую из терминала, например /usr/bin/expect myexpect.sh, но когда я запускаю его с использованием соли, первая команда scp работает там, где вторая ssh не работает.

myexpect.sh

#!/usr/bin/expect -f

set timeout 240

spawn scp apps.tar.gz /srv/salt/integration/serverclass_merged.conf foo@10.10.10.10:/home/foo
expect "password:"
send "password\n";
expect eof

spawn ssh -o StrictHostKeyChecking=no foo@10.10.10.10 "cd /home/foo;tar --strip-components=1 -xzvf apps.tar.gz -C /opt/apps/;cp serverclass_merged.conf /opt/local/serverclass.conf"
expect "assword:"
send "password\r"
interact

Соответствующее состояние соли выглядит следующим образом:

st.sls

copy_apps:
  cmd.run:
    - name: /usr/bin/expect /home/ocdn_adm/myexpect.sh

1 Ответ

0 голосов
/ 05 июня 2018

Я ничего не знаю о , но я подозреваю, что он не запускает ваш сценарий Expect от pty.Поэтому замените interact на expect eof (или expect -timeout 12345 eof при необходимости).interact работает только когда stdin находится на tty / pty.

...