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"
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
.
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
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.