需求
需要测试某一台服务器到100台个服务器的连通性
方案
采用”在源服务器上,telnet 目标服务器ip 端口“的方法进行测试,如果出现Connected ,表明网络连通性没有问题,否则表明网络连通性存在问题,需要检查网络配置。
痛点
需要登录源服务器,依次对所有目标服务器的端口进行telnet测试,本次需要测试100台服务器,就需要依次测试100次,非常耗时!
解决方案
通过shell脚本,自动化批量检测连通性。
步骤1:将所有目标服务器的ip和端口填入iplist.txt文本中,格式如下:
步骤2:编写shell脚本check_telnet.sh,代码如下
cat iplist.txt | while read -r line
do
ip=`echo $line | awk '{print $1}'`
port=`echo $line | awk '{print $2}'`
timeout_second=5
result=`echo -e "\n" | timeout --signal=9 $timeout_second telnet $ip $port 2>/dev/null | grep Connected | wc -l`
if [ $result -eq 1 ]; then
echo "YES: $line"
else
echo "NO: $line"
fi
done
步骤3:将iplist.txt和check_telnet.sh上传到服务器上,放在同一个目录
执行命令
sh check_telnet.sh | grep NO
显示出来的结果就是网络不连通的服务器ip和端口信息
也可以将结果直接输出到txt文件
执行命令
sh check_telnet.sh | grep NO > result.txt
注意
1、如果要直接使用本脚本,iplist.txt文件的最后一行需要一个空行
2、脚本格式换行符必须是 LF,不能是CRLF
即:把脚本格式转换成unix即可,用UltraEdit可以转