Получить свой внешний IP-адрес в PowerShell — различия между версиями
Alexandre (обсуждение | вклад) (Новая страница: «{{Head-posh}} == Общее == Начнём данную инструкция с приведения примера самого скрипта. $text1 = ' |…») |
Alexandre (обсуждение | вклад) |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 37: | Строка 37: | ||
# При выводе нашего IP-адреса, в конце строки мы получали перенос строки, что очень портило вид при добавлении переменной $text2. Параметр '''Trim()''' удаляет этот перенос, что приводит к очень красивому виду в итоге.<br><br> | # При выводе нашего IP-адреса, в конце строки мы получали перенос строки, что очень портило вид при добавлении переменной $text2. Параметр '''Trim()''' удаляет этот перенос, что приводит к очень красивому виду в итоге.<br><br> | ||
− | '''Start-Sleep -s 15''' - задаем в секундах паузу перед очередным выполнением цикла. Желательно не указывать меньшее количество секунд, т.к. рискуем быть заблокированными на сайте. | + | '''Start-Sleep -s 15''' - задаем в секундах паузу перед очередным выполнением цикла. Желательно не указывать меньшее количество секунд, т.к. рискуем быть заблокированными на сайте.<br><br> |
− | Итог получаем такой: | + | Итог получаем такой (по понятным причинам IP адрес частично замазан): |
<center> | <center> | ||
[[Файл:Scr-getExtIP.png]] | [[Файл:Scr-getExtIP.png]] | ||
</center> | </center> | ||
+ | <br> | ||
+ | Данный скрипт можно комбинировать.<br><br> | ||
+ | Например можно запустить несколько окон с пингами за 1 раз (ну мало ли для каких целей это нужно):<br><br> | ||
+ | |||
+ | $Ping1 = '/c ping -t ya.ru' | ||
+ | $Ping2 = '/c ping -t google.com' | ||
+ | $Ping3 = '/c ping -t localhost' | ||
+ | |||
+ | $TimeIP = { | ||
+ | $webClient = New-Object -TypeName System.Net.WebClient | ||
+ | While (1 -ne 0) | ||
+ | { | ||
+ | $text2 = ' | Sample = 000.000.30.253' | ||
+ | $timestamp = Get-Date -Format('yyyy-MM-dd HH:mm:ss') | ||
+ | $ip = $webClient.DownloadString('<nowiki>http://myexternalip.com/raw</nowiki>').Trim() + $text2 | ||
+ | $timestamp + ' | IP = ' + $ip | ||
+ | Start-Sleep -s 15}} | ||
+ | |||
+ | #Запускаем пинг для каждого в новом окне консоли | ||
+ | Start-Process powershell -ArgumentList $Ping1 | ||
+ | Start-Process powershell -ArgumentList $Ping2 | ||
+ | Start-Process powershell -ArgumentList $Ping3 | ||
+ | |||
+ | #Запускаем вывод даты и внешнего IP в новом окне | ||
+ | Start-Process PowerShell -ArgumentList $TimeIP | ||
+ | |||
+ | В комментариях в данном скрипте всё описано.<br> | ||
+ | И это только малая часть того, что можно сделать.<br><br> | ||
[[Категория:PowerShell]] | [[Категория:PowerShell]] | ||
[[Категория:Инструкции]] | [[Категория:Инструкции]] |
Текущая версия на 16:00, 22 июня 2018
Общее
Начнём данную инструкция с приведения примера самого скрипта.
$text1 = ' | IP = ' $webClient = New-Object -TypeName System.Net.WebClient While (1 -ne 0) { $text2 = ' дополнительная информация которую можно не указывать, но здесь она нужна для примера' $timestamp = Get-Date -Format('yyyy-MM-dd HH:mm:ss') $timestamp + $text1 + $webClient.DownloadString('http://myexternalip.com/raw').Trim() + $text2 Start-Sleep -s 15 }
Разбор
Теперь разберём всё в подробностях.
Первая переменная $text1 в которой задаём текст для более красивого отображения нашего IP при выводе на экран
Следующая переменная $webClient - в данном случае даёт команду powershell, подключиться к указанному сайту и получить с него необходимые нам данные
While (1 -ne 0) задаёт цикл. Интерпретировать можно так: "Пока 1 не станет 0, то выполнять {то что идёт дальше}", а единица, в нашем случае, ни когда не станет нолем.
Далее идёт цикл, который будет выполняться бесконечно исходя из вышеприведённого условия.
Переменная $text2 - в ней задаём любой текст, если нужен. В моём случае, я задал текст в виде IP адреса как эталон, чтобы мне было легче понимать, переключился ли канал связи на резервный, у которого соответственно другой IP-адрес, или же я подключен к основному каналу связи.
$timestamp - в эту переменную будет помещаться текущая дата и время. Помещена в цикл, дабы у нас отображалось текущее время. Если вынести данную переменную за цикл, то время не будет обновляться, и будет отображаться постоянно то время, которое было при запуске скрипта.
Далее все переменные помещаем в одну строчку. Тут стоит отметить несколько моментов:
- Ссылка в скобках указывает на страницу, на которой будет выводится наш внешний IP-адрес в виде строки.
- При выводе нашего IP-адреса, в конце строки мы получали перенос строки, что очень портило вид при добавлении переменной $text2. Параметр Trim() удаляет этот перенос, что приводит к очень красивому виду в итоге.
Start-Sleep -s 15 - задаем в секундах паузу перед очередным выполнением цикла. Желательно не указывать меньшее количество секунд, т.к. рискуем быть заблокированными на сайте.
Итог получаем такой (по понятным причинам IP адрес частично замазан):
Данный скрипт можно комбинировать.
Например можно запустить несколько окон с пингами за 1 раз (ну мало ли для каких целей это нужно):
$Ping1 = '/c ping -t ya.ru' $Ping2 = '/c ping -t google.com' $Ping3 = '/c ping -t localhost' $TimeIP = { $webClient = New-Object -TypeName System.Net.WebClient While (1 -ne 0) { $text2 = ' | Sample = 000.000.30.253' $timestamp = Get-Date -Format('yyyy-MM-dd HH:mm:ss') $ip = $webClient.DownloadString('http://myexternalip.com/raw').Trim() + $text2 $timestamp + ' | IP = ' + $ip Start-Sleep -s 15}} #Запускаем пинг для каждого в новом окне консоли Start-Process powershell -ArgumentList $Ping1 Start-Process powershell -ArgumentList $Ping2 Start-Process powershell -ArgumentList $Ping3 #Запускаем вывод даты и внешнего IP в новом окне Start-Process PowerShell -ArgumentList $TimeIP
В комментариях в данном скрипте всё описано.
И это только малая часть того, что можно сделать.