Большинство пользователей командной строки, даже новички, видели, как используется ipconfig для чтения подробностей о сетевых интерфейсах и их соответствующей конфигурации. Однако конфигурация большинства устройств относится только к подключению к внутренней сети. Если вам нужно узнать IP-адрес внешнего (публичного) интернет-шлюза, вам придется проделать немного больше работы.
В командной строке Windows (cmd)
В командной строке (или в пакетном) вы можете использовать встроенную команду nslookup:
1 | nslookup myip.opendns.com resolver1.opendns.com |
Однако это немного более многословный вывод, чем нужно в контексте автоматизации.
Чтобы упростить задачу, нам, вероятно, потребуется разобрать вывод, что в командном-файле может быть утомительно. Итак, давайте воспользуемся CURL для вызова удаленного API.
CURL должен работать из коробки в последних версиях windows
1 | curl https://curlmyip.ru |
PowerShell
Если вы предпочитаете использовать PowerShell, вы можете использовать Invoke-WebRequest для вызова одного из множества удаленных веб-сайтов или API, которые предоставят вам необходимую информацию:
1 | Invoke-WebRequest curlmyip.ru |
Команда Invoke-WebRequest вернет отформатированный вывод PowerShell, содержащий краткое описание http-ответа от сервера.
Свойство Content содержит интересующую нас информацию. Вы можете использовать данные ответа как есть или получить только свойство Content, указав командную строку:
1 | (Invoke-WebRequest curlmyip.ru).Content |