如何删除“与 xx.xxx.xx.xxx 的连接已关闭”消息?

如何删除“与 xx.xxx.xx.xxx 的连接已关闭”消息?
#!/bin/bash

ssh -t $SSH "
    some
    commands
"

“与 xx.xxx.xx.xxx 的连接已关闭”消息来自哪里?即使使用 result=,我也无法阻止它ssh ...

答案1

这是来自 SSH 的。您之所以看到它,是因为你给了开关-t,这会强制 SSH 分配一个伪终端用于连接。传统上,SSH 显示该消息以明确表示您不再与远程主机上的 shell 交互,这通常仅在 SSH 分配了伪终端时才会出现。

答案2

如果您添加-o LogLevel=QUIET到 SSH 命令行,该消息应该会消失:

ssh -o LogLevel=QUIET -t $SSH "
      some 
      commands
"

您还可以将其添加到~/.ssh/config文件中,作为一行内容LogLevel QUIET

答案3

我知道这是一个相当老的问题但它在搜索中出现。

更好的答案在这里:当使用 expect 脚本中的 interact 处理 ssh 时,如何在关闭 ssh 时隐藏或编辑消息

基本上,使用该ssh -q选项 - 它对我来说非常完美。

答案4

其他地方提到了使用“-q”或“-oLogLevel=quiet”或“2>/dev/null”,但这些解决方案将抑制所有 SSH 错误消息。最好看到相关错误,但抑制“连接”消息。此示例将显示错误并抑制“连接”消息(在 Bash 中):

ssh -t -oLogLevel=error myhost mycommand 2> >(grep -v '^Connection to' 1>&2)

相关内容