¿Cómo capturar la primera dirección IP que proviene del ifconfig
comando?
ifconfig -a
enw178032: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 100.14.22.12 netmask 255.255.0.0 broadcast 100.14.255.255
inet6 fe80::250:56ff:fe9c:158a prefixlen 64 scopeid 0x20<link>
ether 00:10:56:9c:65:8a txqueuelen 1000 (Ethernet)
RX packets 26846250 bytes 12068811576 (11.2 GiB)
RX errors 0 dropped 58671 overruns 0 frame 0
TX packets 3368855 bytes 1139160934 (1.0 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Resultado Esperado:
IP=100.14.22.12
Respuestas:
Es mejor evitar el uso
ifconfig
para obtener una dirección IP en una secuencia de comandos que está en desuso en algunas distribuciones (por ejemplo, CentOS y otras, ya no la instala por defecto).En otros sistemas, la salida de ifconfig varía de acuerdo con el lanzamiento de la distribución (por ejemplo, la salida / espaciado / campos de
ifconfig
difiere de Debian 8 a Debian 9, por ejemplo).Para obtener la dirección IP con
ip
, de manera similar, está preguntando:O mejor aún:
O, como preguntas "IP ="
Adaptando descaradamente la idea de @Roman
Salida normal:
De
man ip
:Vea un ejemplo de por qué
ifconfig
no se recomienda: BBB: `bbb-conf --check` que muestra las direcciones IP como` inet` - ifconfig woesPara entender por qué
ifconfig
está saliendo, vea Diferencia entre los comandos 'ifconfig' e 'ip'fuente
awk
. Demasiada capacidad mental para mí, aún despertando. Eviteifconfig
, no tiene futuro, y la posición de la dirección IP cambia, hay al menos dos versiones / implementaciones diferentes (?) Para Linux que conozco.-brief
parámetro y su salida se vuelve más fácil de analizar ( 2015-08-31 : git.kernel.org/pub/scm/network/iproute2 /iproute2.git/commit/… )-o
que de hecho parece útil para los guionesAwk
solución:Salida de muestra:
fuente
fuente
ip addr | awk ' !/127.0.0.1/ && /inet/ { gsub(/\/.*/, "", $2); print "IP="$2 } '