介绍
基本信息
作者:朱明宇
名称:批量检测服务器 TCP 端口的联通状态
作用:批量检测服务器 TCP 端口的联通状态,并将此服务器无法联通的端口存储到 $checklist 文件里
使用方法
1. 将此脚本和端口清单 $portlist 文件放在同一目录下
2. 端口清单 $portlist 每一个端口占用一行,格式为:<IP address corresponding to the port number to be connected>:<port number to connect>:<port functions>,并和此脚本放在同一目录下
3. 在此脚本的分割线内写入相应的内容
4. 给此脚本添加执行权限
5. 执行此脚本,并将要测试的服务器 IP 地址跟在脚本的后面,例:. <script> <server IP address 1> <server IP address 2> ……
脚本分割线里的变量
1. portlist=tcp_ports.txt #存放要测试的 TCP 端口的文件
2. checklist=tcp_ports_checklist.txt #存放测试结果的文件
注意
1. 此脚本执行前必须要先保证执行本脚本的用户能无密码 ssh 远程这些远程服务器
2. 此脚本会清空 $checklist
3. 执行此脚本前确保 telnet 命令已经安装
4. 执行此脚本可能有些慢
脚本
#!/bin/bash
####################### Separator ########################
portlist=tcp_ports.txt
checklist=tcp_ports_checklist.txt
####################### Separator ########################
echo > $checklist
maxnum=`cat $portlist | wc -l`
for hosts in $*
do
echo $hosts >> $checklist
for i in `seq 1 $maxnum`
do
ips=`sed -n $[i]p $portlist | awk -F':' '{print $1}'`
ports=`sed -n $[i]p $portlist | awk -F':' '{print $2}'`
remarks=`sed -n $[i]p $portlist | awk -F':' '{print $3}'`
ssh $hosts "(sleep 1;) | telnet $ips $ports 2>&1" | grep 'timed out' >> $checklist
if [ $? == 0 ];then
echo "`sed -n $[i]p $portlist`" >> $checklist
echo >> $checklist
fi
done
echo >> $checklist
done