编写Shell脚本开放端口
.创建文件并编辑(不存在则自动创建),选择下方对应脚本粘贴即可
vim open_port.sh
脚本一无任何校验(每次仅支持一个端口):
#!/bin/bash
#开放firewall端口
echo -n "请输入开放的TCP端口:";read port
firewall-cmd --zone=public --add-port=$port/tcp --permanent
firewall-cmd --reload
echo "$port已经开放!"open_port=`firewall-cmd --zone=public --list-ports`
echo "所有开放端口:$open_port"
脚本二(增加校验并支持多个端口):
#!/bin/bash
# 开放 firewalld 端口(支持输入验证和批量操作)# 函数:检查端口是否有效
is_valid_port() {local port=$1if [[ $port =~ ^[0-9]+$ ]] && [ $port -ge 1 ] && [ $port -le 65535 ]; thenreturn 0 # 有效端口elsereturn 1 # 无效端口fi
}# 函数:开放单个端口
open_single_port() {local port=$1echo "正在开放端口: $port..."firewall-cmd --zone=public --add-port=$port/tcp --permanentif [ $? -ne 0 ]; thenecho "错误: 无法开放端口 $port!请检查防火墙状态或权限。"exit 1fifirewall-cmd --reload
}# 主逻辑
echo "请输入开放的 TCP 端口(多个端口用逗号分隔,如 8080,8081):"
read ports_input# 分割输入为数组
IFS=',' read -ra port_array <<< "$ports_input"# 遍历每个端口
for port in "${port_array[@]}"; doport=$(echo $port | xargs) # 去除首尾空格if is_valid_port $port; thenopen_single_port $portecho "端口 $port 已成功开放!"elseecho "警告: 忽略无效端口 $port(有效范围: 1-65535)"fi
done# 显示所有开放端口(格式化输出)
echo -e "\n当前所有开放的 TCP 端口:"
firewall-cmd --zone=public --list-ports | tr ' ' '\n' | sed 's/^/- /'
执行该文件命令:
./open_port.shorsh open_port.sh