Я пытался собрать быстрый и грязный сценарий, чтобы вернуть геолокацию группы IP-адресов.
Я использую freegeoip.net и не могу найти быстрый эквивалент wget для строки cmd, поэтому использую для этого сценарий powershell, вызывая его из моего пакетного файла (или, по крайней мере, пытаясь, и я думаю, что здесь я терплю неудачу).
Командная строка:
for /F "tokens=* usebackq delims=" %a in ("E:\DATA\02.ips.txt") do (
set /a N+=1
powershell -command "E:\DATA\Resources\geolocation.ps1 %a"
)
(первую строку нужно пропустить, поскольку она содержит заголовок, а не IP-адрес)
geolocation.ps1:
wget freegeoip.net/csv/$args[0] -OutFile "E:\DATA\IPs\$args[0].txt"
Я надеюсь, что это даст мне папку с возвращенными CSV для каждого IP, которую я затем могу сопоставить в один файл с копией E: \ DATA \ IPs * .txt alltheips.txt, и этот файл затем будет загружен в другой приложение для использования.
Этот (очевидно) хеш - это пюре из того, что я нашел в Google и нашел здесь и там, но (ясно) я на самом деле не знаю, что я здесь делаю, поэтому любая помощь в недостающем фрагменте будет благодарна!
Короче говоря, то, что мне нужно, - это взять мой список IP-адресов (у меня есть текстовый файл с заголовком, а затем каждая строка представляет собой новый IP-адрес, файлы имеют длину x и будут меняться при каждом запуске - иногда он будет пустым, поэтому было бы удобно, если бы я мог проверить длину файла, и если он просто содержит заголовок, чтобы пропустить процесс). Сравните эти IP-адреса с freegeoip.net и сопоставьте данные, которые они предоставляют, в один файл для использования в программе, которая будет связывать местоположение пользователей с другими данными, которые я храню о них через IP.
Ура!
Поместите весь сценарий в сценарий. В этом случае не нужно упаковывать PowerShell в пакетный файл. На самом деле при этом вы многое теряете, поскольку PowerShell объектно-ориентирован.
# for the filename, this is a string
# quotes needed if there's a space,
# use single quotes unless the string is an expression which needs evaluation
#
# Import-CSV builds an array of objects from the contents of the csv
# using the first row as a header
# in your case the objects will be strings which are IP addresses
#
# For your own benefit, make sure the ip address column
# (only one columnt per your post) has a simple title in the first row
$IPList = Import-CSV E:\DATA\02.ips.txt
# the Foreach command is a for loop used with arrays or collections to loop through all the members
Foreach ($IPAddress in $IPList) {
# In PowerShell, wget is an alias for Invoke-WebRequest
# the $() wrapper around the $IPAddress.ipaddress is to force evaluation of that expression
Invoke-WebRequest "freegeoip.net/csv/$($IPAddress.ipaddress)" -OutFile "E:\DATA\IPs\$($IPAddress.ipaddress).txt"
}
Вот кодированный мной командный файл, который выполняет поиск IP-адресов с помощью API ipinfo.io. https://pastebin.com/Ucs2Kuqn Наслаждайтесь!