Translate

петак, 29. јануар 2016.

Public ip skripta

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)
}


Нема коментара:

Постави коментар