J'avais cette même question aujourd'hui, et je n'étais pas satisfait des réponses que j'ai vues ici ou sur Google, j'ai donc écrit un script PowerShell pour m'envoyer une notification Slack chaque fois que mon adresse IP change .
Si vous préférez recevoir un e-mail, vous pouvez cliquer sur les liens du script pour consulter une version différente qui prend en charge les e-mails Outlook.
J'espère que cela aide quelqu'un et mérite un vote. :-)
Enregistrez le texte suivant dans un fichier .ps1. Modifiez-le selon vos besoins avec votre propre URL de webhook Slack. Sauver. Cliquez avec le bouton droit sur le fichier pour "Exécuter avec PowerShell".
Ou vous pouvez le programmer pour qu'il s'exécute quotidiennement ou cependant souvent.
#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
Pour faire fonctionner le Planificateur de tâches:
J'ai dû exécuter PowerShell en tant qu'administrateur, puis exécuter Get-ExecutionPolicy
, ce qui m'a alors dit que ma politique d'exécution actuelle était «restreinte».
Ensuite, j'ai couru Set-ExecutionPolicy RemoteSigned
(comme indiqué ici, mais cela me rend nerveux: https://stackoverflow.com/a/26955050/470749 ).
Ensuite, à partir d'une invite de commande Windows de base, j'ai essayé d'exécuter la commande suivante à quelques reprises: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -File "C:\code\IP_change_detection_notification.ps1"
(une fois pour stocker l'IP et une deuxième fois pour vérifier si elle avait changé).
(Jusqu'à ce que cela fonctionne, ne vous embêtez pas à essayer d'utiliser le Planificateur de tâches.)
J'ai ensuite planifié une tâche avec C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
comme programme et -ExecutionPolicy ByPass -File C:\code\IP_change_detection_notification.ps1
comme arguments.