Tôi đã có cùng một câu hỏi ngày hôm nay và tôi không hài lòng với câu trả lời tôi thấy ở đây hoặc trên Google, vì vậy tôi đã viết một tập lệnh PowerShell để gửi cho tôi thông báo Slack mỗi khi địa chỉ IP của tôi thay đổi .
Nếu bạn muốn nhận email, bạn có thể nhấp vào các liên kết trong tập lệnh để xem phiên bản khác hỗ trợ email Outlook.
Tôi hy vọng điều này sẽ giúp ai đó và kiếm được một phiếu bầu. :-)
Lưu văn bản sau vào tệp .ps1. Chỉnh sửa nó cho phù hợp với URL webhook Slack của riêng bạn. Tiết kiệm. Nhấp chuột phải vào tệp để "Chạy với PowerShell".
Hoặc bạn có thể lên lịch để chạy hàng ngày hoặc tuy nhiên thường xuyên.
#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
Để làm cho Trình lập lịch tác vụ hoạt động:
Tôi đã phải chạy PowerShell với tư cách quản trị viên và sau đó chạy Get-ExecutionPolicy
, sau đó nói với tôi rằng ExecutPolicy hiện tại của tôi là "Bị hạn chế".
Sau đó, tôi chạy Set-ExecutionPolicy RemoteSigned
(như được hiển thị ở đây, nhưng nó làm tôi lo lắng: https://stackoverflow.com/a/26955050/470749 ).
Sau đó, từ một dấu nhắc lệnh cơ bản của Windows, tôi đã thử chạy lệnh sau một vài lần: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -File "C:\code\IP_change_detection_notification.ps1"
(một lần để lưu trữ IP và lần thứ hai để kiểm tra xem nó có thay đổi không).
(Cho đến khi bạn làm việc đó, đừng bận tâm đến việc sử dụng Trình lập lịch tác vụ.)
Sau đó, tôi đã lên lịch một nhiệm vụ với C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
tư cách là chương trình và -ExecutionPolicy ByPass -File C:\code\IP_change_detection_notification.ps1
là Đối số.