Linux 学习笔记

1. 快速检测端口连通性

/dev/tcp/<Hostname>(静态IP地址)/<port>(端口号)       特殊的文件,允许通过该接口进行TCP网络通信

例  : 测试 192.168.1.1的22端口是否打开, /dev/tcp/192.168.1.1/22  没有输出结果代表端口是通的,如果有结果输出代表端口是不通的并未打开

利用Bash脚本,还可以同时批量检测多台服务器的多个端口。

首先创建一个CSV文件(portscan.csv),在文件中记录服务器的IP地址和端口号信息,一行一个,端口号和IP地址使用空格分隔,如果有多个端口使用逗号进行分割,接着创建一个简单的Bash脚本(scan.sh),该脚本会读取文件的每一行并截取其中的IP地址和端口号的信息,然后通过for循环调用/dev/tcp设备文件来测试目标的端口连通性,最后打印成功或失败信息。为脚本配置上可执行权限,然后运行,将CSV文件作为参数传递给脚本(./scan.sh protscan.csv),几乎一瞬间就完成了测试,输出结果有点乱,可以使用管道符配合sort命令来排序一下这样就可以很清楚的看到结果(./scan.sh portscan.csv | sort -k1),哪些端口是打开的,哪些端口是关闭的

if [ -n "$1" ] && [ -f  "$1" ]; then

   while read -r line' do

        machine=$(echo "$line"| /bin/cut -d" " -f1)|| exit 100

        ports=$(echo "$line"| /bin/cut -d" " -f2)|| exit 101

        OLD_IFS=$OLD_IFS

        IFS=","

       for port in $ports; do

          if (echo >/dev/tcp/"$machine"/"$port") >dev/null 2>&1; then

              echo "OK: $machine -> $port"

          else

              echo "ERRORE: $machine -> $port"

         fi

         done

        IFS=$OLD_IFS

    done < "$1"

else

     echo "ERROR: Invalid or missing data file!"

     exit 103

fi

 

posted on 2024-05-28 11:45  追求高级技术  阅读(3)  评论(0编辑  收藏  举报