У меня есть два файла.
A. Keys.txt
<string>
<string>
..
..
B. Hellos.txt
<string> <ip address> <ip address>
<string> <ip address> <ip address>
..
..
Я хочу выполнить задачу - если строка (column1) в hellos.txt
найден в keys.txt
затем добавьте правило брандмауэра позволить пакеты для для тех IP-адресов.
Я попытался grep -v -F -x -f file1 file2
но мне не удается получить корректный вывод.
Править: Я обновил для использования awk, однако я не могу добавить правила к iptables.
Это распечатывает согласующий отрезок длинной линии
sudo awk 'FNR==NR{a[$1];next}($1 in a){print}' keys.txt hellos.txt
Это пытается добавить правило к iptables, но неудачно
sudo awk 'FNR==NR{a[$1];next}($1 in a){iptables -I INCOMING -j -s$2 ALLOW}' keys.txt hellos.txt
Как я упомянул в редактировании,
, следующая команда может использоваться для соответствия общей строке в файлах
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