如何使用Chef运行远程SSH命令?例如,将以下命令放入配方
ssh -T user@host.com <<'ENDSSH'
cat /etc/*-release
ENDSSH
使用execute
资源
execute "some_resource" do
command "ssh -T user@host.com <<'ENDSSH'
cat /etc/*-release
ENDSSH"
action :run
end
结果
warning: here-document at line 0 delimited by end-of-file (wanted `ENDSSH')
但我没有尝试将bash
与ENDSSH
一起使用。在使用EOT
资源时,使用EOH
似乎与预期的外部bash
冲突。这是否可以使用Chef,或者Mixlib::ShellOut
的某些内容更适合解决在使用HEREDOC
时使用A B C D E
1 q 2 3 4
1 t 5 3 5
1 r 1 2 5
2 r 3 1 3
2 t 8 1 3
2 q 1 2 3
3 t 1 1 2
3 r 2 1 2
3 r 3 1 1
添加或解析的缩进,我认为这是原因?无论哪种情况,稳定性似乎都值得怀疑。
谢谢!
答案 0 :(得分:1)
我认为@coderanger在评论中有最好的答案(&#34;你几乎肯定不应该和Chef#34做这件事),但仅仅是为了完整性&#39;为此,我相信你的字符串中的换行符没有被正确转义。尝试这样的事情:
execute "some_resource" do
command <<-HEREDOC
ssh -T user@host.com <<\'ENDSSH\'
cat /etc/*-release
ENDSSH
HEREDOC
end