【问题标题】:How to send stdout of a ssh command in a file?如何在文件中发送 ssh 命令的标准输出?
【发布时间】:2017-10-31 08:37:43
【问题描述】:

我想将 ssh 命令的标准输出发送到一个文件中,但是当我读取它时这个文件仍然是空的。

# ssh -o "BatchMode=yes" -o "ConnectTimeout=5" admin@10.10.10.10 > /var/tmp/.result.txt
ssh: connect to host 10.10.10.10 port 22: Connection timed out
# cat /var/tmp/.result.txt
#

如何做到这一点?谢谢。

【问题讨论】:

  • 您的连接失败,您看到的是错误输出。您希望它重定向什么输出?
  • 哎呀,你的回答让我意识到我必须发送标准错误!实际上我想在我的文件中发送错误输出...... :)
  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super UserUnix & Linux Stack Exchange 会是一个更好的提问地点。
  • @jww 这个命令可以很好地构成 shell 脚本的一部分,所以我看不出它是如何偏离主题的。
  • @arco444 - 正如所写的那样,它只是另一个寻求无关命令帮助的问题。这些问题有更合适的网站。我也知道试图让他们回到主题的“脚本”技巧。除非提供真实脚本的代码,否则我通常不会动摇。

标签: linux bash shell ssh


【解决方案1】:

如果您想将常规 stdout 传递给文件,您的命令会执行此操作。 你的问题是你得到一个错误;并将其打印到 stderr。要传递标准错误,您需要将其添加到您的命令中

ssh -o "BatchMode=yes" -o "ConnectTimeout=5" admin@10.10.10.10 > /var/tmp/.result.txt 2>1&

这告诉 bash 将输出重定向到 .results.txt,然后将 stderr 重定向到 stdout,因此它们都被打印到文件中。它重用了标准输出使用的文件描述符。

【讨论】:

    猜你喜欢
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2018-09-09
    • 1970-01-01
    • 2016-03-17
    • 2014-02-02
    • 1970-01-01
    相关资源
    最近更新 更多