我想将ssh命令的输出存储为字符串,以便我可以围绕它编写脚本,如下所示:
ssh_command = %x(ssh -t -t user@ip.ip.ip.ip)
问题在于'ssh_command'实际上似乎并不存储任何字符串。 它应该存储(对于无效的IP):
ssh: connect to host ip.ip.ip.ip port 22: No route to host
它确实在irb中输出它,但不是'ssh_command'变量引用的字符串。
有趣的是,以下工作符合预期:
uname_cmd = %x(uname -a)
在这种情况下,当我打印'uname_cmd'时,我会按预期获得字符串输出。
所以我的问题是,有没有办法将ssh命令的输出存储为常规字符串,就像它与uname一起工作?
谢谢,
答案 0 :(得分:2)
%x(..)
捕获stdout,而ssh错误消息写入stderr。
您可以将stderr重定向到stdout,以便使用shell重定向语法2>&1
捕获它们:
ssh_command = %x(ssh -t -t user@ip.ip.ip.ip 2>&1)