#1 Le 10/09/2010, à 15:20
- Pyratek
Extraire IP avec awk grep who et host pour conf apache2
Salut
j ai chercher un peu partout mais je ne trouve pas
la commande who me sort ca :
root pts/1 2010-09-10 11:55 (aorleans-xxx-x-xxx-xxx.wxx-xxx.abo.wanadoo.fr)
je voudrais extraire ce qui est entre parenthese
mais je n ai rien trouver
quelle sera la meilleure commande
Merci
Dernière modification par Pyratek (Le 07/09/2011, à 12:56)
Hors ligne
#2 Le 10/09/2010, à 15:21
- richardsantoro
Re : Extraire IP avec awk grep who et host pour conf apache2
On utilise tr comme ceci
who|tr -s " "|cut -d" " -f5
Tr -s " " permet de supprimer les espaces en trop. Ensuite, on utilise cut avec l'option -d pour choisir un délimiteur (ici l'espace), et -f pour le champs qu'on veut. Il y'a 4 espace, donc 5 champs, et c'est le dernier qu'on veut d'où le 5
Dernière modification par richardsantoro (Le 10/09/2010, à 15:23)
Logiciels incontournables => Terminator : terminal divisible; GNS3 : Simulation de réseau avec IOS Cisco; DIA : Editeur de diagrammes pour réseaux et autres; VirtualBox : Emulateur d'ordinateur
Hors ligne
#3 Le 10/09/2010, à 15:23
- Pyratek
Re : Extraire IP avec awk grep who et host pour conf apache2
merci
Hors ligne
#4 Le 10/09/2010, à 15:27
- credenhill
Re : Extraire IP avec awk grep who et host pour conf apache2
hello
who | awk -F"[()]" '{print $2}'
Hors ligne
#5 Le 10/09/2010, à 15:39
- Pyratek
Re : Extraire IP avec awk grep who et host pour conf apache2
merci mais il reste les parentheses
j ai besoin vraiment que du resultat parceque la commande que tu m'as passer je la passe dans une variable pour sortir l ip
host $(who|tr -s " "|cut -d" " -f5) pour ensuite la mettre la dedans a la place de $1
sed -i "s/$(grep -Eo '[0-9]{1,3}(\.[0-9]{1,3}){3}' /etc/apache2/sites-enabled/xx.xxx.xxx.xxx | sed -n '4p')/$1/g"
Parceque j ai 2 serveurs chez OVH mais a la maison j ai une adresse ip dynamique et comme sur mes serveurs j ai des repertoires proteger avec la commande
Order deny,allow
Deny from All
Allow from xx.xx.xx.xx
et a chaque fois il fallait que je changer toutes les IP ( 8 dans plusieurs fichiers) ca me prends 10 min a chaque fois
Alors j'avais creer un script mais il fallait que je rentre ma nouvelle IP moi meme
#!/bin/sh
#
# Changement d'addresse IP dans la config d apache
#clear
#echo -n "Entrez votre nouvelle adresse IP : ";
#read ip;
sed -i "s/$(grep -Eo '[0-9]{1,3}(\.[0-9]{1,3}){3}' /etc/apache2/sites-enabled/XX.XX.XXX.XXX | sed -n '4p')/$1/g" /etc/apache2/sites-available/XX.XX.XXX.XXX
/etc/init.d/apache2 force-reload
exit;
Mais comme je suis gros feignant je voulais allais un peu plus loin ne plus rentrer l ip en argument quand je lance le script
merci
Hors ligne
#6 Le 10/09/2010, à 15:45
- richardsantoro
Re : Extraire IP avec awk grep who et host pour conf apache2
credenhill a fournit une version sans parenthèses.
En version moche, ca donne
who|tr -d "("|tr -d ")"|tr -s " "|cut -d" " -f5
Logiciels incontournables => Terminator : terminal divisible; GNS3 : Simulation de réseau avec IOS Cisco; DIA : Editeur de diagrammes pour réseaux et autres; VirtualBox : Emulateur d'ordinateur
Hors ligne
#7 Le 10/09/2010, à 15:56
- credenhill
Re : Extraire IP avec awk grep who et host pour conf apache2
ou utiliser ) comme séparateur avec cut
who | cut -d"(" -f2 | tr -d ')'
Hors ligne
#8 Le 10/09/2010, à 16:00
- Pyratek
Re : Extraire IP avec awk grep who et host pour conf apache2
merci beaucoup mais la vous m'enbrouillez un peu
voila la commande au final grace a vous je viens de l'essayer ca marche il est peu etre pas trés belle mais elle fait son boulot c'est l'essentiel
sed -i "s/$(grep -Eo '[0-9]{1,3}(\.[0-9]{1,3}){3}' /etc/apache2/sites-enabled/XX.XX.XX.XX | sed -n '4p')/$(host $(who | awk -F"[()]" '{print $2}') | grep -Eo '[0-9]{1,3}(\.[0-9]{1,3}){3}')/g"
Merci a tous les deux
Dernière modification par Pyratek (Le 10/09/2010, à 16:01)
Hors ligne
#9 Le 10/09/2010, à 16:15
- Pyratek
Re : Extraire IP avec awk grep who et host pour conf apache2
les deux dernieres commandes elles font la meme chose que celle la
who | awk -F"[()]" '{print $2}'
Hors ligne
#10 Le 10/09/2010, à 18:20
- Pyratek
Re : Extraire IP avec awk grep who et host pour conf apache2
Merci
j aurais une petite question a propos des commandes par exemple cut -d " " -f5
ou tr -s " "
dans man cut ou man tr et meme dans cut --help et tr .....
il ne parle pas des " " vous trouvez ca ou ?
c'est propre a la commande ou plutot au shell
Hors ligne
#11 Le 10/09/2010, à 18:21
- richardsantoro
Re : Extraire IP avec awk grep who et host pour conf apache2
en faite "" et '' (attention a ` qui a une signification differente) permettent de forcer le texte comme chaine de caractère.
Logiciels incontournables => Terminator : terminal divisible; GNS3 : Simulation de réseau avec IOS Cisco; DIA : Editeur de diagrammes pour réseaux et autres; VirtualBox : Emulateur d'ordinateur
Hors ligne
#12 Le 10/09/2010, à 22:06
- Pyratek
Re : Extraire IP avec awk grep who et host pour conf apache2
Voici mon script fini :
#!/bin/sh
#
# Changement d'addresse IP dans la config d apache
# On recupere la nouvelle addresse ip
new_ip=`host $(who | awk -F"[()]" '{print $2}') | grep -Eo '[0-9]{1,3}(\.[0-9]{1,3}){3}'`
# On recupere l'ancienne IP
old_ip=`grep -Eo '[0-9]{1,3}(\.[0-9]{1,3}){3}' /etc/apache2/sites-available/94.23.226.100 | sed -n '4p'`
sed -i "s/$old_ip/$new_ip/g" /etc/apache2/sites-enabled/94.23.226.100
# Et on Redémarre le Tout
/etc/init.d/apache2 force-reload
exit;
je l'ai remodifié par rapport au premier qui etait un peu trop brut
#!/bin/sh
#
# Changement d'addresse IP dans la config d apache
sed -i "s/$(grep -Eo '[0-9]{1,3}(\.[0-9]{1,3}){3}' /etc/apache2/sites-enabled/94.23.226.100 | sed -n '4p')/host $(who | awk -F"[()]" '{print $2}') | grep -Eo '[0-9]{1,3}(\.[0-9]{1,3}){3}'/g" /etc/apache2/sites-enabled/94.23.226.100
# On redémarre Apache2
/etc/init.d/apache2 force-reload
exit;
Je Remercie Credenhill et RichardSantoro
pour m'avoir trouver la commande pour extraire la nouvelle Ip
prochaine etape essayer de detecter automatiquement le changement de mon ip en local pour ensuite la faire transferer vers le serveur par scp ou ssh ou autre chose peu etre
Merci a plus
Hors ligne
#13 Le 11/09/2010, à 08:12
- credenhill
Re : Extraire IP avec awk grep who et host pour conf apache2
j aurais une petite question a propos des commandes par exemple cut -d " " -f5
ou tr -s " " dans man cut ou man tr et meme dans cut --help et tr .....
il ne parle pas des " "
les " servent à protéger le caractère du shell, parce qu'un espace est un séparateur et ne sera pas passé à la commande cut, c'est vrai pour tout caractère interpreté par le shell &;* etc mais on peut s'en passer pour les autres
$ echo a:b:c | cut -d: -f 2
b
$
$ echo a b c | cut -d -f 2
cut: the delimiter must be a single character
Try `cut --help' for more information.
$
$ echo a b c | cut -d " " -f 2
b
$
Dernière modification par credenhill (Le 11/09/2010, à 08:20)
Hors ligne
#14 Le 11/09/2010, à 14:03
- Pyratek
Re : Extraire IP avec awk grep who et host pour conf apache2
Salut Credenhill
Je te remercie pour le petit cour
J'ai appris quelque chose aujourd'hui
Merci et Bonne Journée
Hors ligne
#15 Le 07/09/2011, à 12:53
- Pyratek
Re : Extraire IP avec awk grep who et host pour conf apache2
Salut
Je ressort mon vieux post suite a la création d'un script pour changer IP variable dans des fichier de configuration d'apache
Tout marcher bien jusqu'a aujourd'hui
Voici la petit probleme
new_ip=`host $(who | awk -F"[()]" '{print $2}') | grep -Eo '[0-9]{1,3}(\.[0-9]{1,3}){3}'`
Ceci me permettait de ressortir ma nouvelle adresse IP pour remplacer l'ancienne IP dans les fichier de configuration d'apache ou de .htaccess
Donc logiquement cette ligne de code m'as toujours sortie ma nouvel IP mais aujourd'hui si je tape
echo $new_ip
voici le résultat
90.24.122.180 90.24.123.180 90.24.56.180 90.24.57.180 90.24.58.180 90.24.59.180 90.24.120.180 90.24.121.180
Mon adresse ip c'est la Premiere les autres je ne comprends pas d'ou elle sorte
si je tape
who
je n'est que mon adresse
root pts/0 2011-09-07 12:26 (aorleans-553-1-1-180.w90-24.abo.wanadoo.fr)
cela fait un an que tout marche trés bien et ce matin ca ne marche plus .....
Donc 2 possibilités soit j'essaye de comprendre pourquoi ça réagis comme ça et je trouve une solution,
soit je rajoute un ligne de code supplémentaire pour extraire mon adresse IP (c'est la premiere) du résultat qui est affiché plus haut mais sans comprendre ce qui c'est passé ( c'est pas la meilleure solution)
Comme je suis pas un spécialiste de awk grep je sens que je fait galérer
Je remercie toute personne qui me viendra en aide
Merci
Puech Mathias
Hors ligne