防火墙端口定时开放工具v2

自动防火墙端口管理脚本

简介

该脚本用于在指定的时间内自动打开和关闭指定的防火墙端口。它支持 ufwfirewalld 两种防火墙工具,并确保脚本在后台运行,即使终端关闭也能继续执行。

#!/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
} &

echo "后台进程启动成功,脚本将在 $TIME_MINUTES 分钟后自动关闭端口 $PORT。"
使用方法
./script.sh <端口号> <时间(分钟)>
参数
  • <端口号>: 需要打开的端口号。
  • <时间(分钟)>: 端口保持打开状态的时间(以分钟为单位)。
示例
./script.sh 8080 30

此命令将打开 8080 端口 30 分钟,之后自动关闭。

详细说明
  1. 参数检查: 检查输入参数的数量是否正确,如果不正确则输出用法并退出。

    if [ "$#" -ne 2 ]; then echo "用法: $0 <端口号> <时间(分钟)>" exit 1 fi
  2. 参数设置: 读取端口号和时间参数,并将时间转换为秒。

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

  3. 防火墙检测: 检测系统中是否安装了 ufwfirewalld,并设置相应的防火墙工具变量。

    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
  4. 开放端口: 根据检测到的防火墙工具,使用相应的命令开放端口。

    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

  5. 后台关闭端口: 使用 { ... } & 将关闭端口的操作放在后台运行,确保脚本即使在终端关闭后也能继续执行。

    { 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 } & echo "后台进程启动成功,脚本将在 $TIME_MINUTES 分钟后自动关闭端口 $PORT。"

注意事项
  • 请确保脚本具有执行权限,可以使用以下命令赋予权限:
    chmod +x script.sh

  • 确保脚本在执行过程中拥有足够的权限来修改防火墙设置,可能需要以 sudo 用户身份运行脚本。
  • 关闭端口操作将在后台执行,确保在指定时间后自动关闭端口,即使终端关闭也不会影响脚本运行。

通过上述步骤,您可以在指定的时间内自动管理防火墙端口,确保在需要时开放端口,并在不需要时自动关闭端口,提高系统的安全性和灵活性。

相关推荐

  1. 防火墙端口定时开放工具v2

    2024-06-10 00:20:02       45 阅读
  2. ubuntu开放防火墙端口

    2024-06-10 00:20:02       51 阅读
  3. Linux防火墙开放端口

    2024-06-10 00:20:02       57 阅读
  4. ubuntu开启防火墙端口

    2024-06-10 00:20:02       29 阅读
  5. ubuntu防火墙指定端口开放设置

    2024-06-10 00:20:02       25 阅读
  6. Redis端口开启防火墙报错

    2024-06-10 00:20:02       27 阅读
  7. CentOS7 开启防火墙开放指定端口

    2024-06-10 00:20:02       57 阅读
  8. 阿里云CentOS7 打开/关闭防火墙 开放端口

    2024-06-10 00:20:02       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-10 00:20:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-10 00:20:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-10 00:20:02       82 阅读
  4. Python语言-面向对象

    2024-06-10 00:20:02       91 阅读

热门阅读

  1. Python有什么功能:探索Python的无限可能

    2024-06-10 00:20:02       33 阅读
  2. 结构体构造函数

    2024-06-10 00:20:02       38 阅读
  3. Cweek4+5

    Cweek4+5

    2024-06-10 00:20:02      26 阅读
  4. C++查看编译后的代码

    2024-06-10 00:20:02       38 阅读
  5. C++迈向精通:STL的Deque复现

    2024-06-10 00:20:02       29 阅读
  6. 【DevOps】OpenVPN 实现分流的几种方法和实战

    2024-06-10 00:20:02       57 阅读
  7. Facebook开户 | 创建有效的Facebook广告文案策略

    2024-06-10 00:20:02       32 阅读
  8. C语言每日一题——分数加减(以最简形式输出)

    2024-06-10 00:20:02       28 阅读
  9. 面试 Redis 八股文十问十答第五期

    2024-06-10 00:20:02       32 阅读
  10. ZeroMq传输视频的几种方案

    2024-06-10 00:20:02       38 阅读