定时开放防火墙端口,并自动关闭

限时开放端口脚本

manage_port.sh 使用说明

简介

manage_port.sh 是一个用于在 Linux 系统上临时开放并随后关闭指定端口的脚本。该脚本接受端口号和时间(以分钟为单位)作为参数,并根据系统自动检测使用 ufwfirewalld 防火墙来管理端口的开放和关闭。

使用方法

前提条件

  • Linux 系统
  • 安装并启用 ufwfirewalld
  • 用户具备执行 sudo 命令的权限

脚本内容

#!/bin/bash

# 检查参数数量
if [ "$#" -ne 2 ]; then
    echo "用法: $0 <端口号> <时间(分钟)>"
    exit 1
fi

PORT=$1
TIME_MINUTES=$2
TIME_SECONDS=$((TIME_MINUTES * 60))

# 检测操作系统并确定使用的防火墙
if command -v ufw >/dev/null 2>&1; then
    FIREWALL="ufw"
elif command -v firewall-cmd >/dev/null 2>&1; then
    FIREWALL="firewalld"
else
    echo "未检测到支持的防火墙 (ufw 或 firewalld)"
    exit 1
fi

# 开放端口
if [ "$FIREWALL" = "ufw" ]; then
    sudo ufw allow "$PORT"
    sudo ufw reload
    echo "端口 $PORT 已使用 ufw 开放"
elif [ "$FIREWALL" = "firewalld" ]; then
    sudo firewall-cmd --zone=public --add-port="$PORT"/tcp --permanent
    sudo firewall-cmd --reload
    echo "端口 $PORT 已使用 firewalld 开放"
fi

# 睡眠指定时间
sleep "$TIME_SECONDS"

# 关闭端口
if [ "$FIREWALL" = "ufw" ]; then
    sudo ufw deny "$PORT"
    sudo ufw reload
    echo "端口 $PORT 已使用 ufw 关闭"
elif [ "$FIREWALL" = "firewalld" ]; then
    sudo firewall-cmd --zone=public --remove-port="$PORT"/tcp --permanent
    sudo firewall-cmd --reload
    echo "端口 $PORT 已使用 firewalld 关闭"
fi

保存和运行脚本
将上述脚本内容保存为 manage_port.sh 文件:


nano manage_port.sh

给脚本添加可执行权限:


chmod +x manage_port.sh

运行脚本,传入端口号和时间(以分钟为单位)作为参数:


./manage_port.sh <端口号> <时间(分钟)>

例如,若要开放端口 8080 并在 5 分钟后关闭它,可以运行:


./manage_port.sh 8080 5

示例
假设你想要开放端口 8080 并在 5 分钟后关闭它:


./manage_port.sh 8080 5

脚本输出:


端口 8080 已使用 ufw 开放
(5 分钟后)
端口 8080 已使用 ufw 关闭
或(使用 firewalld):

端口 8080 已使用 firewalld 开放
(5 分钟后)
端口 8080 已使用 firewalld 关闭

注意事项
请确保你有权限运行 sudo 命令。
请确保系统中已经安装并启用了 ufw 或 firewalld 防火墙工具。
在生产环境中使用此脚本时,请注意安全性,确保只有授权用户可以执行该脚本。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值