繁体   English   中英

shell脚本telnet在第一点跳过while循环

[英]shell script telnet skip the while loop at first point

我正在使用以下shell脚本来检查csv文件中的ip和端口集。 但是它总是打破while循环,只显示第一个结果。 但是脚本也可以毫无错误地到达最后一行。 如何解决telnet中的环路中断问题?

echo "starts"

    while read p; do
        if [ ! -z "$p" -a "$p" != " " ]; then
            IP=`echo $p | cut -d',' -f1`
            PORT=`echo $p | cut -d',' -f2`

            TELNET_STR=`telnet "$IP" "$PORT" | grep "Connected"`

            if [ ! -z "$TELNET_STR" -a "$TELNET_STR" != " " ]; then
                echo '[success]:'$IP':'$PORT
            else 
                echo '[failed]:'$IP':'$PORT
            fi
        fi
    done <telnet.csv

    echo "ends"

telnet.csv

234.253.245.23,80,1
234.089.108.216,8080,1
234.23.23.216,21,1

如果成功或失败,则telnet命令将退出父外壳。 您可以使用fork在后台运行命令。

()-在子shell中运行命令。

&-将函数调用置于后台。

睡眠-等待子外壳完成的时间。

 while read p; do
        if [ ! -z "$p" -a "$p" != " " ]; then
            IP=`echo $p | cut -d',' -f1`
            PORT=`echo $p | cut -d',' -f2`
    (  sleep 2;
       TELNET_STR=`telnet "$IP" "$PORT" | grep "Connected"`
            if [ ! -z "$TELNET_STR" -a "$TELNET_STR" != " " ]; then
                echo '[success]:'$IP':'$PORT
            else
                echo '[failed]:'$IP':'$PORT
            fi
 ) &
        fi
    done <telnet.csv

产量

 [success]:192.168.12.14:22

 telnet: Unable to connect to remote host: Network is unreachable
 [failed]:234.253.245.23:80

 telnet: could not resolve 234.089.108.216/8080: Name or service not known
 failed]:234.089.108.216:8080

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM