web-dev-qa-db-fra.com

Comment puis-je utiliser un script pour obtenir l'adresse IP d'ifconfig si la taille de l'IP change de taille à chaque connexion?

Je travaille actuellement avec ce

     IFTUN="$(ifconfig tun)"
     IPADD=${IFTUN:106:13}
     echo $IPADD

Mais si la taille de l'adresse IP change, cela ne fonctionnera plus.

     inet addr:1.2.3.4  P-t-P:1.2.3.4  Mask:255.255.254.0
     UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
     RX packets:1151 errors:0 dropped:0 overruns:0 frame:0

Donc, ce que je recherche, c'est un moyen d'obtenir l'IP à partir d'ifconfig quel que soit le nombre de caractères "1.2.3.4" ou dire "111.22.3.44" ou même "111.222.333.444"

1
Spud

Afin d'obtenir votre adresse IP à partir de Ifconfig, vous pouvez utiliser ceci:

echo `ifconfig tun0 2>/dev/null|awk '/inet addr:/ {print $2}'|sed 's/addr://'`

Cette commande obtiendra l'adresse IP de tun0.

1
Mahdi

Utilisez la commande ip insted de ifconfig, qui est obsolète.

ipAddr=$( ip a s eth0 | awk '/inet.*brd/ {print $2}' )

Exemple de sortie: 172.16.2.136/16

Si vous ne souhaitez pas inclure le CIDR, utilisez ceci:

ipAddr=$( ip a s eth0 | awk '/inet.*brd/ {print $2}' | awk -F'/' '{print $1}' )

Exemple de sortie: 172.16.2.136

1
krt

Je n'utiliserais pas ifconfig car au moins sur certaines distributions, il est remplacé par ip.

Si vous connaissez votre interface, vous pouvez le faire:

ip addr | grep eth0 | grep inet | awk '{print $ 2}'

Il vous donnera également le masque que vous pouvez couper comme ça

ip addr | grep eth0 | grep inet | awk '{print $ 2}' | cut -d "/" -f 1

Je suppose que vous utilisez bash pour votre script. Si vous utilisez une autre langue, vous pouvez également obtenir votre nom d'hôte et rechercher son adresse IP.

0
Mat000111