¿Hay alguna manera fácil en Ruby de obtener una lista de las direcciones IP para todas las interfaces de red? Necesita funcionar en Linux/Win/OSX y preferiría no tener que analizar ifconfig/ipconfig a menos que sea absolutamente necesario.Ruby: ¿forma independiente de la plataforma para determinar las direcciones IP de todas las interfaces de red?
Respuesta
A partir de Rubí 2.1, Socket # getifaddrs está disponible:
001:0> require 'socket'
=> true
002:0> Socket.getifaddrs.map { |i| i.addr.ip_address if i.addr.ipv4? }.compact
=> ["127.0.0.1", "192.168.1.121", "192.168.1.181"]
no creo rubí tiene una API estándar para esto, pero bajo ciertos supuestos esto debería ser bastante fiable en todas las plataformas:
require 'socket'
Socket::getaddrinfo(Socket.gethostname, 'echo', Socket::AF_INET).map { |x| x[3] }
Aquí estamos asumiendo bastantes cosas como la máquina que tiene un nombre local apuntando a las direcciones IP correctas. Por lo tanto, definitivamente no es completamente confiable, pero es independiente de la plataforma y funciona en las configuraciones comunes.
Editar: Si decide ir a analizar ifconfig, considere la posibilidad de forking ruby-ifconfig. Afirma hacerlo en la mayoría de las plataformas que no son Windows.
revisa el siguiente mensaje:
http://coderrr.wordpress.com/2008/05/28/get-your-local-ip-address/
También hay una discusión sobre la solución anshul publicado en los comentarios.
Ese método funciona muy bien si sé las direcciones IP a las que quiero conectarme para cada interfaz. Desafortunadamente no puedo suponer que ... según los comentarios, Ruby no tiene API para esto, así que supongo que es ifconfig/ipconfig para mí. – Tindron
- 1. IP todas las direcciones en una subred
- 2. Listar todas las direcciones IP de los dispositivos en la red wifi iOS sdk sin bonjour?
- 3. Rieles: bloquear todas las direcciones IP excepto las seguras
- 4. Script Bash para obtener todas las direcciones IP
- 5. Comprobando las direcciones IP
- 6. .htaccess redirigir a todas las direcciones IP, pero la mía
- 7. ¿Cómo puedo determinar las direcciones IP de la máquina local desde Perl?
- 8. Obtener todas las direcciones IP en la máquina
- 9. Obtener todas las direcciones IP asignadas a un servidor
- 10. ¿Cómo enumerar todas las interfaces de red disponibles?
- 11. Delphi, ¿Cómo obtener todas las direcciones IP locales?
- 12. Detectando todas las direcciones de broadcast de la red disponible en Java
- 13. Cómo hacer que Fiddler escuche todas las direcciones IP
- 14. ¿Cómo puedo detectar las direcciones IP de otros dispositivos en la red local?
- 15. C/C++ de Linux dirección MAC de todas las interfaces
- 16. Java: enumere todas las impresoras de red en LAN
- 17. Calculando todas las direcciones dentro de una subred ... para IPv6
- 18. Encontrar MacAddress desde la dirección IP de una manera independiente de la plataforma
- 19. ¿Cómo puedo conocer la dirección IP de las interfaces en C?
- 20. registre automáticamente todas las interfaces con Unity
- 21. ¿La plataforma WCF es independiente?
- 22. UDP-Broadcast en todas las interfaces
- 23. algoritmo para verificar las direcciones de las coincidencias?
- 24. La forma más eficiente de almacenar direcciones IP en MySQL
- 25. ruta de concatenación - plataforma independiente - "/", "\"
- 26. receptor independiente de la plataforma/dev/null para Java
- 27. Python: forma independiente de la plataforma para modificar la variable de entorno PATH
- 28. ¿La plataforma de archivos objeto es independiente?
- 29. ¿Es posible ver las direcciones IP del historial de Chrome en lugar de las urls?
- 30. ¿Qué significa "bloquear todas las solicitudes de carga de red"?
"_service_ es un nombre de servicio (" http", "ssh", ...), o un número de puerto (80, 22, ...) ", entonces: echo => 'echo' – andrykonchin
El requisito de nombre de host me lo quita ... En una máquina con 4 interfaces acabo de recuperar [" 127.0.0.1 "," 127.0.0.1 "] – Tindron
Ummm ... Es el herramienta que está escribiendo en el lado del servidor? ¿Está usando snmp una opción? – anshul