验证 Redhat 7 计算机上的防火墙是否已停止/处于非活动状态的优雅方法是什么?
例子:
我们停止防火墙:
systemctl status firewalld.service
我验证防火墙状态的方法是这样的:
systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor
preset: enabled)
Active: inactive (dead)
所以
在我的 bash 脚本中,我执行以下操作以检查防火墙是否已停止/不活动
if [[ ` systemctl status firewalld.service | grep Active | awk '{print $2}' ` = inactive ]]
then
firewall_status=inactive
else
firewall_status=active
fi
但以这种方式检查结果有点笨拙。
答案1
有一种更好、更干净的方法:
systemctl is-active firewalld
true
如果firewalld处于活动状态并且正在运行,则将简单地返回,false
否则。
所以你的测试变成:
if [ `systemctl is-active firewalld` ]
then
firewall_status=active
else
firewall_status=inactive
fi
答案2
firewall-cmd
RHEL 7 引入了与防火墙配合使用的命令。但问题是它需要 root 访问权限。
如果您以 root 身份运行脚本,则可以使用以下代码:
if [[ `firewall-cmd --state` = running ]]
then
firewall_status=active
else
firewall_status=inactive
fi
但是,如果您没有以 root 身份运行脚本,那么不幸的是,您的脚本是唯一的方法。
答案3
您可以使用以下命令检查 Redhat Linux 7 中防火墙的状态
systemctl status firewalld
您将看到状态 -
firewalld.service - firewalld - 动态防火墙守护进程已加载:已加载(/usr/lib/systemd/system/firewalld.service;已禁用)
活跃:不活跃(死亡)8月21日14:55:54主机systemd[1]:启动firewalld - 动态防火墙守护进程... 8月21日14:55:57主机systemd[1]:启动firewalld - 动态防火墙守护进程。 9月24日15:43:03主机systemd [1]:停止firewalld - 动态防火墙守护进程... 9月24日15:43:04主机systemd [1]:停止firewalld - 动态防火墙守护进程。