Сравните два файла и добавьте правило в iptables
У меня есть два файла.
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
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