#!/bin/bash #基础信息 hostname=`hostname` date=`date "+%Y-%m-%d %H:%M:%S"` #输入处理-判断端口 check_newport(){ while [[ true ]]; do read -p "请输入开放端口(1-65535):" newport ; if [[ -n $newport ]]; then if grep '^[[:digit:]]*$' <<< "$newport"; then if [[ $newport -ge 1 && $newport -le 65535 ]]; then break else echo "输入端口有误! 端口范围(1-65535)" fi else echo "输入参数有误!" fi else echo "输入为空,请重新输入" fi done } #输入处理-判断协议 check_newprotocol(){ while [[ true ]]; do read -p "请输入开放协议(tcp 或 udp):" newprotocol ; if [[ -n $newprotocol ]]; then if [[ $newprotocol == "tcp" ]] || [[ $newprotocol == "udp" ]]; then break else echo "输入有误,请重新输入! 开放协议(tcp 或 udp)" fi else echo "输入为空,请重新输入" fi done } # 检查防火墙状态及开放端口 check_firewall(){ # 获取防火墙状态 filewalld=`systemctl status firewalld | grep Active | awk '{print $2}'` if [ $filewalld = "active" ] then fwport=`firewall-cmd --zone=public --list-ports` fwstr="防火墙已启动,已开放端口:$fwport" else fwstr="\033[5m \033[41;37m 防火墙未启动,建议启用防火墙保障系统安全! \033[0m" fwnum=0 fi echo -e "\n\n"$fwstr } set_firewall(){ # 检查防火墙状态及开放端口 check_firewall # 输入处理 check_newport check_newprotocol # 设置防火墙 if [ -n "$fwnum" ] then echo "-----正在启动防火墙-----" systemctl start firewalld filewalld=`systemctl status firewalld | grep Active | awk '{print $2}'` if [ $filewalld = "active" ] then echo "防火墙启动完成" else echo "\033[5m \033[41;37m 防火墙启动报错,请执行命令(systemctl status firewalld)查看异常! \033[0m" exit fi else echo -e "\n\n" $fwstr fi echo "-----开始配置防火墙-----" if [ $filewalld = "active" ] then echo "防火墙已启动,正在开放端口权限。。。" #防火墙增加端口 firewall-cmd --zone=public --add-port=$newport/$newprotocol --permanent firewall-cmd --reload fwport=`firewall-cmd --zone=public --list-ports` echo "防火墙已启动,已开放端口:$fwport" echo "-----配置完成-----" fi } stop_firewalld(){ # 检查防火墙状态及开放端口 check_firewall # 输入处理 check_newport check_newprotocol if [ $filewalld = "active" ] then echo "-----开始配置防火墙-----" firewall-cmd --remove-port=$newport/$newprotocol --permanent firewall-cmd --reload fwport=`firewall-cmd --zone=public --list-ports` echo "已关闭端口$newport/$newprotocol,防火墙已启动,已开放端口:$fwport" echo "-----配置完成-----" else echo -e "\033[5m \033[41;37m 防火墙未启动,建议启用防火墙保障系统安全! \033[0m" fi } home(){ echo " 防火墙端口开启脚本 请输入对应数字进行操作: 1.检查防火墙状态及开放端口 2.新增开放端口(永久开放) 3.关闭端口 4.退出 " read -p " 请输入您的操作:" h case "$h" in "1") check_firewall ;; "2") set_firewall ;; "3") stop_firewalld ;; "4") exit ;; *) echo "输入错误,请重新输入。" sleep 1 num=$[$num+1] if [[ $num -eq 3 ]]; then echo "多次输入有误,已退出" exit fi home ;; esac } while [[ true ]]; do home done
标签:-%,hostname,firewalld,防火墙,newport,设置,date From: https://www.cnblogs.com/Gaimo/p/17565925.html