Atualmente, tenho um script que adiciona regras à tabela de firewall com base em um critério de seleção entre dois arquivos.
ARQUIVO 1 keys.txt
<string>
<string>
..
..
ARQUIVO 2 hellos.txt
<string> <ipaddress> <ipaddress>
<string> <ipaddress> <ipaddress>
..
..
Meu script corresponde a uma string do arquivo 2 com uma string do arquivo 1. Se houver uma correspondência, ela adicionará a regra de firewall para o ipaddress após a correspondência da string.
O roteiro é o seguinte -
#!/bin/bash
while true
do
#Match a string from both the files and print the ipaddress to a file
word=$(awk 'FNR==NR{a[$1];next}($1 in a){print}' keys.txt hellos.txt | awk -v OFS=' ' '{ print $2, $3 }') >address.txt
#Remove duplicates for the ipaddress file
awk '!a[$0]++' address.txt > address_improved.txt
#Add firewall rule from new file.
filename=address_improved.txt
while read -r a b
do
"/sbin/iptables" -I FORWARD 1 -m physdev --physdev-is-bridged --physdev-in enxa0cec80f92bd --physdev-out eno1 -s $a -d $b -j ACCEPT
done < "$filename"
sleep 0.01
#Run while loop again because the files are changing constantly
done
Como posso melhorar esse script de forma que eu não adicione regras de firewall duplicadas sempre que o loop while for executado. Eu tentei adicionar a opção -C (check), mas não funciona para mim. Acabei de receber uma saída de regra ruim.