Каков хороший способ в PowerShell проверить наличие переключателя IP-адресов на веб-сервере?

#networking #powershell

Вопрос:

Проблема

Наш поставщик веб-хостинга меняет IP-адрес одного из серверов, на которых мы находимся. Нам дали временные рамки для того, когда произойдет переключение, но точных подробностей нет. Поэтому наша текущая проверка для бедных требует периодического обновления страницы в браузере, чтобы убедиться, что наш веб-сайт все еще существует.

Вопрос

Мы все здесь программисты, и меня убивает то, что требуется какая-либо ручная проверка. Я бы знал, как это сделать на других языках, но хотел бы знать, есть ли способ написать сценарий в PowerShell для решения этой проблемы. Кто-нибудь знает, как я могу это сделать?

Ответ №1:

Если вы можете предупредить, если страница исчезла или не имеет ожидаемого значения, вы можете использовать такой скрипт, как

 $ip = 192.168.1.1
$webclient = new-object System.Net.WebClient
$regex = 'regular expression to match something on your page'
$ping = new-object System.Net.NetworkInformation.Ping


do 
{
  $result = $ping.Send($ip)
  if ($result.status -ne 'TimedOut' )
  {
    $page = $webclient.downloadstring("http://$ip")
    if (($page -notmatch $regex) -or ($page -match '404') -or ($page -eq $null))
    { break}
  }
} while ($true)

write-host "The website has moved"
 

Комментарии:

1. Мило! Я думаю, мы уже близко. $ip должен быть полным http-адресом (т. е. 192.168.1.1 ). Кроме того, для этого решения требуется, чтобы веб-сервер всегда был на месте для данного $ip. Поэтому, когда сайт перемещается, пока веб-сервер все еще работает на этом сервере, я думаю, все должно быть хорошо.

2. Вы также можете обернуть все это проверкой пинга, чтобы убедиться, что хост работает, прежде чем проверять страницу. Я добавлю это в ответ.

Ответ №2:

Здесь будет указан IP-адрес для каждого сетевого адаптера в вашей системе.

 Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Select-Object -Property IPAddress