#1 Le 07/01/2016, à 18:43
- eirtal
[Résolu] Script : awk, sed ou grep?
Bonjour,
N'ayant pas d'ip fixe sur mon poste, je désirais faire un script pour envoyer l'ip de mon ordinateur à mon serveur et l'ajouter aux ip en liste blanche de portsentry et fail2ban. Une partie sur l'ordinateur et celle ci sur le serveur :
#!/bin/bash
ip3=$(tail -n2 /home/dupont/log/ip-ordi.log | cut -d" " -f1)
ip2=$(tail -n1 /home/dupont/log/ip-ordi.log | cut -d" " -f1)
#Portsentry
sed -i '31d' /etc/portsentry/portsentry.ignore.static
sed -i '32i\'$ip2'\' /etc/portsentry/portsentry.ignore.static
#Fail2ban
sed -i '50s/$/'$ip2'\ /g' /etc/fail2ban/jail.conf
Je peux donc, dans le fichier de conf de portsentry, effacer la ligne de l'ip précédent, mais dans celui de fail2ban, les ip sont sur la même ligne, seulement séparés par un espace. Comment m'y prendre? Awk pourrait effacer une colonne, sed effacer une ligne, grep sélectionner une ligne, mais je ne trouve pas comment effacer la énième colonne d'une ligne donnée...
Une idée?
Merci par avance.
Dernière modification par eirtal (Le 07/01/2016, à 22:02)
Hors ligne
#2 Le 07/01/2016, à 18:50
- pingouinux
Re : [Résolu] Script : awk, sed ou grep?
Bonjour,
Pour supprimer la 3ème colonne (par exemple) :
awk '{$3="";print}' fichier_original >fichier_modifié
Hors ligne
#3 Le 07/01/2016, à 19:04
- eirtal
Re : [Résolu] Script : awk, sed ou grep?
Tout d'abord, merci de ta réponse rapide pingouinux.
Donc, en somme, il me faudrait faire cette opération sur la ligne visée, l'envoyer dans un nouveau fichier_modifié et venir remplacer l'ancienne ligne dans le fichier_original par celle copiée dans le fichier_modifié?
Il n'y a pas de moyen de faire cette opération ci à une ligne particulière, la numéro "tant" ou la ligne contenant telle chaîne de caractères?
Si cela n'est pas possible, je m'en suffirai, merci encore.
Hors ligne
#4 Le 07/01/2016, à 19:28
- jean-luc5629
Re : [Résolu] Script : awk, sed ou grep?
Bonjour;
Chez moi :
sed -i -e "s/\/8.*/\/8 $xx/g" /etc/fail2ban/jail.local
Dans /etc/fail2ban/jail.local la ligne concernée ressemble à ceci :
ignoreip = ip1 ip2 127.0.0.1/8 $xx
Donc la Nlle ip vient se mettre après le 127.0.0.1/8
$xx= ton $ip2
Hors ligne
#5 Le 07/01/2016, à 20:13
- pingouinux
Re : [Résolu] Script : awk, sed ou grep?
Il n'y a pas de moyen de faire cette opération ci à une ligne particulière, la numéro "tant" ou la ligne contenant telle chaîne de caractères?
Si c'est possible. Il faudrait que tu précises ta demande. Le mieux est que tu montres un exemple de ce que tu veux.
Hors ligne
#6 Le 07/01/2016, à 21:21
- eirtal
Re : [Résolu] Script : awk, sed ou grep?
Merci jean-luc5629, car ayant le même cas que le mien tu as pu cibler ce qu'il me fallait.
Et après test, cela fonctionne.
Et donc pingouinux, c'était cela le cas précis que j'exposais. Je serai plus précis la prochaine fois.
Merci de vos réponses encore une fois.
Hors ligne