[工具] Shell 批量检测服务器 TCP 端口的联通状态 (nc 版)

介绍

基本信息

作者:朱明宇
名称:批量检测服务器 TCP 端口的联通状态
作用:批量检测服务器 TCP 端口的联通状态

使用方法

1. 端口清单 $portlist 每 1 个端口占用 1 行,格式为:<IP address corresponding to the port number to be connected>:<port number to connect>:<port functions>
2. 在此脚本的分割线内写入相应的内容,并和此脚本放在同一目录下
3. 给此脚本添加执行权限
4. 执行此脚本,并将要测试的服务器 IP 地址跟在脚本的后面,例:. <script> <server IP address 1> <server IP address 2> ……

脚本分割线里的变量

portlist=tcp_ports.txt #存放要测试的 TCP 端口的文件

注意

1. 此脚本执行前必须要先保证执行本脚本的用户能无密码 ssh 远程这些远程服务器
2. 执行此脚本前确保 nc 命令已经安装

脚本

#!/bin/bash

####################### Separator ########################

portlist=tcp_ports.txt

####################### Separator ########################

for hosts in $*
do

        echo $hosts
        ssh $hosts "which nc" &> /dev/null

        if [ $? -ne 0 ];then
                echo -e "\033[31m$hosts can not use nc !!!!!!!!!!\033[0m"
                continue
        fi

        for line in `cat $portlist`
        do
                ips=`echo $line | awk -F':' '{print $1}'`
                ports=`echo $line | awk -F':' '{print $2}'`
                remarks=`echo $line | awk -F':' '{print $3}'`

                ssh $hosts "nc -z -w 3 $ips $ports"

                if [ $? -ne 0 ];then
                        echo -e "\033[31m$ips $ports $remarks can not be connected !!!!!!!!!!\033[0m"
                else
                        echo -e "\033[32m$ips $ports $remarks can be connected\033[0m"
                fi

        done

done