限时开放端口脚本
manage_port.sh
使用说明
简介
manage_port.sh
是一个用于在 Linux 系统上临时开放并随后关闭指定端口的脚本。该脚本接受端口号和时间(以分钟为单位)作为参数,并根据系统自动检测使用 ufw
或 firewalld
防火墙来管理端口的开放和关闭。
使用方法
前提条件
- Linux 系统
- 安装并启用
ufw
或firewalld
- 用户具备执行
sudo
命令的权限
脚本内容
#!/bin/bash# 检查参数数量
if [ "$#" -ne 2 ]; thenecho "用法: $0 <端口号> <时间(分钟)>"exit 1
fiPORT=$1
TIME_MINUTES=$2
TIME_SECONDS=$((TIME_MINUTES * 60))# 检测操作系统并确定使用的防火墙
if command -v ufw >/dev/null 2>&1; thenFIREWALL="ufw"
elif command -v firewall-cmd >/dev/null 2>&1; thenFIREWALL="firewalld"
elseecho "未检测到支持的防火墙 (ufw 或 firewalld)"exit 1
fi# 开放端口
if [ "$FIREWALL" = "ufw" ]; thensudo ufw allow "$PORT"sudo ufw reloadecho "端口 $PORT 已使用 ufw 开放"
elif [ "$FIREWALL" = "firewalld" ]; thensudo firewall-cmd --zone=public --add-port="$PORT"/tcp --permanentsudo firewall-cmd --reloadecho "端口 $PORT 已使用 firewalld 开放"
fi# 睡眠指定时间
sleep "$TIME_SECONDS"# 关闭端口
if [ "$FIREWALL" = "ufw" ]; thensudo ufw deny "$PORT"sudo ufw reloadecho "端口 $PORT 已使用 ufw 关闭"
elif [ "$FIREWALL" = "firewalld" ]; thensudo firewall-cmd --zone=public --remove-port="$PORT"/tcp --permanentsudo firewall-cmd --reloadecho "端口 $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 防火墙工具。
在生产环境中使用此脚本时,请注意安全性,确保只有授权用户可以执行该脚本。