批量检测端口连通性

最简单的办法当然还是使用ansible。

不过客户的一些生产环境没有使用ansible,就写了个简单的脚本测试了下。

关注点:

  1. 开头取了eth0这个网卡的IP地址。
  2. 在同一个目录下保存 ip_info这个文件,每行填写ip:port
#!/bin/bash

LOCALIP=`ifconfig -a | grep eth0 -A 2|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"` 

check_telnet(){
for ip_port in $(cat ./ip_info|grep -v '^#')
do
    CHECK_PORT=$(echo $ip_port|awk -F: '{print $2}')
    CHECK_IP=$(echo $ip_port|awk -F: '{print $1}')
    echo -e "\n"| telnet $CHECK_IP $CHECK_PORT |grep "Connected to\|Escape character" > /dev/null
    if [ $? -eq 0 ];then
        echo -e "$CHECK_IP\t $CHECK_PORT\t ok"
    else
        echo -e "$CHECK_IP\t $CHECK_PORT\t error!!!"
    fi
done
}

check_telnet > result.log

echo "=========$LOCALIP============="
cat result.log

VMware、KVM、Docker虚拟化的异同 - 编程技术宇宙 一个 ssh 设置免密登陆脚本