最近项目在上线,有从准生产环境切换ip到生产环境的机器迁移以及重新开通机器端口的情况,在切换环境后,需要重新测试已申请的端口、ip是否正确开通并且可以通信,通常使用telnet做一些端口的查看,这里有一个简单的脚本,用来批量执行telnet命令,并统计结果,shell新手,有问题的地方,还请大家指出,拍砖。
#!/bin/bash
BASEDIR=`dirname $0`
BASEDIR=`cd $BASEDIR;pwd`
result_dir=$BASEDIR/result
telnet_info=$1
for line in `cat $BASEDIR/$telnet_info`
do
ip=`echo $line | awk 'BEGIN{FS="|"} {print $1}'`
port=`echo $line | awk 'BEGIN{FS="|"} {print $2}'`
echo "(sleep 1;) | telnet $ip $port"
(sleep 1;) | telnet $ip $port > $result_dir/telnet_result.txt
successIp=`cat $result_dir/telnet_result.txt | grep -B 1 \] | grep [0-9] | awk '{print $3}' | cut -d '.' -f 1,2,3,4`
if [ -n "$successIp" ]; then
echo "$successIp|$port" >> $result_dir/telnet_alive.txt
fi
done
cat $BASEDIR/$telnet_info $result_dir/telnet_alive.txt | sort | uniq -u > $result_dir/telnet_die.txt
目录结构如下:
pnlorf@pnlorf-ubuntu:~/telnet_script$ ll
总用量 20
drwxr-xr-x 3 pnlorf pnlorf 4096 4月 30 23:41 ./
drwxr-xr-x 24 pnlorf pnlorf 4096 4月 30 23:41 ../
drwxr-xr-x 2 pnlorf pnlorf 4096 4月 30 23:22 result/
-rw-r--r-- 1 pnlorf pnlorf 14 4月 30 23:20 telnet_info.txt
-rw-r--r-- 1 pnlorf pnlorf 669 4月 30 23:22 telnet.sh
其中,result文件夹下保存执行结果,telnet.sh为上面脚本,telnet_info.txt代表要telnet的ip和端口,以|分隔。
如:
127.0.0.1|631
具体脚本文件见github: https://github.com/pnlorf/linux