Ukoliko imate klijenta ili održavate udaljenu lokaciju koja nema statičku ip adresu, ili jednostavno imate potrebu da uvek znate spoljnu adresu određene mreže, u nastavku se nalazi jednostavna powershell skripta koja će vas obavestiti svaki put kada dodje do promene.
Pošto na nivou operativnog sitema račnara koji se nalazi u određenom LAN-u ne postoji način da se dođe do javne ip adrese te mreže, ova skripta poziva WebAPI (https://api.ipify.org) koji vraća ip adresu sa kojeg je HTTP_Request stigao (javnu ip adresu vaše mreže ukoliko se ne nalazite iza proksija) a zatim upoređuje sa lokalno sačuvanom adresom iz prethodne provere. Ukoliko adrese nisu iste, poslaće email obaveštenje sa detaljima o novoj ip adresi.
#Putanja do fajla u kom se čuva ip adresa iz poslednje provere
$filePath = "ip.txt"
$Old_IP = ''
$From = "sender@gmail.com"
$To = "receiver@gmail.com"
$Subject = "Ip changed"
$SMTPServer = "smtp.gmail.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("email username", "email password");
#blok koji proverava da li postoji fajl ip.txt na odredjenoj lokaciji
ukoliko nema kreira novi prazan fajl (da bi i prilikom prvog pokretanja skripte poslao obaveštenje) a ukoliko postoji uzima njegov sadržaj (ip iz poslednje provere)
if(!(Test-Path -Path $filePath))
{
new-item -Path $filePath –itemtype file
}
else
{
$Old_IP = Get-Content $filePath
}
#Pozivanje WebApi-ja koji vraća trenutnu javnu ip adresu
$url = 'https://api.ipify.org?format=json'
$Http_request = Invoke-RestMethod -Uri $url
$Curent_IP = $Http_request.ip
#Proverava adresu iz fajla sa preuzetom adresom
if($Old_IP -ne $Curent_IP){
$Curent_IP | Out-File ip.txt
$SMTPMessage = New-Object System.Net.Mail.MailMessage($From,$To,$Subject, $Curent_IP)
$SMTPClient.Send($SMTPMessage)
}