stderr和stdout的ssh?
我不清楚有关标准输出和ssh beacasuse的标准错误,如果我执行说:stderr和stdout的ssh?
SSH用户@ remotemachine_ip“一些命令” 我得到的输出瞬间在屏幕上还是可能会出现一些错误
1 .loged在使用ssh
2.远程命令被远程机器显示在远程计算机(或标准错误STDOUT),我可以看到
3.输出上执行。 然后它回到本地机器。
或
输出回来到本地机器上的标准输出,并且可以附加到本地计算机上的文件。
所以,如果我在本地计算机有一个for循环
for i in ip1 ip2
do
ssh [email protected]_ip "some command"
done
什么是错误重定向的最佳途径,就是它依赖于,同时,直到循环
什么如果不是SSH我我使用一些expect脚本
expectscript.exp [email protected]_ip "some command"
SSH
是一种协议,它可以让您登录到远程町就像你会在本地机器上登录一样。
如果您运行登录shell本地机器(说的Ctrl + Alt + F1~6
之一),它开始为用户和输出(stdout
和stderr
)的新外壳顺利,你的显示器上。
现在我们来看看您的SSH情况,这些步骤与上一次类似,只有一个区别,而不是将输出(stdout
和stderr
)再次发送到监视器,服务器将数据发送回机器从中登录 - 到SSH client
。客户端在本地机器上运行,因此只在本地机器的显示器上显示相同的输出。
但是如果你要将stdout
和/或stderr
重定向到一个文件,当你在远程机器上的shell中时,该文件将在远程机器上,因为你真正的程序运行在远程机器上执行。
顺便说一句SSH
不仅仅是向/从远程机器发送/接收数据,它还加密数据和更多。
谢谢@Tux如果可能的话,你可以给一个循环内的重定向的例子多个ips.does循环的问题,因为我有多个ipaddress重定向和输出被附加到一个日志文件,所以我想了解ssh如何工作 – munish 2013-03-02 08:43:54
for ip in ip1 ip2
do
ssh [email protected]$ip "some command" > output.$ip 2>&1
done
将把输出放在每个IP的单独文件中。
for ip in ip1 ip2
do
ssh [email protected]$ip "some command"
done > output 2>&1
将把所有的输出放在一个文件中。
什么是错误的重定向
最好的方式,如果我专注逼到标准错误重定向,下面可能是解决方案之一:
for ip in ip1 ip2
do
ssh [email protected]$ip "some command" >output.$ip 2>output.$ip.err
done
SSH看起来支持远程标准输出到本地stdout和远程stderr到本地stderr,以便上面的脚本按我的预期运行。
如果你把
ssh [email protected]$ip "some command" >output.$ip 2>output.$ip.err
的内预计脚本stdout
重定向和stderr
将被忽略(预计将截取重定向输出。里面的期待脚本,你可以添加LOG_USER 0并调用你的脚本与stdout
重定向,这将工作(尽管stderr
无路可走)
你的问题不是很清楚。你想要做什么?没有单一的“最佳方式”,这取决于你需要什么。 – Barmar 2013-03-02 08:22:32
我真的有问题,在多个ipaddress的for循环中指挥ssh的输出,但我只得到第一个ip的输出(如果重定向在for循环内)或最后一个ip(在redircetion不在的情况下方) – munish 2013-03-02 08:41:02
您发布的代码中没有重定向,因此很难说出您做错了什么。将问题发布到代码中,不要只是笼统地描述它。 – Barmar 2013-03-02 09:07:40