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

  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
задан 6 December 2016 в 04:13

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
0
ответ дан 8 December 2019 в 07:29

Другие вопросы по тегам:

Похожие вопросы: