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命令退出父shell,如果成功或失败。
您可以使用 fork 运行 后台命令。
() - 运行 sub shells.
中的命令
& - 将函数调用置于后台。
睡眠 - 子 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
我正在使用以下 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命令退出父shell,如果成功或失败。 您可以使用 fork 运行 后台命令。
() - 运行 sub shells.
中的命令& - 将函数调用置于后台。
睡眠 - 子 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