我试图了解grep -v grep
以下内容:
ssh $server -p $port -o "ConnectTimeout 5" | grep -v "Connection refused" | grep "Connected to" | grep -v grep | wc -l
或者有没有更好的方法来查找 TCP 连接测试?
我试图了解grep -v grep
以下内容:
ssh $server -p $port -o "ConnectTimeout 5" | grep -v "Connection refused" | grep "Connected to" | grep -v grep | wc -l
或者有没有更好的方法来查找 TCP 连接测试?
如果要检查是否可以在 5 秒内建立 ssh 连接并运行命令,只需执行以下操作:
你的命令是没有意义的。由于您没有提供在远程服务器上运行的命令,
ssh
因此将在rlogin
请求伪终端并启动远程用户的登录 shell(或可能是 ForcedCommand)的模式下运行。然后,您将几个过滤器应用于输出:
grep -v "Connection refused"
: 从输出中过滤掉任何包含Connection refused
. 这没有什么意义,因为如果出现该错误消息,它将被写入 stderr,而不是grep
正在过滤的标准输出,而且还因为:grep "Connected to"
: 只选择包含Connected to
. 这也将排除包含的行,Connection refused
因为一行不太可能同时包含两者。grep -v grep
, 也删除包含的行grep
(这样将是包含Connected to
和grep
不包含的行Connection refused
!)wc -l
:计算结果行的数量(因此,除了那些也包含or的行之外ssh
,包含的 stdout 中的行)。请注意,只有在连接关闭、shell 会话终止时(例如用户输入. 但是话又说回来,由于用户不会看到任何输出(因为它最终会发生),用户将几乎没有线索表明他需要输入以终止该会话。Connected to
grep
Connection refused
wc
exit
wc
exit
grep
它从前一个管道输出中排除包含字母序列的所有行。