期望脚本在单独调用时工作,但不能作为盐状态

问题描述 投票:0回答:1

我正在尝试做scp以及ssh期望。如果我直接从/usr/bin/expect myexpect.sh这样的终端调用它,下面的脚本可以工作,但是当我使用salt运行它时,第一个scp命令在第二个ssh失败的地方工作。

myexpect.sh

#!/usr/bin/expect -f

set timeout 240

spawn scp apps.tar.gz /srv/salt/integration/serverclass_merged.conf [email protected]:/home/foo
expect "password:"
send "password\n";
expect eof

spawn ssh -o StrictHostKeyChecking=no [email protected] "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
bash expect salt-stack
1个回答
2
投票

我对一无所知,但我怀疑它没有从pty运行你的Expect脚本。所以用interact(或必要时expect eof)取代expect -timeout 12345 eofinteract只有当stdin在tty / pty上时才有效。

© www.soinside.com 2019 - 2024. All rights reserved.