Bash - optimsation codage recuperer ip

bonjour,
j’ai écrit ce code mais je pense qu’il n’est pas du tout optimisé :

[code]#!/bin/sh
IPETH0=ifconfig eth0 | grep "inet ad" |cut -f2 -d: |awk '{print $1}' |cut -d '.' -f1
IPETH1=ifconfig eth0 | grep "inet ad" |cut -f2 -d: |awk '{print $1}' |cut -d '.' -f2
IPETH2=ifconfig eth0 | grep "inet ad" |cut -f2 -d: |awk '{print $1}' |cut -d '.' -f3

ADRESSE=echo $IPETH0.$IPETH1.$IPETH2
echo $ADRESSE
[/code]

Pouvez-vous m’aider?

Bonjour,

Ceci pourrais correspondre à ton attente :

[code]#!/bin/sh

ADRESSE=$(netstat -ie | sed -n ‘s/^.inet adr:([0-9].).([0-9].).([0-9].).([0-9].).$/\1.\2.\3.\4/p’)

echo $ADRESSE
[/code]
Il n’est pas nécessaire d’être root pour le lancer.

@ micky979 et MisterFreez : je n’affiche pas l’adresse ip en entier :wink: :
seulement les 3 premiers octets :

./iptest

=>> 192.168.0

vos scripts affiche toute l’adresse ip. :119

Bonjour,

Il suffit juste de corriger un peu le sed pour lui dire de ne pas prendre le dernier octect.

[code]#!/bin/sh

ADRESSE=$(netstat -ie | sed -n ‘s/^.inet adr:([0-9].).([0-9].).([0-9].)…*$/\1.\2.\3/p’)

echo $ADRESSE[/code]

Merci micky979, avec ton code on a l’adresse lo aussi. Donc voici le code final :

#!/bin/sh
TEMP=$(netstat -ie | sed -n 's/^.*inet adr:\([0-9]*.\)\.\([0-9]*.\)\.\([0-9]*.\)\..*$/\1.\2.\3/p')
ADRESSE=`echo $TEMP | awk '{print $1}'`
echo $ADRESSE

Merci à toi

Bonjour,

Ceci devrait faire l’affaire :

infos=$(ifconfig eth0)
adresse=${infos#*adr:}
echo ${adresse%.*Bcast*}

Salut,

La petite coche verte en bas à droite :slightly_smiling: Fait !

Joli :smiley:

C’est des commandes que je connais très mal.

@ ggoodluck47 : Merci
@ MisterFreez : tu fais quelle master ? je suis au cnam moi à grenoble aussi

Actuellement en première année de master informatique. L’an prochain en seconde année génie informatique, normalement en alternance en STMicroelectronics.

Et pourtant, une fois bien prises en main, toutes ces syntaxes bash sont forts pratiques car elles permettent de se passer de quelques outillages (cut, sed, tr …) qui impliquent la création/ destruction de processus, occupation/libération mémoire… et au final de gagner en perf sur de très gros traitements itératifs.