Compare dois arquivos e adicione regra ao iptables

1

Eu tenho dois arquivos.

Keys.txt

<string>
<string>
..
..

Hellos.txt

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

Eu quero executar a tarefa - se uma string (column1) em hellos.txt for encontrada em keys.txt , adicione a regra de firewall para permitir pacotes para esses endereços IP.

Eu tentei grep -v -F -x -f file1 file2 , mas não consegui a saída correta.

EDITAR: Eu atualizei para usar o awk, mas não consigo adicionar regras ao iptables.

  1. Isto imprime a linha correspondente

    sudo awk 'FNR==NR{a[$1];next}($1 in a){print}' keys.txt hellos.txt 
    
  2. Esta tentativa de adicionar uma regra ao iptables, mas é malsucedida

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

1 resposta

0

Como mencionei na edição,

O seguinte comando pode ser usado para coincidir com a string comum nos arquivos

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

Para melhorar ainda mais a saída, use a opção awk -v OFS='\n' ' com um pipe para imprimir o endereço IP em um arquivo. A partir daí, é simples adicionar regras ao 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
    
por user627497 06.12.2016 / 00:10