shell 永久开放端口号
#!/bin/bash # 检查参数数量 if [ "$#" -ne 1 ]; then echo "Usage: $0 <port_number>" exit 1 fi # 获取端口号 PORT=$1 # 检查端口号是否为数字 if ! [[ "$PORT" =~ ^[0-9]+$ ]]; then echo "Error: Port number must be a positive integer." exit 1 fi # 开放端口 sudo firewall-cmd --zone=public --add-port=$PORT/tcp --permanent # 重新加载防火墙配置 sudo firewall-cmd --reload # 检查端口是否已开放 if sudo firewall-cmd --zone=public --query-port=$PORT/tcp; then echo "Port $PORT has been opened successfully." else echo "Failed to open port $PORT." exit 1 fi
保存上面的脚本到一个文件,例如open_port.sh
,然后给予执行权限:
chmod +x open_port.sh
之后,你可以通过以下方式运行脚本,开放指定的端口:
./open_port.sh 8080
这将永久开放8080端口。请注意,运行此脚本可能需要root权限,因此你可能需要使用sudo
:
sudo ./open_port.sh 8080
如果遇到:FirewallD is not running 问题。
解决方案:
如果您的 CentOS 7 系统提示 "FirewallD is not running",这表示防火墙服务尚未启动。FirewallD 是 CentOS 7 默认的防火墙管理工具,它基于 iptables 提供了更友好的接口和更强大的功能。
要解决这个问题,您可以按照以下步骤操作:
- 1.启动 FirewallD 服务:
使用 systemctl
命令来启动 FirewallD 服务。
sudo systemctl start firewalld
如果您希望在系统启动时自动启动 FirewallD 服务,可以执行:
sudo systemctl enable firewalld
- 2.检查 FirewallD 状态:
您可以使用以下命令来检查 FirewallD 的状态:
sudo systemctl status firewalld
如果服务正在运行,您将看到一条消息表示 "active (running)"。
- 3.重启服务:
sudo systemctl restart firewalld