期望脚本中的bash命令重定向失败,权限被拒绝(spawn ssh user @ host command> outfile)

时间:2016-12-08 18:20:16

标签: linux bash ssh permissions expect

我有这个expect脚本

#!/usr/bin/expect -f
set pass [ exec echo my_phrase | gpg --batch --quiet --yes --passphrase-fd 0 -d /root/.password-store/ssh/my_pgp_store.gpg ]
spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no -i /home/myuser/.ssh/id_rsa ssh-user@remote-host.com /some/remote/script > /home/myuser/ssh.output
expect "*?assword:*"
send -- "$pass\r"
interact

应该读取gpg加密密码,并使用它通过ssh调用远程脚本(有很多原因我需要这样做)。现在,我的问题是每当我运行此脚本时,ssh连接都已正确设置,但是在写入ssh调用的输出时出错,错误

bash: /home/myuser/ssh.output: Permission denied

我正在以root身份运行脚本(因为我必须以root身份运行它),并且我已经尝试更改所有涉及的文件和目录的权限和所有权。

1 个答案:

答案 0 :(得分:1)

redir char >对于expect spawn命令并不特殊。命令

spawn ssh user@host command > outfile

相同
spawn ssh user@host "command > outfile"

并且redir > outfile将在远程主机上执行。

试试这样:

spawn bash -c "ssh user@host command > outfile"
expect "assword:"
send -- "$pass\r"
interact