Linux shell 批量验证端口连通性

脚本

bash 复制代码
#!/bin/bash
#
#database check
#set -o nounset
LOCALIP=`ifconfig | grep inet | head -1 | awk '{print $2}' | sed 's/addr\://'`
IPLIST='192.168.1.99 192.168.1.98 192.168.1.97'
PORTLIST='81 82 83 84 85 86'
check_nc(){
for CHECK_IP in $IPLIST
do
    for CHECK_PORT in $PORTLIST
        do
            nc -nz -w 1 $CHECK_IP $CHECK_PORT
            if [ $? -eq 0 ];then
                echo "$LOCALIP result $CHECK_IP $CHECK_PORT 连通"
            else
                echo "$LOCALIP result $CHECK_IP $CHECK_PORT 不连通"
            fi
        done
done
}
check_nc_7(){
for CHECK_IP in $IPLIST
do
    for CHECK_PORT in $PORTLIST
        do
            nc -n -w 1 $CHECK_IP $CHECK_PORT < /dev/null
            if [ $? -eq 0 ];then
                echo "$LOCALIP result $CHECK_IP $CHECK_PORT 连通"
            else
                echo "$LOCALIP result $CHECK_IP $CHECK_PORT 不连通"
            fi
        done
done
}
check_telnet(){
for CHECK_IP in $IPLIST
do
    for CHECK_PORT in $PORTLIST
        do
            echo  -e  "\n"| telnet $CHECK_IP $CHECK_PORT | grep Connected            if [ $? -eq 0 ];then
                echo "$LOCALIP result $CHECK_IP $CHECK_PORT 不连通"
            else
                echo "$LOCALIP result $CHECK_IP $CHECK_PORT 连通"
            fi
        done
done
}
echo "--------------------------------------"
echo "execution time : `date`"
echo "--------------------------------------"
echo "Home ip : $LOCALIP"
echo "--------------------------------------"
which nc > /dev/null
if [ $? -eq 0 ];then
    echo "------------------nc------------------"
    echo "--------------------------------------"
    cat /etc/redhat-release |grep 'release 7' > /dev/null
    if [ $? -eq 0 ];then
        check_nc_7
    else
        check_nc
    fi
else
    which telnet > /dev/null
    if [ $? -eq 0 ];then
        echo "-----------------telnet----------------"
        check_telnet
    fi
fi

此脚本考虑了nc及telnet命令,及nc在redhat 7中应用的不同。可以直接复制使用,只要修改一下IP和端口。

telnet 命令语法

telnet [主机名或IP地址] [端口号]

nc 命令语法

bash 复制代码
nc [选项] [目标IP] [端口号]

‌常用选项包括‌:

  • -l:监听模式,在目标IP上开启一个监听服务器。
  • -p:指定要使用的本地端口。
  • -e:将输入和输出重定向到程序。
  • -n:不解析主机名和端口号。
  • -v:显示详细的调试信息。
  • -z:使用零I/O模式,只扫描监听端口是否开放,不发送任何数据。
  • -u:使用UDP协议进行通信。
  • -w:设置超时时间。

‌常见用法包括‌:

  1. ‌监听一个端口‌:

    bash 复制代码
    nc -l 监听端口

    功能:将目标IP上指定端口设为监听状态,等待连接。

  2. ‌端口扫描‌:

    bash 复制代码
    nc -zv 目标IP 起始端口-结束端口

    功能:扫描目标IP上某个范围的端口,查看哪些端口处于开放状态。

  3. ‌发送和接收数据‌:

    bash 复制代码
    nc 目标IP 目标端口

    功能:与目标IP上的指定端口进行TCP连接,并通过标准输入输出发送和接收数据。

  4. ‌将文件发送给远程主机‌:

    bash 复制代码
    nc 目标IP 目标端口 < 文件名

    功能:将本地文件发送给目标IP上的指定端口。

评价

很好用,如果是国产机可能需要注释掉两行 which 语句

相关推荐
ly76897 分钟前
性能剖析与压测方法论:JMH、async-profiler 与分层瓶颈定位的可复现实验
服务器·前端·数据库·压测·jmh·性能剖析·async-profiler
风翼靓崽9 分钟前
磁盘逻辑卷扩容
linux·运维·服务器
Brilliantwxx12 分钟前
【STM32】RTC 完结篇:日期操作、闹钟中断与附录(时间戳 / 闹钟 / NTP)
服务器·c语言·stm32·单片机·嵌入式硬件·实时音视频
zincsweet12 分钟前
Linux网络编程入门(二):从 UDP 回显服务器到多人聊天室,三个项目的渐进式实践
linux·服务器·网络
论文复现现场12 分钟前
RTX 3090 云GPU租赁价格对比:8家平台配置、计费方式与环境测试
linux·运维·人工智能·pytorch·深度学习·云计算·3090
贵州诚鑫致达科技有限公司24 分钟前
接入汇聚都是环怎么防环路?华为SEP加RRPP混合环
服务器·华为·php
syagain_zsx26 分钟前
BRpc 搭建简单 rpc 服务器
服务器·c++·网络协议·rpc·protobuf·库
云飞云共享云桌面28 分钟前
一台SolidWorks设计服务器多人共享落地方案和配置
运维·服务器·3d·电脑·制造
Pointer Pursuit34 分钟前
进程优先级
linux·运维·服务器
skywalk816334 分钟前
FreeBSD仿真环境里的Ubuntu linux系统,安装软件的时候不支持snap怎么办?
linux·运维·ubuntu·系统·freebsd