• Linux下批量检测端口的连通性的几种方式


    1.Linux下端口的几种状态

    通常Linux下端口存在以下状态

    1. 端口开放且已经有服务占用该端口
      open
    2. 端口开放但没有服务占用该端口
      Connection refused
    3. 端口被禁用(如:防火墙限制)
      Connection timed out

    2.timeout+bash批量检测端口连通性

    背景需求:162服务器需要对197从6000到6010端口进行连通性检测

    通过查看197服务器上端口得知

    • 当前6001-6010端均被redis-server占用,
    • 6000端口当前无服务占用,
    • 人工执行iptables对6001和6005,6008端口做iptables限制,模拟端口被禁用

    iptables -A INPUT -p tcp --dport 6001 -j DROP
    iptables -A INPUT -p tcp --dport 6005 -j DROP
    iptables -A INPUT -p tcp --dport 6008 -j DROP
    

    编写小脚本对端口进行来连通性检测

    #!/bin/bash
    
    PORT_LIST="6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010"
    REMOTE_HOST=10.186.61.197
    TIMEOUT_SEC=5
    
    for PORT in $PORT_LIST
    do
        timeout $TIMEOUT_SEC bash -c "</dev/tcp/$REMOTE_HOST/$PORT" &>/dev/null; res=$?
        if [[ $res -eq 0 ]]
        then
            echo "$PORT OPEN"
        elif [[ $res -eq 1 ]]
        then
            echo "$PORT OPEN BUT NOT LISTEN"
        elif [[ $res -eq 124 ]]
        then
            echo "$PORT NOT OPEN"
        else
            echo "$PORT UNKONWN ERROR"
        fi
    done
    

    检测结果示例

    • OPEN BUT NOT LISTEN
      • 端口开放但没有服务占用该端口
    • OPEN
      • 端口开放且已经有服务占用该端口
    • NOT OPEN
      • 端口被禁用(如:防火墙限制)

    3.使用nc检测端口连通性

    [root@10-186-61-162 ~]# nc -w 5  10.186.61.197 6000 </dev/null; echo $?
    Ncat: Connection refused.
    1
    [root@10-186-61-162 ~]# nc -w 5  10.186.61.197 6001 </dev/null; echo $?
    Ncat: Connection timed out.
    1
    [root@10-186-61-162 ~]# nc -w 5  10.186.61.197 6002 </dev/null; echo $?
    0
    

    参考链接

    转载请说明出处 |QQ:327488733@qq.com
  • 相关阅读:
    leecode4:寻找两个正序数组的中位数
    leecode3:无重复字符的最长子串
    leecode2:两数相加
    KMP字符串模式匹配
    01迷宫问题
    汉诺塔问题
    微服务-基于Grpc的进程通信-Grpc异常捕获RpcException(4-4)
    React-Antd Pro增删改查
    HTTP 请求
    创业路上-1
  • 原文地址:https://www.cnblogs.com/zhenxing/p/13502090.html
Copyright © 2020-2023  润新知