2013-01-16 11 views

Odpowiedz

23

można wydać polecenie system() do używanego systemu operacyjnego:

  • W systemie Windows można użyć ipconfig
  • W Linuksie, użyj ifconfig

Na przykład w systemie Windows spróbować nazywając system() z argument intern=TRUE w celu zwrócenia wyników do R:

x <- system("ipconfig", intern=TRUE) 

ta zwraca:

x 
[1] ""                 
[2] "Windows IP Configuration"           
[3] ""                 
[4] ""                 
[5] "Wireless LAN adapter Wireless Network Connection:"     
[6] ""                 
[7] " Connection-specific DNS Suffix . : tbglondon.local"    
[8] " Link-local IPv6 Address . . . . . : fe80::c0cb:e470:91c7:abb9%14" 
[9] " IPv4 Address. . . . . . . . . . . : 10.201.120.184"    
[10] " Subnet Mask . . . . . . . . . . . : 255.255.255.0"    
[11] " Default Gateway . . . . . . . . . : 10.201.120.253"    
[12] ""                 
[13] "Ethernet adapter Local Area Connection:"        
[14] ""                 
[15] " Connection-specific DNS Suffix . : tbglondon.local"    
[16] " Link-local IPv6 Address . . . . . : fe80::9d9b:c44c:fd4d:1c77%11" 
[17] " IPv4 Address. . . . . . . . . . . : 10.201.120.157"    
[18] " Subnet Mask . . . . . . . . . . . : 255.255.255.0"    
[19] " Default Gateway . . . . . . . . . : 10.201.120.253"    
[20] ""                 
[21] "Tunnel adapter Local Area Connection* 13:"       
[22] ""                 
[23] " Media State . . . . . . . . . . . : Media disconnected"   
[24] " Connection-specific DNS Suffix . : "        
[25] ""                 
[26] "Tunnel adapter isatap.tbglondon.local:"        
[27] ""                 
[28] " Media State . . . . . . . . . . . : Media disconnected"   
[29] " Connection-specific DNS Suffix . : tbglondon.local"    
[30] ""                 
[31] "Tunnel adapter Teredo Tunneling Pseudo-Interface:"     
[32] ""                 
[33] " Media State . . . . . . . . . . . : Media disconnected"   
[34] " Connection-specific DNS Suffix . : "        

Teraz można użyć grep znaleźć wiersze z IPv4:

x[grep("IPv4", x)] 
[1] " IPv4 Address. . . . . . . . . . . : 10.201.120.184" 
[2] " IPv4 Address. . . . . . . . . . . : 10.201.120.157" 

I aby wyodrębnić tylko adres IP:

z <- x[grep("IPv4", x)] 
gsub(".*? ([[:digit:]])", "\\1", z) 
"10.201.120.184" "10.201.120.157" 
+4

oraz 'ifconfing' pod systemem uniksowym ... – agstudy

+0

@agstudy Dziękuję. Odpowiedź edytowana – Andrie

+0

dziękuję bardzo! – rdatasculptor

-1

This pobiera dokładnie to, co chcesz:

system('ipconfig getifaddr en0') 

192.168.1.73 
+0

twoje polecenie nie działa w R lub w oknie CMD (na mojej stacji roboczej Windows 7). Mógłbyś ponownie przetestować to. Może to tylko specyficzne dla twojej maszyny? Po prostu zwraca obszerną instrukcję pomocy dla polecenia 'ipconfig'. –

3

Ostatnio stworzyłem minimalny pakiet przy użyciu ipify.org, aby zrobić dokładnie to.

Użycie jest proste, można zainstalować za pomocą devtools i github.

library(devtools) install_github("gregce/ipify")

po zainstalowaniu jej tak proste, jak ładuje bibliotekę i jedno wywołanie funkcji ...

library(ipify) get_ip()

0

Choć @andrie wyjaśnił w języku bardzo laika i jestem pewien, że to pomogło nam dużo, aby zrozumieć jego funkcjonalność.

Stamtąd udostępniamy tylko jeden kod liniowy bez instalowania żadnego innego pakietu.

gsub(".*? ([[:digit:]])", "\\1", system("ipconfig", intern=T)[grep("IPv4", system("ipconfig", intern = T))]) 

Mam nadzieję, że będzie to pomocne!

Powiązane problemy