使用firewall-cmd查询端口状态并记录到日志文件

firewall-cmd --zone=$zone --query-port=$1/tcp >> "${logfile}"
这个命令使用了 `firewall-cmd`,这是 `firewalld` 的命令行工具,用于管理 Linux 系统上的防火墙规则。`firewalld` 是许多 Linux 发行版中默认的防火墙管理工具。

命令的详细解释如下:

1. **firewall-cmd**: 这是 `firewalld` 的命令行工具。
2. **--zone=$zone**: 这指定了查询或修改哪个区域(zone)的防火墙规则。`$zone` 是一个变量,代表一个特定的区域名称,例如 `public`、`home`、`work` 等。不同的区域可以有不同的防火墙规则。
3. **--query-port=$1/tcp**: 这部分命令用于查询某个 TCP 端口是否在指定的区域中开放。`$1` 是脚本或命令行参数,代表你想查询的 TCP 端口的号码。例如,如果 `$1` 的值是 `80`,那么命令就会查询 TCP 端口 80 是否在 `$zone` 指定的区域中开放。
4. **>> "${logfile}"**: 这部分命令将 `firewall-cmd` 的输出追加到 `${logfile}` 指定的文件中。如果文件不存在,它会被创建。如果文件已经存在,新的输出会被追加到文件的末尾,而不是覆盖原有内容。`${logfile}` 是一个变量,代表日志文件的路径和名称。

### 举例说明

假设你有一个名为 `check_ports.sh` 的脚本,它接受一个端口号作为参数,并检查该端口是否在 `public` 区域中开放。此外,你还希望将结果记录到一个名为 `firewall_logs.txt` 的日志文件中。

脚本内容可能如下:
#!/bin/bash

# 定义变量
zone="public"
logfile="firewall_logs.txt"

# 检查端口是否在指定区域中开放,并将结果追加到日志文件中
firewall-cmd --zone=$zone --query-port=$1/tcp >> "${logfile}"
你可以通过以下方式运行这个脚本,检查 TCP 端口 80 是否在 `public` 区域中开放:
./check_ports.sh 80
如果端口 80 在 `public` 区域中开放,`firewall-cmd` 会返回 `yes`,这个信息会被追加到 `firewall_logs.txt` 文件中。如果端口没有开放,它会返回 `no`。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值