Кто-нибудь знает о функции R, которая может получить один собственный IP-адрес (на ПК, на котором вы работаете)? Было бы очень полезно! Большое спасибо заранее.
Функция для получения собственного IP-адреса из R?
Ответ 1
Вы можете отправить команду system()
в свою операционную систему:
- В Windows вы можете использовать
ipconfig
- В Linux используйте
ifconfig
Например, в Windows попробуйте вызвать system()
с аргументом intern=TRUE
, чтобы вернуть результаты в R:
x <- system("ipconfig", intern=TRUE)
Это возвращает:
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 . : "
Теперь вы можете использовать grep
для поиска строк с помощью IPv4
:
x[grep("IPv4", x)]
[1] " IPv4 Address. . . . . . . . . . . : 10.201.120.184"
[2] " IPv4 Address. . . . . . . . . . . : 10.201.120.157"
И извлечь только IP-адрес:
z <- x[grep("IPv4", x)]
gsub(".*? ([[:digit:]])", "\\1", z)
"10.201.120.184" "10.201.120.157"
Ответ 2
Недавно я создал минимальный пакет, используя ipify.org
, чтобы сделать это точно.
Использование легко, вы можете установить с помощью devtools
и github.
library(devtools)
install_github("gregce/ipify")
после установки, это так же просто, как загрузка библиотеки и один вызов функции...
library(ipify)
get_ip()
Ответ 3
Хотя @andrie объяснил это на очень непрофессиональном языке, и я уверен, что он очень помог нам понять его функциональность.
Итак, оттуда можно использовать только один код liner без установки какого-либо другого пакета.
gsub(".*? ([[:digit:]])", "\\1", system("ipconfig", intern=T)[grep("IPv4", system("ipconfig", intern = T))])
Надеюсь, это было бы полезно!
Ответ 4
Получает именно то, что вы хотите:
system('ipconfig getifaddr en0')
192.168.1.73