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/02/2006, à 23:58

Totor

[résolu] Adresse Inet d'une interface

Bonjour,

J'aimerai récupérer en shell l'adresse d'une interface réseau...
comment y arriver au plus simple ?

par avance, merci...

Dernière modification par Totor (Le 13/02/2006, à 19:43)


-- Lucid Lynx --

Hors ligne

#2 Le 11/02/2006, à 00:10

Noé0

Re : [résolu] Adresse Inet d'une interface

hop je te le fais en ruby

ruby -e "`ifconfig LE_NOM_DE_L'INTERFACE`.scan(/inet:[ \d\.]+/).gsub(/ inet:/,'')"

Ou encore :

ruby -e "`ifconfig #{gets}`.scan(/inet:[ \d\.]+/).gsub(/ inet:/,'')"

Pas testé (la je suis sous win) mais pas de raison que ca marche pas a part si j'ai fait une connerie dans les regexp...

#3 Le 11/02/2006, à 00:13

Noé0

Re : [résolu] Adresse Inet d'une interface

Hop qu'est-ce que je peut etre con.
Donc :

ruby -e "`/sbin/ifconfig LE_NOM_DE_L'INTERFACE`.scan(/inet:[ \d\.]+/).gsub(/ inet:/,'')"

ou

ruby -e "`/sbin/ifconfig #{gets}`.scan(/inet:[ \d\.]+/).gsub(/ inet:/,'')"

Eh oui si on n'est pas root, /sbin n'est pas dans le path.

#4 Le 11/02/2006, à 12:41

Totor

Re : [résolu] Adresse Inet d'une interface

Merci pour ta(es) réponse(s) !

Cependant, voici le résultat :

ruby -e "`/sbin/ifconfig ppp0`.scan(/inet adr:[ \d\.]+/).gsub(/ inet adr:/,'')"
-e:1: warning: parenthesize argument(s) for future version
-e:1: warning: parenthesize argument(s) for future version
-e:1: syntax error
ppp0      Lien encap:Protocole Point-à-Point
                                    ^

je me suis permis d'ajouter 'adr' après 'inet' car je suppose que l'on demande de récupérer la chaine se trouvant après 'inet:' ... est-ce une erreur (en tout cas, le résultat est le même avec ou sans !)

merci de ton aide


-- Lucid Lynx --

Hors ligne

#5 Le 11/02/2006, à 17:03

Noe0

Re : [résolu] Adresse Inet d'une interface

Franchement je suis desole je ne comprends pas pourquoi ca fait ca, et je n'ai pas de nunux a portee de main pour tester.

Si un pro en regexps passe dans le coin peut-etre pourra-t-il aider hmm

(Bon en gros pour t'expliquer le principe est de prendre la sortie de la commande ifconfig nomdel'interface puis de la filtrer avec des expressions regulieres. Tu peux le faire en Ruby, en Perl, ou avec grep (man grep).)

#6 Le 12/02/2006, à 21:19

Totor

Re : [résolu] Adresse Inet d'une interface

ok ..
bon, j'ai un peu avancé avec ceci :

ifconfig ppp0|grep -A 1 -e "ppp0*"|grep -e "inet*"

Maintenant, comment je peux extraire l'adresse inet du resultat ?

je pense qu'avec l'option -o de grep, je pourrais y arriver mais je ne n'arrive pas à trouver l'expression régulière appropriée !

suis-je dans la bonne voix ?


-- Lucid Lynx --

Hors ligne

#7 Le 12/02/2006, à 23:33

Noe0

Re : [résolu] Adresse Inet d'une interface

Bah j'imagine.
bon ensuite je suis un pas doue du grep-awk-autres outils de supranerd UNIX donc je peux pas t'aider.

Ou encore mets dans un fichier le code ruby :

#!/usr/bin/env ruby
`/sbin/ifconfig #{ARGV[0]}`.scan(/(inet adr: *[\d\.]+|inet: *[\d\.]+)/)[0][0].scan(/[\d\.]+/)


Puis enregistres le fichier sous le nom adresse_inet, mets le dans le repertoire /usr/bin (sudo mv chemin/vers/adresse_inet /usr/bin) puis donne lui les droits en execution avec 'sudo chmod +x /usr/bin/adresse_inet'. Ensuite et si ca marche, (J'ai fait des tests avec des pseudo sorties d'ifconfig redigees de ma main) il te suffira de taper adresse_inet INTERFACE pour savoir quelle est l'adresse inet de l'interface.

#8 Le 13/02/2006, à 13:20

sgallet

Re : [résolu] Adresse Inet d'une interface

Salut,
Essaye ça :
ifconfig eth0 | grep inet | sed -e "s/.*inet adr://" | sed -e "s/ .*//"
HTH

Hors ligne

#9 Le 13/02/2006, à 19:40

Totor

Re : [résolu] Adresse Inet d'une interface

Noe0 a écrit :

Bah j'imagine.
#!/usr/bin/env ruby
`/sbin/ifconfig #{ARGV[0]}`.scan(/(inet adr: *[\d\.]+|inet: *[\d\.]+)/)[0][0].scan(/[\d\.]+/)

désolé mais ça ne marche pas ! le script ne plante pas mais il ne me renvoie rien....:/

c'est pas grave, la solution avec sed fonctionne donc ne cherche pas plus et merci d'avoir passé du temps sur mon pb !


-- Lucid Lynx --

Hors ligne

#10 Le 13/02/2006, à 19:42

Totor

Re : [résolu] Adresse Inet d'une interface

sgallet a écrit :

Salut,
Essaye ça :
ifconfig eth0 | grep inet | sed -e "s/.*inet adr://" | sed -e "s/ .*//"
HTH

Merci, ça fonctionne est ! wink

pour ma culture, peux-tu m'expliquer comment fonctionne tes expressions régulières ?

Dernière modification par Totor (Le 13/02/2006, à 19:42)


-- Lucid Lynx --

Hors ligne

#11 Le 13/02/2006, à 21:46

sgallet

Re : [résolu] Adresse Inet d'une interface

pour ma culture, peux-tu m'expliquer comment fonctionne tes expressions régulières ?

En fait, c'est pas vraiment des expressions régulières plus un remplacement de texte.
grep inet : permet de ne sélectionner que la bonne ligne
sed -e "s/.*inet adr://" : supprime inet adr: et tout ce qu'il y a avant
sed -e "s/ .*//" : supprime (espace) et tout ce qu'il y a après

Hors ligne

#12 Le 13/02/2006, à 23:04

Totor

Re : [résolu] Adresse Inet d'une interface

ok ! merci pour l'info ...


-- Lucid Lynx --

Hors ligne

#13 Le 14/02/2006, à 22:50

Noé

Re : [résolu] Adresse Inet d'une interface

Je suis tellement con ! Tu mets 'puts ' au début de la deuxième ligne de mon script et ça marche hmm

(Ça fait du bien de retrouver sa Buntu entre nous)


dotdotno ou Phlogistique sur IRC
Jabber : noe.rubinstein CHEZ fritalk.com

Hors ligne

#14 Le 22/02/2006, à 20:58

Totor

Re : [résolu] Adresse Inet d'une interface

Merci bien ! ton script fonctionne !
Je l'opte car bizarrement, celui de sgallet ne fonctionne pas en root ou en sudo !


-- Lucid Lynx --

Hors ligne