Algunas respuestas parecen estar utilizando el nuevo ip
comando (reemplazo para ifconfig
) así que aquí es uno que utiliza ip addr
, grep
y awk
para imprimir simplemente la dirección IPv4 asociada a la wlan0
interfaz:
ip addr show wlan0|grep inet|grep -v inet6|awk '{print $2}'|awk '{split($0,a,"/"); print a[1]}'
Si bien no es la solución más compacta o elegante, es (posiblemente) fácil de entender (ver la explicación a continuación) y modificar para otros fines, como obtener los últimos 3 octetos de la dirección MAC de esta manera:
ip addr show wlan0|grep link/ether|awk '{print $2}'|awk '{split($0,mac,":"); print mac[4] mac[5] mac[6]}'
Explicación: ip addr show wlan0
genera información asociada con la interfaz de red nombrada wlan0
, que debería ser similar a esta:
4: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether dc:a6:32:04:06:ab brd ff:ff:ff:ff:ff:ff
inet 172.18.18.1/24 brd 172.18.18.255 scope global noprefixroute wlan0
valid_lft forever preferred_lft forever
inet6 fe80::d340:5e4b:78e0:90f/64 scope link
valid_lft forever preferred_lft forever
Siguiente grep inet
filtra las líneas que no contienen "inet" (IPv4 y IPv6 configuración) y grep -v inet6
filtra las líneas restantes que hacen contener "inet6", lo que debería resultar en una sola línea como la siguiente:
inet 172.18.18.1/24 brd 172.18.18.255 scope global noprefixroute wlan0
Finalmente, el primero awk
extrae el campo "172.18.18.1/24" y el segundo elimina la taquigrafía de la máscara de red, dejando solo la dirección IPv4.
Además, creo que vale la pena mencionar que si está escribiendo un script, a menudo hay muchas herramientas más ricas y / o más sólidas para obtener esta información, que quizás desee utilizar en su lugar. Por ejemplo, si usa Node.js ipaddr-linux
, si usa Ruby linux-ip-parser
, etc.
Consulte también /unix/119269/how-to-get-ip-address-using-shell-script