오늘도 같은 질문이 있었고 여기 또는 Google에서 본 답변에 만족하지 못했기 때문에 IP 주소가 변경 될 때마다 Slack 알림을 보내도록 PowerShell 스크립트를 작성했습니다 .
전자 메일을 받으려면 스크립트의 링크를 클릭하여 Outlook 전자 메일을 지원하는 다른 버전을 볼 수 있습니다.
나는 이것이 누군가를 돕고 투표하기를 바랍니다. :-)
다음 텍스트를 .ps1 파일에 저장하십시오. 자신의 Slack 웹 후크 URL로 적절하게 편집하십시오. 저장. 파일을 마우스 오른쪽 단추로 클릭하여 "PowerShell으로 실행"하십시오.
또는 매일 또는 자주 실행되도록 예약 할 수 있습니다.
#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
작업 스케줄러를 작동 시키려면 :
PowerShell을 관리자 권한으로 실행 한 다음을 실행해야 Get-ExecutionPolicy
했는데 현재 ExecutionPolicy가 "제한적"이라고 말했습니다.
그럼 실행 Set-ExecutionPolicy RemoteSigned
(다음과 같이하지만, 그것은 나를 긴장하게 : https://stackoverflow.com/a/26955050/470749 ).
그런 다음 기본 Windows 명령 프롬프트에서 다음 명령을 두 번 실행했습니다. 한 번 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -File "C:\code\IP_change_detection_notification.ps1"
IP를 저장하고 두 번째로 변경 여부를 확인했습니다.
(작업이 완료 될 때까지 작업 스케줄러를 사용하려고하지 마십시오.)
그런 다음 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
프로그램과 -ExecutionPolicy ByPass -File C:\code\IP_change_detection_notification.ps1
인수로 작업을 예약했습니다 .