在脚本继续之前,我需要在bash脚本中使用远程服务器上的检查端口。 我在这里和互联网上搜索,但我找不到适合我的答案。
我使用的是RHEL 7.2虚拟机,因此我在-z
命令或nc
内没有/dev/tcp/
参数。
另外nc remote.host.com 1284 < /dev/null
也不起作用,因为每次我得到退出代码1。
基本上我需要这样的东西:
/bin/someting host port
if [ $? -eq 0 ]; then
echo "Great, remote port is ready."
else
exit 1
fi
答案 0 :(得分:1)
nmap怎么样?
SERVER=google.com
PORT=443
state=`nmap -p $PORT $SERVER | grep "$PORT" | grep open`
if [ -z "$state" ]; then
echo "Connection to $SERVER on port $PORT has failed"
else
echo "Connection to $SERVER on port $PORT was successful"
exit 1
fi
请注意您必须安装nmap。
yum install nmap #Centos/RHEL
apt-get install nmap #Debian/Ubuntu
我们可以从source编译和安装。
答案 1 :(得分:0)
您可以使用Bash本身使用它内置的/ dev / tcp设备文件来完成此操作。 如果端口关闭,以下内容将抛出连接被拒绝的消息。
: </dev/tcp/remote.host.com/1284
可以像这样编写脚本:
(: </dev/tcp/remote.host.com/1284) &>/dev/null && echo "OPEN" || echo "CLOSED"
bash参考手册中/dev/tcp
的详细信息:https://www.gnu.org/software/bash/manual/html_node/Redirections.html