SoloCodigo
Sistemas Operativos => GNU/Linux => Mensaje iniciado por: odp77 en Sábado 20 de Mayo de 2006, 02:46
-
hola, estoy en el desarrollo de un programa en c linux (gcc) y necesito una funcion (no con scripts) para saber la IP de la maquina en el que se esta ejecutando.
gracias y saludos..... :hola:
-
man ifconfig ;)
http://www.lehman.cuny.edu/cgi-bin/man-cgi?ifconfig (http://www.lehman.cuny.edu/cgi-bin/man-cgi?ifconfig)
http://en.wikipedia.org/wiki/Ifconfig (http://en.wikipedia.org/wiki/Ifconfig)
Almacenas el retorno de la ejecucion de ifconfig y simplemente lo extraes.
Aunque, si el equipo es un servidor, con POSIX obtienes el nombre de la maquina y con Sockets combiertes el dns en ip.
:hola:
-
Mira, salvo que seas root esa información pudiera ser privilegiada sin embargo en el espacio de usuario los driver escriben su información en la carpeta /proc
La red esta en el directorio /proc/net
Ahí encontraras los archivos que emanan del kernel por ejemplo el comando route tiene toda la información de rutas
[root@lastdragon net]# cat route
Iface Destination Gateway Flags RefCnt Use Metric Mask M
TU Window IRTT
eth0 0000FEA9 00000000 0001 0 0 0 0000FFFF
0 0 0
eth0 0000A8C0 00000000 0001 0 0 0 0000FFFF
0 0 0
eth1 0000A8C0 00000000 0001 0 0 0 0000FFFF
0 0 0
eth2 0000007F 00000000 0001 0 0 0 000000FF
0 0 0
eth0 00000000 FE05A8C0 0003 0 0 0 00000000
0 0 0
Checa la ultima línea
eth0 00000000 FE05A8C0 0003 0 0 0 00000000
La tercera columna dice FE05A8C0 en decimal es 254.5.168.192 que obviamente esta invertido a: 192.168.5.254
El lugar mas sano para obtener esa información es leyendo los archivos de /proa/net lee los demás archivos encontraras hasta mas info de la que solicitas como datos enviados, recibidos, etc, etc, etc,
-
Buen punto.
Mira hay un comando que se llama netstat, te retorna la ip y usando inet_ntoa de socket, podes resolver el DNS ;)