Плагин Nagios для проверки суммы каталогов md5 в Windows PowerShell - PullRequest
0 голосов
/ 13 мая 2019

Привет, я пытаюсь создать свой собственный плагин, чтобы проверить сумму md5 внутри каталога и сравнить ее со старым.

Я написал скрипт ниже

$Patch1= "C:\Users\User\Downloads\"
$Patch2= "D:\sqls\"
# Check both hashes are the same
Function Get-DirHash($Path1) {
    gci -File -Recurse $Path1 | Get-FileHash -Algorithm MD5 | select -ExpandProperty Hash | Out-File "C:/Program Files/temp.txt" -NoNewline
    $temp="C:/Program Files/temp.txt"
    $hash=Get-FileHash -Algorithm MD5 $temp
    $hash.Path=$Path1
    return $hash
}
Function Get-DirHash2($Path2) {
    gci -File -Recurse $Path2 | Get-FileHash -Algorithm MD5 | select -ExpandProperty Hash | Out-File "C:/Program Files/temp2.txt" -NoNewline
    $temp2="C:/Program Files/temp2.txt"
    $hash2=Get-FileHash -Algorithm MD5 $temp2
    $hash2.Path=$Path2
    return $hash2
}

Get-DirHash($Patch1).Hash
Get-DirHash2($Patch2).Hash
if (Get-DirHash($Patch1) -eq Get-DirHash2($Patch2)) {
    Write-Host 'Get-FileHash results are consistent' -ForegroundColor Green
} else {
    Write-Host 'Get-FileHash results are inconsistent!!' -ForegroundColor Red
}

Но вывод говорит, что хэшивсегда равны

Algorithm       Hash                                                                   Path
---------       ----                                                                   ----
MD5             1BF506BB988C14CD8D1F04F239AE401C
MD5             1BF506BB988C14CD8D1F04F239AE401C
Get-FileHash results are consistent

У вас, ребята, есть идеи, как это сделать?

1 Ответ

0 голосов
/ 13 мая 2019

Вы можете использовать одинаковые Get-DirHash для обоих путей.

$Patch1 = "D:\test1"
$Patch2 = "D:\test2"

function Get-DirHash([string]$Path) {
    # create a new temporary file (returns a FileInfo object)
    $temp = New-TemporaryFile
    Get-ChildItem -File -Recurse $Path | 
        Get-FileHash -Algorithm MD5 | 
        Select-Object -ExpandProperty Hash | 
        Out-File -FilePath $temp.FullName -NoNewline -Encoding ascii

    $hash = $temp | Get-FileHash -Algorithm MD5 | 
                    Select-Object Algorithm,Hash, @{Name = 'Path'; Expression = {$Path}}
    $temp | Remove-Item 
    return $hash
}

# Check both hashes are the same

$hash1 = Get-DirHash($Patch1)
$hash2 = Get-DirHash($Patch2)

if ($hash1.Hash -eq $hash2.Hash) {
    Write-Host 'Get-FileHash results are consistent' -ForegroundColor Green
} else {
    Write-Host 'Get-FileHash results are inconsistent!!' -ForegroundColor Red
}

# output the objects on screen
$hash1
$hash2

Использование двух разных папок для $Patch1 и $Patch2, в результате получается

Get-FileHash results are inconsistent!!

Algorithm Hash                             Path    
--------- ----                             ----    
MD5       3C13B5C3F5D3EFC25BAE427CAC194F8D D:\test1
MD5       DC21045CDDFF056E88933D82CB18DAEC D:\test2
...