Nmap 检查端口是否在 bash 中打开

Pet*_*nik 1 bash shell-script nmap test

我想制作一个脚本来检查服务器上的端口是否打开。如果不开放,请待会儿。如果打开继续。使用中断条件是“主机已启动”存在而不是“关闭”。我认为连接没问题。问题是 grep 没有按预期工作。

我尝试过以下操作:

while true; do
 NMAP=$(nmap -p 1700 router.eu.thethings.network)
 if [[$NMAP | grep "Host is up" -ne ""]] && [[$NMAP | grep "closed" -eq ""]]; then
    echo "connection!!!"
    break
 fi


 echo "waiting for connectiong"
 done
Run Code Online (Sandbox Code Playgroud)

我在树莓派 jessie 系统上运行它。

小智 6

nmap -p 1700 router.eu.thethings.network
Run Code Online (Sandbox Code Playgroud)

如果主机网络已启动并且端口上没有任何内容侦听,则将打印“主机已启动”。使用nc来代替:

if nc -w1 -z router.eu.thethings.network 1700; then
  echo "Port is listening"
else
  echo "Port is not listening"
fi
Run Code Online (Sandbox Code Playgroud)