linux自动化一键批量检查主机端口

1、准备

我们可以使用下面命令关闭一个端口

sh 复制代码
sudo iptables -A INPUT -p tcp --dport 端口号 -j DROP

我关闭的是22端口,各位可以关其它的或者打开其它端口测试,谨慎关闭22端口!不然就会像我下面一样握手超时😭😭😭

打开端口

sh 复制代码
sudo iptables -I INPUT -p tcp --dport 端口号 -j ACCEPT

注意: 这些更改在当前会话中有效,重启后可能会丢失。要保存规则,可以使用iptables-save命令将规则导出到文件,并在系统启动时重新加载。

然后可以通过命令行的方式检查一下机器打开端口的状态

sh 复制代码
nc -zvw5 1.1.1.12 22

其中:

  • -z:表示扫描模式,只扫描端口而不发送任何数据。
  • -v:表示详细模式,会显示更多的扫描信息。
  • -w5:设置超时时间(wait timeout),后面的数字(在这个例子中是5)表示等待响应的最大秒数。如果在这个时间内没有收到响应,则认为连接失败。
  • <hostname_or_IP>(192.168.1.1):目标主机的主机名或IP地址。
  • <port>(22):要检查的端口号。

另外,如果你想要一个更详细的端口扫描报告,包括操作系统检测和服务版本检测,你可能需要使用更高级的端口扫描工具,如Nmap

创建测试文件

txt 复制代码
cat <<EOF>> host.txt
1.1.1.12
1.1.1.13
1.1.1.14
EOF

2、编写代码

使用vim编写check_prot.sh文件

sh 复制代码
vim check_prot.sh

然后话不多说,直接上代码

下面是一键批量检查主机端口的脚本完整代码,都写了注释

sh 复制代码
#!/bin/bash
#auther:黑子哥呢?
#desc:一键批量检查端口

# 要检查的主机列表文件(格式:主机名或IP)
HOST_FILE="host.txt"

# 要检查的端口号
PORT=$1  # 例如,检查SSH端口(通常为22)

# 临时文件用于存储打开端口的主机
OPEN_PORTS_FILE=$(mktemp)

# 临时文件用于存储没有打开端口的主机
CLOSED_PORTS_FILE=$(mktemp)

# 检查主机列表文件是否存在
if [ ! -f "$HOST_FILE" ]; then
    echo "主机列表文件 $HOST_FILE 不存在。"
    exit 1
fi

# 检查端口是否打开的函数
check_port() {
    local host="$1"
    local port="$2"

    # 尝试使用nc检查端口(如果nc不可用,可以尝试其他方法)
    if nc -zw5 "$host" "$port" &>/dev/null; then
        echo "$host" >> "$OPEN_PORTS_FILE"
    else
        echo "$host" >> "$CLOSED_PORTS_FILE"
    fi
}

# 读取主机列表并检查端口
while IFS= read -r host; do
    # 跳过空行
    if [ -z "$host" ]; then
        continue
    fi
    check_port "$host" "$PORT"
done < "$HOST_FILE"

# 输出打开端口的主机列表
if [ -s "$OPEN_PORTS_FILE" ]; then
    echo "以下主机的 $PORT 端口是打开的:"
    cat "$OPEN_PORTS_FILE"
fi

# 输出没有打开端口的主机列表
if [ -s "$CLOSED_PORTS_FILE" ]; then
    echo "以下主机的 $PORT 端口是没有打开的:"
    cat "$CLOSED_PORTS_FILE"
fi

# 清理临时文件
rm -f "$OPEN_PORTS_FILE" "$CLOSED_PORTS_FILE"

上面代码除了使用nc也可以使用其它工具,比如nmap,使用nmap可以参考这篇文章:nmap命令详细教程

比如下面的例子,我们只需要把nc那一行的命令替换成nmap即可

  • 例子:

    上面脚本中的代码

    sh 复制代码
    	nc -zw5 "$host" "$port" &>/dev/null

    上面内容替换成下面的

    sh 复制代码
    nmap -sT -p 22 --open -oN &>/dev/null 1.1.1.12 |grep -q 'open'

    注意: 使用nmap之前请确保自己的机器上安装了nmap,如果没有请先安装

    安装命令

    sh 复制代码
    yum -y install nmap

运行脚本命令

sh 复制代码
sh check_prot.sh 22

等待一会,就可以看见下面脚本运行结果

相关推荐
游客52013 分钟前
自动化办公-合并多个excel
开发语言·python·自动化·excel
RacheV+TNY26427842 分钟前
深度解析:电商平台API接口的安全挑战与应对策略
人工智能·python·自动化·api
乐维_lwops1 小时前
安全筑堤,效率破浪 | 统一运维管理平台下的免密登录应用解析
运维·服务器·安全
云飞云共享云桌面1 小时前
如何让企业研发设计团队低配电脑流畅做3D大装配设计?
服务器·3d·电脑
恩爸编程1 小时前
深入浅出 Linux 操作系统
linux·运维·服务器·linux系统介绍·linux操作系统介绍·linux操作系统是什么·linux操作是什么
马船长1 小时前
RCE-PLUS (学习记录)
java·linux·前端
Liveweb视频汇聚平台1 小时前
FFmpeg来从HTTP拉取流并实时推流到RTMP服务器
服务器·http·ffmpeg
激进的猴哥1 小时前
day20-yum精讲
linux·运维·服务器
忆源1 小时前
Linux基础--1.1 什么是 Linux 操作系统
linux·运维·服务器
dessler1 小时前
Docker-Dockerfile案例(一)
linux·运维·docker