1 votes

Comparer deux fichiers et ajouter une règle à iptables

J'ai deux fichiers.

A. Clés.txt

<string>
<string>
..
..

B. Hellos.txt

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

Je veux exécuter la tâche suivante : si une chaîne de caractères (colonne1) dans le fichier hellos.txt se trouve dans keys.txt puis ajoutez la règle de pare-feu pour autoriser les paquets pour ces adresses IP.

J'ai essayé de grep -v -F -x -f file1 file2 mais je ne parviens pas à obtenir la sortie correcte.

EDIT : J'ai mis à jour pour utiliser awk, cependant je ne suis pas capable d'ajouter les règles à iptables.

  1. Ceci imprime la ligne correspondante

    sudo awk 'FNR==NR{a[$1];next}($1 in a){print}' keys.txt hellos.txt 
  2. Ceci tente d'ajouter une règle à iptables mais sans succès.

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

0voto

Comme je l'ai mentionné dans l'édition,

La commande suivante peut être utilisée pour faire correspondre la chaîne commune dans les fichiers

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

Pour améliorer encore le rendement, utilisez le awk -v OFS='\n' ' avec un pipe pour imprimer l'adresse IP dans un fichier. A partir de là, il est simple d'ajouter des règles à 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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X