OVH Cloud OVH Cloud

obtenir son "IP interne"

14 réponses
Avatar
pere.noel
bon, j'essaie en ligne de commande d'obtenir mon adresse IP sur le lan,
donc "IP interne".

l'idée est d'utiliser "ifconfig en0" et de choisir la ligne en
broadcast, ce qui donne :

> ifconfig en0 | grep "broadcast" inet 192.168.3.1 netmask 0xffffff00
broadcast 192.168.3.255

maintenant, avec tr, je souhaite supprimer tout ce qui n'est pas chiffre
ou point :

> ifconfig en0 | grep "broadcast" | tr -C -d .0-9

ce qui me retourne que dalle )))

pourtant le man dit : -C Complement the set of characters in
string1, that is ``-C ab'' includes every character except for ``a'' and
``b''.


donc, je retourne ma vest et je fais :

> ifconfig en0 | grep "broadcast" | tr -C -d [:alpha:] qui me dit : zsh: no
matches found: [:alpha:]

mais bon c'est zsh qui répond, pas tr...

je passe donc à :

> ifconfig en0 | grep "broadcast" | tr -d a-zA-Z

qui me donne :

192.168.3.1 000 192.168.3.255

et non pas : 192.168.3.1 000 192.168.3.255

donc il y a qqc devant le premier "192"

c'est ça le but de ce post, supprimer la chaîne devant "192", je suppose
que c'est un tab (en fait j'ai vérifié, avec TextMate, en envoyant le
résultat de la commande dans un fichier texte).

donc je laisse de coter ce pb particulier et enchaîne avec sed :

> ifconfig en0 | grep "broadcast" | tr -d a-zA-Z | sed -e "s/
*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\) .*/\1/"

qui me donne :

192.168.3.1 et non pas : 192.168.3.1

donc il y a qqc devant le premier "192"

que je ne parvient pas à éliminer. (même en utilisant un \t dans le tr :

ifconfig en0 | grep "broadcast" | tr -d \ta-zA-Z | sed -e "s/
*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\) .*/\1/"

comme la ligne commence à faire long, je me dis qu'il doit y avoir une
solution plus simple mais je ne connais pas les outils en ligne de
commande traitant des chaines de caractères et surtout leur domaine
d'utilisation respectif.

en ruby je saurais faire rapidemnt, mais bon faut aussi essayer d'autres
outils...

-- une bévue

4 réponses

1 2
Avatar
Eric Deveaud
Une bévue wrote:
kurtz_le_pirate wrote:

pour infos :
"pipes" ta commande avec un 'tr -d [:space:]'


ben oui, j'ai lu ça, met avec zsh ça me donne :
echo "some spaces in between" | tr -d [:space:]
zsh: no matches found: [:space:]


de quoi il se mèle là zsh ?


comme tout shell qui se respecte il analyse la ligne de commande pour y trouver
les caracteres speciaux.

il intercepete donc [:space:]
pour mémoire [ est l'oerateur de test

il faut soit proteger les caracteres speciaux à grand cooups de
soit mettre le tout entre cote

de plus [:psace:] interceptant les horizontal or vertical whitespace
(ie les espcaces entre autre, mais aussi les n) tu ne verra rien vu que le n
posé par echo sera delete. donc pas d'echo du resultat

Eric

--
Tu as mille fois raison, un abonnement gratuit ce n'est pas un cadeau.
D'ailleurs quand on a eu le beurre, l'argent et le cul de la crémière,
à part dire des conneries, il ne reste plus grand chose à faire.
-+- Biz in GNU : Et là, ça vaut gratuit ou ça fout la chtouille ? -+-


Avatar
pere.noel
Eric Deveaud wrote:


de plus [:psace:] interceptant les horizontal or vertical whitespace
(ie les espcaces entre autre, mais aussi les n) tu ne verra rien
vu que le n
posé par echo sera delete. donc pas d'echo du resultat


oui, oui, merci beaucoup, j'ai expérimenté ça ))))

j'me disais où las, ma regex n'est pa au point, je n'ai plus rien....

je suis mort de rire, c'est quand même particulièrement
amusant le cli ;-)

effet anti-dépression garanti.
--
une bévue

Avatar
kurtz le pirate
In article <1hbrzkj.1ij205y1e4w92dN%,
(Une bévue) wrote:

kurtz_le_pirate wrote:

pour infos :
"pipes" ta commande avec un 'tr -d [:space:]'


ben oui, j'ai lu ça, met avec zsh ça me donne :
echo "some spaces in between" | tr -d [:space:]
zsh: no matches found: [:space:]


de quoi il se mèle là zsh ?

pareil avec [[:space:]]



ha ? moi j'utilise bash et en tappant donc :
<ifconfig en0 | grep "broadcast" | tr -d ta-zA-Z | sed -e
"s/*([0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*) .*/1/" | tr
-d [:space:]> d'un seul trait (sans les <> bien sur, ça passe sans
problème.




--
klp


Avatar
pere.noel
kurtz le pirate wrote:


ha ? moi j'utilise bash et en tappant donc :
<ifconfig en0 | grep "broadcast" | tr -d ta-zA-Z | sed -e
"s/*([0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*) .*/1/" | tr
-d [:space:]> d'un seul trait (sans les <> bien sur, ça passe sans
problème.


[[...]] c'est le if en zsh ...
--
une bévue

1 2