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 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

Pyratek a écrit :

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