linux 批量telnet机器端口

最近项目在上线,有从准生产环境切换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 430 23:41 ./
drwxr-xr-x 24 pnlorf pnlorf 4096 430 23:41 ../
drwxr-xr-x  2 pnlorf pnlorf 4096 430 23:22 result/
-rw-r--r--  1 pnlorf pnlorf   14 430 23:20 telnet_info.txt
-rw-r--r--  1 pnlorf pnlorf  669 430 23:22 telnet.sh

其中,result文件夹下保存执行结果,telnet.sh为上面脚本,telnet_info.txt代表要telnet的ip和端口,以|分隔。
如:

127.0.0.1|631

具体脚本文件见github: https://github.com/pnlorf/linux

你可能感兴趣的:(Linux)