如何将ssh的输出发送到/ dev / null

时间:2012-08-13 13:24:34

标签: linux bash shell

我有一个想要用ssh连接远程服务器的命令。我的命令是

"ssh -o PasswordAuthentication=no $REMOTE_HOST_IP > /dev/null 2>&1"

当这工作时,真正的消息来自“权限被拒绝”。这是真正的消息,但我不想在控制台上看到消息,所以我将其重定向到/dev/null.But仍然来了。问题是什么

编辑: 我按照你的说法尝试并在/ dev / null之前使用2& 1但仍然无法正常工作。但奇怪的是它适用于我的朋友计算机

已解决:问题是我将命令分配给变量并将其作为$ command.But运行,当它设置为“”重定向不起作用时

4 个答案:

答案 0 :(得分:2)

查看-n选项

-n      Redirects stdin from /dev/null (actually, prevents reading from
         stdin).  This must be used when ssh is run in the background.  A
         common trick is to use this to run X11 programs on a remote
         machine.  For example, ssh -n shadows.cs.hut.fi emacs & will
         start an emacs on shadows.cs.hut.fi, and the X11 connection will
         be automatically forwarded over an encrypted channel.  The ssh
         program will be put in the background.  (This does not work if
         ssh needs to ask for a password or passphrase; see also the -f
         option.)

甚至在-N

 -N      Do not execute a remote command.  This is useful for just for‐
         warding ports (protocol version 2 only).

答案 1 :(得分:0)

尝试这样做(移动2>&1重定向stderr,然后再发送到/ dev / null):

 "ssh -o PasswordAuthentication=no $REMOTE_HOST_IP 2>&1 > /dev/null"

请注意,您正使用2>&1将stderr重定向到stdout。如果您只想将stderr重定向到/ dev / null,则只需使用2> /dev/null

关于IO Redirection here的良好信息。

答案 2 :(得分:0)

ssh -o PasswordAuthentication=no $REMOTE_HOST_IP 2> /dev/null

答案 3 :(得分:0)

尝试

ssh -o PasswordAuthentication=no $REMOTE_HOST_IP &>/dev/null