用于检查开放端口的简单 bash脚本

用于检查开放端口的简单 bash脚本

我在 bash 中完成了这个脚本:

probe='nc -zv localhost 19997'
output=' grep -c 'succeeded' $probe'
if [ $output == '0' ]
then
     echo 'Client online'
else
     echo 'Offline'
fi

该脚本的目的是通过 netcat 检查客户端是否通过反向 ssh 连接到端口 19997 上的我的服务器,如果这是检测器,则打印一条肯定消息。数控会打印

 Connection to localhost 19997 port [tcp/*] succeeded!

如果它检测到客户端,我只想 grep 'succeeded' 作为已建立连接的关键字,并通过 grep 的退出代码触发 if 语句。但是当我运行这个脚本时我得到:

test.sh: line 3: [: too many arguments

我哪里做错了?

答案1

您可以直接测试命令的结果,如下所示:

if ( nc -zv localhost 19997 2>&1 >/dev/null ); then
    echo 'Online'
else
    echo 'Offline'
fi

子外壳( ... )不是必需的,但我喜欢在像这样的清洁度测试时使用它们。

有关退出代码和测试的更多阅读,请参阅:

相关内容