Como posso usar um script para obter o endereço IP de ifconfig se o tamanho do IP mudar de tamanho em cada conexão?

1

Atualmente estou trabalhando com isso

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

Mas se o tamanho do endereço IP mudar, isso não funcionará mais.

     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

Então, o que eu estou procurando é uma maneira de obter o IP do ifconfig, não importa qual seja o número de caracteres "1.2.3.4" ou "111.22.3.44" ou mesmo "111.222.333.444"

    
por Spud 22.04.2016 / 14:23

3 respostas

1

Para obter seu endereço IP de Ifconfig , você pode usar isto:

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

Este comando irá obter o endereço IP de tun0 .

    
por Mahdi 22.04.2016 / 14:27
1

Use o comando ip insted de ifconfig , que está obsoleto.

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

Exemplo de saída: 172.16.2.136/16

Se você não quiser incluir o CIDR, use este:

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

Exemplo de saída: 172.16.2.136

    
por krt 22.04.2016 / 14:56
0

Eu não usaria ifconfig porque pelo menos em algumas distros ele está sendo substituído por ip.

Se você conhece sua interface, pode fazer isso:

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

Ele vai te dar a máscara também que você pode cortar assim

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

Estou assumindo que você está usando bash para o seu script. Se você estiver usando outro idioma, você também pode obter seu nome de host e procurar o seu ip.

    
por Mat000111 22.04.2016 / 14:30