比较两个文件并将规则添加到 iptables

比较两个文件并将规则添加到 iptables

我有两个文件。

A. 密钥.txt

<string>
<string>
..
..

B.Hellos.txt

<string> <ip address> <ip address>
<string> <ip address> <ip address>
..
..

我想要执行任务 - 如果在中hellos.txt找到字符串(列1) keys.txt,则添加防火墙规则以允许这些 IP 地址的数据包。

我已尝试grep -v -F -x -f file1 file2但未能获得正确的输出。

编辑:我已更新以使用 awk,但是我无法将规则添加到 iptables。

  1. 这将打印出匹配的行

    sudo awk 'FNR==NR{a[$1];next}($1 in a){print}' keys.txt hellos.txt 
    
  2. 尝试向 iptables 添加规则,但没有成功

    sudo awk 'FNR==NR{a[$1];next}($1 in a){iptables -I INCOMING -j -s$2 ALLOW}' keys.txt hellos.txt 
    

答案1

正如我在编辑中提到的那样,

以下命令可用于匹配文件中的通用字符串

sudo awk 'FNR==NR{a[$1];next}($1 in a){print}' keys.txt hellos.txt 

为了进一步改善输出,请使用awk -v OFS='\n' '管道选项将 IP 地址打印到文件中。从此以后,向 iptables 添加规则就很简单了。

awk 'FNR==NR{a[$1];next}($1 in a){print}' keys.txt hellos.txt | awk -v OFS='\n' '{ print $2, $3 }'> improved_address.txt

相关内容