Dónde encontrar la dirección IP en el sistema de archivos (por ejemplo, proc o sys)

¿Hay alguna forma de obtener la dirección IP (v4) de una interfaz en el sistema de archivos de Android? Sé que podría usar ifconfig o netcfg, pero me gustaría usar una herramienta de monitoreo que solo pueda acceder a archivos y no ejecutar comandos.

Respuestas (2)

No tengo Android para probarlo, pero Linux ofrece:

 cat /proc/net/fib_trie

.. de https://unix.stackexchange.com/questions/365225/how-to-get-the-ipv4-address-for-an-interface-from-proc

La salida se puede filtrar aún más por grep, por ejemplo

 cat /proc/net/fib_trie|grep '|--' | grep -vE ' 127|\.0[^0-9.]*$|\.255[^0-9.]*$'

Según una publicación en SO , cat /proc/net/tcplo devolverá en

la segunda columna, con el encabezado "local_address", por ejemplo, "CF00A8C0:0203".

La parte después de ":" es un número de puerto.

Del resto, use los dos últimos (C0) como un número hexadecimal, por ejemplo, C0 es 192, que es el comienzo de la dirección en este ejemplo.

Más:

La dirección IP se muestra como un número hexadecimal de cuatro bytes little-endian; es decir, el byte menos significativo aparece primero, por lo que deberá invertir el orden de los bytes para convertirlo en una dirección IP.

El número de puerto es un número hexadecimal simple de dos bytes.

desafortunadamente eso no funciona en mi teléfono. ese archivo solo tiene los encabezados pero no los datos. Estoy usando Android 4.4.2 en un SGS4.
Ah, ya veo. solo hay datos si las conexiones tcp están activas. eso no es tan práctico para mi propósito.
También puede consultar con /proc/net/arp, pero no estoy seguro de si eso tiene la misma restricción. Lo que debería funcionar, sin embargo, es mirar la información del dispositivo en /proc/net/devy elegir la interfaz deseada (por ejemplo, tiwlan0para WiFi en la mayoría de los casos).
/proc/net/arp también está vacío en mi teléfono y /proc/net/dev solo contiene estadísticas pero no la dirección IP. :-(
Entonces me quedo sin ideas. Hasta que alguien más pueda dar una respuesta definitiva, puede hacer un lsencendido /proc/net(y /sys/...) para buscar candidatos prometedores.
¿Has revisado /proc/sys/net? También intente ejecutar ipaddr desde el emulador de terminal.
Acabo de comprobar en un dispositivo fuera de línea. Parece que /proc/net/tcpcontiene algo (remote_addr es 0.0.0.0, por lo que está "inactivo"), nuevamente usando valores hexadecimales (como se describe en mi respuesta). En mi caso 0100007Fcomo local_address, que coincide 127.0.0.1con aka localhost. ¿Parece que eso es lo que buscas?