Ho avuto questa stessa domanda oggi e non ero soddisfatto delle risposte che ho visto qui o su Google, quindi ho scritto uno script PowerShell per inviarmi una notifica Slack ogni volta che il mio indirizzo IP cambia .
Se preferisci ricevere un'e-mail, puoi fare clic sui collegamenti nello script per visualizzare una versione diversa che supporti le e-mail di Outlook.
Spero che questo aiuti qualcuno e guadagni un voto. :-)
Salvare il testo seguente in un file .ps1. Modificalo come appropriato con il tuo URL webhook Slack. Salva. Fare clic con il tasto destro del mouse su "Esegui con PowerShell".
Oppure puoi programmarlo per l'esecuzione giornaliera o comunque spesso.
#Script to compare current IP with old IP and sends Slack notification if different (and do nothing if there was no change).
#We can put this as a scheduled task to run daily.
#ScriptName: IP_change_detection_notification.ps1
$slackWebhookUrl = "XXXXXXXXXX" #put yours here
$ipDetectionUrl = "https://wtfismyip.com/text"
$IPAddFile = "C:\code\IP_change_detection_notification.dat" #absolute path to file that stores the old IP record
$slackOutputFile = "C:\code\IP_change_detection_notification_Slack.txt"
$optionalDebuggingFile = "C:\code\IP_change_detection_notification_debugging.txt"
$Request = Invoke-WebRequest $ipDetectionUrl
$IP_new = ($Request.Content.Trim())
Write-Host "Current IP address: [$IP_new]"
#Check if old IP record exists
If(Test-Path "$IPAddFile")
{
#Get old IP
$IP_old = Get-Content "$IPAddFile"
#Compare IPs
if(-not($IP_new -eq $IP_old))
{
Write-Host "Old IP address: [$IP_old]"
$msg = "Your WAN IP has changed to $IP_new (was $IP_old)!"
Write-Host "$msg"
$body = $("{""text"":""$msg""}")
Write-Host "$body"
Invoke-RestMethod -Uri $slackWebhookUrl -Method Post -ContentType 'application/json' -Body $body -OutFile $slackOutputFile
"Notification Sent"
#Overwrite and update new IP
$IP_new | Out-File $IPAddFile
}
else
{"No change, no notification"}
}
else
{
#Create new, as file not found
$IP_new | Out-File $IPAddFile
"File created"
}
$(get-date -f yyyy-MM-dd_HH_mm_ss) | Out-File $optionalDebuggingFile
#Read-Host -Prompt "Press Enter to exit" #Comment out this line if this script will be run by a cron job. Otherwise, uncomment it so that you can see the results of the script in the console.
#This script was adapted from https://gallery.technet.microsoft.com/scriptcenter/Detect-IP-address-change-aeb51118 by Satyajit
Per far funzionare l'Utilità di pianificazione:
Ho dovuto eseguire PowerShell come amministratore e quindi eseguire Get-ExecutionPolicy
, che poi mi ha detto che il mio attuale ExecutionPolicy era "Limitato".
Poi ho corso Set-ExecutionPolicy RemoteSigned
(come mostrato qui, ma mi rende nervoso: https://stackoverflow.com/a/26955050/470749 ).
Quindi da un prompt dei comandi di Windows di base, ho provato a eseguire il comando seguente un paio di volte: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -File "C:\code\IP_change_detection_notification.ps1"
(una volta per memorizzare l'IP e una seconda volta per verificare se era cambiato).
(Fino a quando non riuscirai a farlo funzionare, non preoccuparti di provare a utilizzare l'Utilità di pianificazione.)
Quindi ho programmato un'attività con C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
come programma e -ExecutionPolicy ByPass -File C:\code\IP_change_detection_notification.ps1
come Argomenti.