#1 Le 10/02/2006, à 22: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, à 18:43)
-- Lucid Lynx --
Hors ligne
#2 Le 10/02/2006, à 23: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 10/02/2006, à 23: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, à 11: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, à 16: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
(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, à 20: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, à 22: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, à 12: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, à 18:40
- Totor
Re : [résolu] Adresse Inet d'une interface
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, à 18:42
- Totor
Re : [résolu] Adresse Inet d'une interface
Salut,
Essaye ça :
ifconfig eth0 | grep inet | sed -e "s/.*inet adr://" | sed -e "s/ .*//"
HTH
Merci, ça fonctionne est !
pour ma culture, peux-tu m'expliquer comment fonctionne tes expressions régulières ?
Dernière modification par Totor (Le 13/02/2006, à 18:42)
-- Lucid Lynx --
Hors ligne
#11 Le 13/02/2006, à 20: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, à 22:04
- Totor
Re : [résolu] Adresse Inet d'une interface
ok ! merci pour l'info ...
-- Lucid Lynx --
Hors ligne
#13 Le 14/02/2006, à 21: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
(Ç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, à 19: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