如果nc connetion在bash中成功,则停止脚本

时间:2016-11-24 04:49:31

标签: bash if-statement netcat

如果与netcat的连接成功,我该如何停止我的脚本? 例如,如果Connection to 192.168.2.4 21 port [tcp/ftp] succeeded!我不确定该文本字符串是什么。

#!/bin/bash

#Find first 3 octets of the gateway and set it to a variable.

GW=$(route -n | grep 'UG[ \t]' | awk '{print $2}' | cut -c1-10)

#loop through 1 to 255 on the 4th octect 
for octet4 in {1..255}
do
        sleep .2
        nc -w1 $GW$octet4 21

done

2 个答案:

答案 0 :(得分:0)

您可以测试nc退出状态。

例如:

nc -w1 $GW$octet4 21
[[ "$?" -eq 0 ]] && exit

如果命令nc成功并返回零退出状态,该状态隐式存储在$? shell变量中,exit脚本。如果您想跳出循环,请仅使用break代替exit

答案 1 :(得分:0)

您可以使用nc的返回码,然后在等于0时中断。这是一个示例脚本,它会一直迭代,直到它击中谷歌DNS服务器IP 8.8.8.8然后中断。

#!/bin/bash

for i in {1..10}; do
    sleep 1;
    echo Trying 8.8.8.$i
    nc -w1 8.8.8.$i 53
    if [ $? == 0 ]; then
        break
    fi
done

您的脚本如下所示:

#!/bin/bash

#Find first 3 octets of the gateway and set it to a variable.

GW=$(route -n | grep 'UG[ \t]' | awk '{print $2}' | cut -c1-10)

#loop through 1 to 255 on the 4th octect 
for octet4 in {1..255}
do
        sleep .2
        nc -w1 $GW$octet4 21
        if [ $? == 0 ]
        then
            break
        fi
done