WAN IP-скрипт изменения - PullRequest
       2

WAN IP-скрипт изменения

0 голосов
/ 17 ноября 2018

Я пытаюсь записать и сравнить изменения моего IP-адреса в глобальной сети.

Я нашел очень полезный скрипт (извините, не могу вспомнить автора, но спасибо!), Чтобы сохранить IP в текстовом файле, и я немного изменил его в соответствии со своими потребностями. Теперь я хотел бы искать в текстовом файле каждый раз и добавлять на экран сообщение о том, что IP никогда не использовался ранее или дублируется.

Я не программист и буду благодарен за любую помощь.

Сценарий ниже.

$ipDetectionUrl = "https://wtfismyip.com/text"  
$IPAddFile = "C:\IP.txt" #absolute path to file that stores the old IP 
record  
$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" -Tail 1  
#Compare IPs  
if(-not($IP_new -eq $IP_old))  
{  
Write-Host "Old IP address: [$IP_old]"              
#Overwrite and update new IP  
$IP_new |  Out-File $IPAddFile -Append  
}  
else  
{"No change"}  
}  
else  
{  
#Create new, as file not found  
$IP_new |  Out-File $IPAddFile  
"File created"  
}  

1 Ответ

0 голосов
/ 17 ноября 2018

If может иметь несколько elseif с другими условиями, но только одно else

Правильное форматирование с отступами для блоков скриптов делает ваш код лучше
читаемым / понятным и для вас.

## Q:\Test\2018\11\17\SO_53351417.ps1

$ipDetectionUrl = "http://api.ipify.org"
$IPAddFile = "C:\IP.txt" #absolute path to file that stores the old IP record

$IP_new = (Invoke-WebRequest $ipDetectionUrl).Content.Trim()
Write-Host "Current IP address: [$IP_new]"

#Check if old IP record exists
If(!(Test-Path $IPAddFile)){
    #Create new, as file not found
    $IP_new | Out-File $IPAddFile -Encoding default
    "File {0} created" -f $IPAddFile
}

#Get all old IPs
$IP_old = Get-Content $IPAddFile

# 1st compare last IP, then other IPs
if($IP_new -eq $IP_old[-1]){
    "No change"
} else {
    if ($IP_old -contains $IP_new) {
        $LinesAgo = $IP_old.Length - [array]::IndexOf($IP_old,$IP_new') ######
        $wshell = New-Object -ComObject Wscript.Shell
        $wshell.Popup($IP_new,0,"IPaddress reused",0x0)|Out-Null
        Write-Host "Old IP address reused [$LinesAgo] lines ago: [$IP_new]" #####
    } else {
        Write-Host "New IP address: [$IP_new]"
    }
    # Append new (or reused) IP
    $IP_new |  Out-File $IPAddFile -Append  -Encoding default
}

Я использовал http://api.ipify.org, потому что он предпочитает IPv4 по IPv6-адресам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...