Ruby에서 모든 네트워크 인터페이스의 IP 주소 목록을 쉽게 얻을 수 있습니까? 그것은 Linux/Win/OSX에서 작동해야하고 절대적으로해야하지 않는 한 ifconfig/ipconfig를 구문 분석 할 필요가 없습니다.루비 - 플랫폼 독립적 인 방법으로 모든 네트워크 인터페이스의 IP를 결정합니까?
7
A
답변
8
는, 소켓 번호의의 getifaddrs 사용할 수 :
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"]
1
나는 루비는 이것에 대한 표준 API를 가지고 있지만 몇 가지 가정 하에서이 플랫폼에 걸쳐 매우 신뢰할 수 있어야 생각하지 않는다
: 여기
require 'socket'
Socket::getaddrinfo(Socket.gethostname, 'echo', Socket::AF_INET).map { |x| x[3] }
우리는 로컬 호스트 이름을 갖는 기계처럼 꽤 몇 가지를 가정합니다 올바른 IP 주소를 가리키고 있습니다. 따라서, 이것은 완전히 신뢰할만한 것은 아니지만 플랫폼에 독립적이며 공통 설정에서 작동합니다.
편집 : ifconfig를 구문 분석하기로 결정한 경우, ruby-ifconfig을 포크하는 것을 고려하십시오. 그것은 대부분의 비 Windows 플랫폼에서 이미 그렇게한다고 주장합니다.
2
체크 아웃 다음 게시물 :
코멘트에 게시 된 솔루션 anshul에 대한 논의도있다http://coderrr.wordpress.com/2008/05/28/get-your-local-ip-address/
. 루비 2.1 이후
+1
각 인터페이스에 연결할 IP 주소를 알고있는 경우 그 방법이 효과적입니다. 불행히도 나는 그것을 추측 할 수 없다 .. 댓글에 따라 Ruby에는 API가 없으므로 ifconfig/ipconfig라고 생각합니다. – Tindron
관련 문제
- 1. 플랫폼 독립적 인 수학 라이브러리
- 2. 플랫폼 독립적 인 이클립스 설정
- 3. 플랫폼 독립적 인 키 코드 제공 방법
- 4. 플랫폼 독립적 인 퍼멀 링크 - 모범 사례?
- 5. Python - 플랫폼 독립적 인 5.1 사운드 라이브러리
- 6. C++ : 플랫폼 독립적 인 게임 라이브러리?
- 7. 플랫폼 독립적 인 경량 프로그래밍 언어
- 8. SBO에 액세스하는 플랫폼 독립적 인 방법은 무엇입니까?
- 9. 글꼴을 찾을 수있는 플랫폼 독립적 인 방법
- 10. 플랫폼 독립적 인 size_t 형식 지정자는?
- 11. 플랫폼에 독립적 인 방법으로 클립 보드에 액세스 할 수 있습니까?
- 12. 플랫폼 독립적 설계에 플랫폼 특정 데이터 전달?
- 13. 플랫폼 독립적 스트림
- 14. 플랫폼 독립적 지불 설치
- 15. 신뢰할 수 있고 플랫폼 독립적 인 방법으로 자바에 로그인 한 사용자를 얻는 방법
- 16. 플랫폼 독립적 인 데이터를 처리하기위한 C# 서버 설계?
- 17. Http Post 플랫폼 독립적 인 WCF 서비스에 대한 최소한의 호출
- 18. 데이타베이스 독립적 인 방법으로 필드 레벨에서 데이터 변경 통지를 받습니까?
- 19. 플랫폼 독립적 인 방식으로 무한 값을 선택하는 방법
- 20. Visual Studio로 플랫폼 독립적 인 웹 서비스 만들기
- 21. 플랫폼 독립적 인 방식으로 노드 집합 기능을 사용하는 방법은 무엇입니까?
- 22. 플랫폼 독립적 인 코드를 생성하도록 프로젝트를 구성하려면 어떻게해야합니까?
- 23. Dll과 마찬가지로 플랫폼 독립적 인 파일을 만들 수있는 방법이 있습니까?
- 24. 플랫폼 독립적 인 가비지 컬렉터를 구현하는 방법은 무엇입니까?
- 25. 파이썬 : PATH 환경 변수를 수정하는 플랫폼 독립적 인 방법
- 26. 플랫폼 독립적 인 방식으로 JVM에 환경 변수 전달
- 27. 플랫폼 독립적 인/dev/null Java 용 출력 싱크
- 28. Word 템플릿에 대한 플랫폼 독립적 인 웹 기반 대체품이 있습니까?
- 29. Python 수학 라이브러리 C 수학 라이브러리 및 플랫폼 독립적 인?
- 30. 플랫폼 독립적 인 바이너리 파일 I/O를위한 C/C++ 라이브러리
"_service_ 서비스 이름입니다 ("HTTP ","ssh를 ", ...), 또는 포트 번호 (80, 22, ...) ", 그래서 : echo => 'echo' – andrykonchin
호스트 이름 요구 사항이 나를 죽입니다. 4 개의 인터페이스가있는 컴퓨터에서 ["127.0.0.1 ","127.0.0.1 "] – Tindron
Ummm ... 당신은 서버 측을 쓰고있는 도구입니까? snmp를 옵션으로 사용하고 있습니까? – anshul