【问题标题】:stderr and stdout of ssh?ssh的标准错误和标准输出?
【发布时间】:2013-03-02 08:02:27
【问题描述】:

如果我执行说,我不清楚 ssh 的标准输出和标准错误:

ssh user@remotemachine_ip "一些命令" 我立即在屏幕上得到输出,或者可能是一些错误

1.用ssh登录

2.远程命令在远程机器上执行

3.输出显示在我可以看到的远程机器(stderr 或 stdout)上。 然后它回到本地机器。

输出返回到本地机器的标准输出,可以附加到本地机器上的文件中。

所以如果我在本地机器上有一个 for 循环

for i in ip1 ip2
do
ssh user@remotemachine_ip  "some command" 
done

错误重定向的最佳方式是什么,它是否依赖于 for、while、until 循环

如果我使用一些期望脚本而不是 ssh 会怎样

expectscript.exp user@remotemachine_ip "some command"

【问题讨论】:

  • 你的问题不是很清楚。你具体想做什么?没有单一的“最佳方式”,这取决于您需要什么。
  • 我确实在将 ssh 的输出定向到多个 ipaddress 的 for 循环中时遇到了问题,但我只获得了第一个 ip 的输出(如果重定向在 for 循环内)或最后一个ip(以防重定向在外面)
  • 您发布的代码中没有重定向,因此很难判断您做错了什么。贴出有问题的代码,不要笼统地描述。

标签: ssh expect output


【解决方案1】:
for ip in ip1 ip2
do
  ssh user@$ip "some command" > output.$ip 2>&1
done

将为每个 IP 将输出放在单独的文件中。

for ip in ip1 ip2
do
  ssh user@$ip "some command"
done > output 2>&1

将所有输出放在一个文件中。

【讨论】:

    【解决方案2】:

    SSH 是一种协议,可让您像登录本地计算机一样登录远程计算机。

    如果您在本地计算机上运行登录 shell(例如 Ctrl + Alt + F1~6 之一),它会为用户启动一个新的 shell,并且输出(stdoutstderr)会直接显示在您的监视器上。

    现在让我们看一下你的 SSH 案例,步骤与上次类似,只有一个区别,而不是将输出(同样是 stdoutstderr)发送到监视器,服务器将数据发送回到您登录的机器 - 到SSH client。客户端在您的本地计算机上运行,​​因此只会在本地计算机的监视器上显示相同的输出。

    但是,如果您要将stdout 和/或stderr 重定向到一个文件,当您在远程机器上的shell 中时,该文件将在远程机器上,因为实际程序你正在运行的是在远程机器上执行的。

    顺便说一句,SSH 不仅仅是向远程机器发送/接收数据,它还对数据进行加密等等。

    【讨论】:

    • 谢谢@Tux,如果可能的话,你能给出一个循环内多个ips.does循环重定向的例子吗?因为我有多个ipaddress的重定向问题和输出被附加到日志文件所以我想了解 ssh 的工作原理
    【解决方案3】:

    错误重定向的最佳方式是什么

    如果我只关注 stderr 重定向,以下可能是解决方案之一:

    for ip in ip1 ip2
    do
      ssh user@$ip "some command" >output.$ip 2>output.$ip.err
    done
    

    ssh 看起来支持远程 stdout 到本地 stdout 和远程 stderr 到本地 stderr,这样上面的脚本就可以按我的预期运行了。

    【讨论】:

      【解决方案4】:

      如果你放

      ssh user@$ip "some command" >output.$ip 2>output.$ip.err
      

      expect 脚本内,stdoutstderr 的重定向将被忽略(expect 将拦截重定向的输出。在 expect 脚本,您可以添加 log_user 0 并使用重定向的stdout 调用您的脚本,这将起作用(尽管stderr 无处可去)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-22
        • 1970-01-01
        • 2014-08-25
        • 2014-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-01
        相关资源
        最近更新 更多