我正在尝试通过expect 进行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] /cdn-cgi/l/email-protection:/home/foo
expect "password:"
send "password\n";
expect eof
spawn ssh -o StrictHostKeyChecking=no [email protected] /cdn-cgi/l/email-protection "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
我一无所知盐堆 /questions/tagged/salt-stack但我怀疑它没有从 pty 运行您的 Expect 脚本。所以更换interact
with expect eof
(or expect -timeout 12345 eof
如果需要的话)。interact
仅当标准输入位于 tty/pty 上时才有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)