我有这个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身份运行它),并且我已经尝试更改所有涉及的文件和目录的权限和所有权。
答案 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