Eu tinha a mesma pergunta hoje e não estava satisfeito com as respostas que vi aqui ou no Google, então escrevi um script do PowerShell para me enviar uma notificação do Slack sempre que meu endereço IP mudar .
Se você preferir receber um email, clique nos links do script para ver uma versão diferente que ofereça suporte a emails do Outlook.
Espero que isso ajude alguém e ganhe um voto. :-)
Salve o texto a seguir em um arquivo .ps1. Edite-o conforme apropriado com seu próprio URL de webhook do Slack. Salve . Clique com o botão direito do mouse no arquivo para "Executar com o PowerShell".
Ou você pode agendá-lo para ser executado diariamente ou com frequência.
#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
Para que o Agendador de tarefas funcione:
Eu tive que executar o PowerShell como administrador e, em seguida Get-ExecutionPolicy
, executar , o que me disse que minha atual ExecutionPolicy era "Restrita".
Então eu corri Set-ExecutionPolicy RemoteSigned
(como mostrado aqui, mas isso me deixa nervoso: https://stackoverflow.com/a/26955050/470749 ).
Em um prompt de comando básico do Windows, tentei executar o seguinte comando algumas vezes: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -File "C:\code\IP_change_detection_notification.ps1"
(uma vez para armazenar o IP e uma segunda vez para verificar se havia sido alterado).
(Até conseguir que isso funcione, não se preocupe em tentar usar o Agendador de tarefas.)
Em seguida, agendei uma tarefa com C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
o programa e -ExecutionPolicy ByPass -File C:\code\IP_change_detection_notification.ps1
os argumentos.