Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/08/2013, à 17:08

jean-luc5629

[resolu]Récupérer adresse IP dans syslog pour la reporter dans host..

Bonjour;
N'étant pas très doué en script, et surtout dans la manipulation des textes avec nos amis : "sed, awk...".
Je viens vers vous pour soumettre mon problème :

-Récupérer l'adresse IP fournie par noip toutes les 30 minutes dans une variable (sachant que la longueur de la ligne est aussi variable) et sans le . final dans le fichier /var/log/syslog :

Aug 12 16:06:26 cubieboard noip2[1897]: jean-luc.myftp.biz was already set to 82.64.245.3.
Aug 11 16:22:08 cubieboard noip2[19712]: jean-luc.myftp.biz was already set to 82.64.15.133.

-Pour reporter cette variable en ligne 15 du Fichier /etc/hosts.allow sous ce formatage :

# /etc/hosts.allow: list of hosts that are allowed to access the system.
#                   See the manual pages hosts_access(5) and hosts_options(5).
#
# Example:    ALL: LOCAL @some_netgroup
#             ALL: .foobar.edu EXCEPT terminalserver.foobar.edu
#
# If you're going to protect the portmapper use the name "portmap" for the
# daemon name. Remember that you can only use the keyword "ALL" and IP
# addresses (NOT host or domain names) for the portmapper, as well as for
# rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8)
# for further information.
#
ALL:  192.168.10.254
ALL:  192.168.10.101
ALL:  82.64.245.3

Merci d'avance pour votre éclairage.

Dernière modification par jean-luc5629 (Le 14/08/2013, à 22:15)

Hors ligne

#2 Le 12/08/2013, à 17:50

Neosnow

Re : [resolu]Récupérer adresse IP dans syslog pour la reporter dans host..

Hello,

Déjà, pour récupérer l'IP :

grep noip2 /var/log/syslog | tail -1 | sed -n /'noip2'/s'/.*set to \([0-9.]\+\).*./\1/p'

Pour le reste, faut que je regarde, j'ai pas le temps tout de suite.

Hors ligne

#3 Le 12/08/2013, à 17:53

pingouinux

Re : [resolu]Récupérer adresse IP dans syslog pour la reporter dans host..

Bonjour,
Pour récupérer le dernier IP dans /var/log/syslog :

adrs_ip=$(sed -rn '/noip2/s/^.* ((([[:digit:]]+\.)){3}[[:digit:]]+)\.$/\1/p' /var/log/syslog | tail -1)

Pour l'écrire à la fin de /etc/hosts.allow :

sudo echo "ALL:  $adrs_ip" >>/etc/hosts.allow

Hors ligne

#4 Le 12/08/2013, à 18:12

jean-luc5629

Re : [resolu]Récupérer adresse IP dans syslog pour la reporter dans host..

Merci à vous deux;

Vos solutions pour récupérer la variable fonctionne.
Par contre pour écrire, ce n'est pas ça que je recherche :

echo "ALL:  $adrs_ip" >>/etc/hosts.allow

ça je connaissais : echo xyz >> fichier pour écrire à la fin du fichier ou echo xyz > fichier pour écrire en 1° ligne et effacer tout le reste.

Mais ce n'est pas çà  que je recherche car ça va me rajouter la nouvelle IP à la suite des anciennes devenues obsolètes, et grossir mon fichier inutilement, en réalité, je voudrais qu'il se positionne en ligne 15 par exemple, et supprimant donc de ce fait l'IP devenue obsolète qui elle aussi était en ligne 15.

Merci

Hors ligne

#5 Le 12/08/2013, à 18:19

pingouinux

Re : [resolu]Récupérer adresse IP dans syslog pour la reporter dans host..

sudo sed -i "15d;14aALL:  $adrs_ip" /etc/hosts.allow

Il serait prudent de sauvegarder le fichier auparavant.

Hors ligne

#6 Le 12/08/2013, à 18:32

jean-luc5629

Re : [resolu]Récupérer adresse IP dans syslog pour la reporter dans host..

Merci;
Je vais pouvoir mettre un petit RESOLU.
Essayant de déchiffre ta ligne : "sudo sed -i "15d;14aALL:  $adrs_ip" /etc/hosts.allow"
15d => N° de ligne
mais pour 14a ??? à quoi ça correspond ?
Merci

Hors ligne

#7 Le 12/08/2013, à 18:38

pingouinux

Re : [resolu]Récupérer adresse IP dans syslog pour la reporter dans host..

15d => N° de ligne
mais pour 14a ??? à quoi ça correspond ?

On supprime la ligne n°15 (d pour delete), et on ajoute le texte après la ligne n°14 (a pour append)

Ajouté :
On peut aussi faire :

sudo sed -i "15s/^.*$/ALL:  $adrs_ip/" /etc/hosts.allow

Dernière modification par pingouinux (Le 12/08/2013, à 18:44)

Hors ligne

#8 Le 12/08/2013, à 20:22

jean-luc5629

Re : [resolu]Récupérer adresse IP dans syslog pour la reporter dans host..

Merci
A++

Hors ligne

#9 Le 14/08/2013, à 21:10

jean-luc5629

Re : [resolu]Récupérer adresse IP dans syslog pour la reporter dans host..

Bonsoir;

Je reviens à la charge, car je viens de me rendre compte qu'il y avait un problème:

-quand l'IP vient de changer la ligne n'est pas la même que celle que j'ai donné à la création de ce post; et la solution de pingouinux fournit un résultat vide et celle de Neosnow me fournit l'IP sans le dernier chiffre; voici le formatage lors du changemen d'IP :

Aug 14 15:50:15 cubieboard noip2[2013]: jean-luc.myftp.biz set to 82.255.106.127

Bien sur la maj se fera mais avec 30 mn de retard...
Et voici le formatage que j'avais déjà fourni qui à lieu toutes les 30 minutes ensuite :

Aug 14 20:49:00 cubieboard noip2[30521]: jean-luc.myftp.biz was already set to 82.255.106.127.

Et avec ce dernier que ce soit la solution de pingouinux ou de Neosnow fonctionne, mais je n'arrive pas à les adapter, décidément sed ce n'est pas mon truc...
L'idéal serait une même ligne de script qui soit polyvalente dans les deux types de formatages.

Merci de votre aide.

Dernière modification par jean-luc5629 (Le 14/08/2013, à 21:12)

Hors ligne

#10 Le 14/08/2013, à 21:38

pingouinux

Re : [resolu]Récupérer adresse IP dans syslog pour la reporter dans host..

Ceci devrait convenir.

adrs_ip=$(sed -rn '/noip2/s/^.* ((([[:digit:]]+\.)){3}[[:digit:]]+)\.?$/\1/p' /var/log/syslog | tail -1)

Explication :
J'ai juste ajouté le ?, qui indique que l'on peut avoir 0 ou 1 "." à la fin de la ligne.

adrs_ip=$(sed -rn '/noip2/s/^.* ((([[:digit:]]+\.)){3}[[:digit:]]+)\.?$/\1/p' /var/log/syslog | tail -1)

Dernière modification par pingouinux (Le 14/08/2013, à 21:50)

Hors ligne

#11 Le 14/08/2013, à 22:16

jean-luc5629

Re : [resolu]Récupérer adresse IP dans syslog pour la reporter dans host..

Merci encore,
J'ai marqué RESOLU...pour de bon cette fois ci...

Hors ligne