Inital Upload

This commit is contained in:
2018-11-18 14:18:52 +01:00
parent 0115c0a39f
commit 4428ea82b4
2 changed files with 179 additions and 1 deletions

View File

@@ -0,0 +1,164 @@
<#
.SYNOPSIS
PRTG Acronis Backup Statusreport
.DESCRIPTION
Dieses Script wertet den Status der Windows Server Sicherung aus
und versendet auf Basis der Daten eine Mail im HTML-Format über den
Status der letzten Sicherung. Zusätzlich werden Informationen über das
Sicherungsmedium und den freien Speicher übermittelt.
.PARAMETER Server
The IP or DNS of the Server running Acronis. You can use the %host parameter of PRTG.
.PARAMETER User
User with login rights to Acronis.
.PARAMETER Password
The Password for the User.
.OUTPUTS
PRTG XML to console
.EXAMPLE
C:\PS> Get-AcronisJobResults.ps1 -Server acronis.company.com -User company\backupAdmin -Password securePhrase1
.LINK
https://www.ksite.de
.NOTES
AUTHOR : Ralf Kirchner
EMAIL : rkirchner@ksite.de
DATE : 30.06.2018
#>
param(
[Parameter(Mandatory=$True)][string]$Server,
[string]$User,
[string]$Password
)
#PRTG wants numeric values. Acronis provides the last result as string.
$ResultLookUp=@{"ok" = 0; "Warning" = 1; "Error" = 2; "Failed" = 2}
#Helper function for writing the same XML format for all kind of jobs.
function Build-XML($Job, $LastResult)
{
write-host "<result>"
write-host -NoNewline "<channel>"
write-host -NoNewline $Job
write-host "</channel>"
write-host -NoNewline "<value>"
write-host -NoNewline $ResultLookUp[$LastResult]
write-host "</value>"
write-host "<float>0</float>"
write-host "<ValueLookup>ps.acronis.jobState</ValueLookup>"
write-host "</result>"
}
$command = @'
cmd.exe /C "C:\Program Files\Acronis\CommandLineTool\acrocmd.exe" list plans --host=$HostName --credentials=$LoginName,$LoginPassword --log="c:\tmp\AcronisBackupStatus.xml"
'@
################# erstellen der XML datei und einlesen
function Test-XMLFile {
<#
.SYNOPSIS
Test the validity of an XML file
#>
[CmdletBinding()]
param (
[parameter(mandatory=$true)][ValidateNotNullorEmpty()][string]$xmlFilePath
)
# Check the file exists
if (!(Test-Path -Path $xmlFilePath))
{
throw "$xmlFilePath is not valid. Please provide a valid path to the .xml fileh"
}
# Check for Load or Parse errors when loading the XML file
$xml = New-Object System.Xml.XmlDocument
try {
$xml.Load((Get-ChildItem -Path $xmlFilePath).FullName)
return $true
}
catch [System.Xml.XmlException] {
Write-Verbose "$xmlFilePath : $($_.toString())"
return $false
}
}
Invoke-Expression -Command:$command
$Data = New-Object xml
$Data.psbase.PreserveWhitespace = $false
while ((Test-XMLFile "c:\tmp\AcronisBackupStatus.xml") -eq $false ) {
$null = Invoke-Expression -Command:$command
}
$Data.Load("c:\tmp\AcronisBackupStatus.xml")
ForEach( $Plan in $Data.list_plans.output_data.list.plan ) {
$Plan.Status = $Plan.Status.Replace("`r`n","")
$Plan.Status = $Plan.Status.Replace(" ","")
$Plan.Status = $Plan.Status.ToLower()
If ($Plan.Status -eq "ok") {
$errorvalue = 0
} else {
$errorvalue = $errorvalue + 1
$text = $text + $Plan.Name + "has Status " + $Plan.Status + " ! "
}
$Readdate = [datetime]::ParseExact($Plan.next_start.substring(0,19), "dd.MM.yyyy HH:mm:ss", $null)
if ($Readdate -ge $curdate) {
} else {
$errorvalue = $errorvalue + 1
$text = $text + $Plan.Name + "has Next Start Time in the Past : " + $Readdate + " ! "
}
$Plan.State = $Plan.State.Replace("`r`n","")
$Plan.State = $Plan.State.Replace(" ","")
$Plan.State = $Plan.State.ToLower()
$Plan.State
If ($Plan.State -eq "need_interaction") {
$errorvalue = $errorvalue + 1
$text = $text + $Plan.Name + "has State Need Interaction ! "
} else {
}
}
"<prtg>"
"<result>"
"<channel>"
"BackupStatus"
"</channel>"
"<unit>Custom</unit>"
"<CustomUnit>Status</CustomUnit>"
"<FLOAT>0</FLOAT>"
"<value>"
echo $errorvalue
"</value>"
"<LimitMaxError>0,5</LimitMaxError>"
"<LimitMode>1</LimitMode>"
"</result>"
"<Text>"
If ($errorvalue -eq 0) {
echo "Alles Ok"
} else {
echo $text
}
"</Text>"
"</prtg>"

View File

@@ -1,3 +1,17 @@
# PRTG-AcronisBackup
PRTG Sensor für Acronis Backup Monitoring
PRTG Sensor für Acronis Backup Monitoring
# Download
[ZIP-Datei mit der Vorlage und den erforderlichen zusätzlichen Dateien.](https://dev.ksite.de/rkirchner/PRTG-AcronisBackup/archive/master.zip)
# Installation
Alle Dateien im PRTG-Unterverzeichnis müssen in das PRTG-Programmverzeichnis aufgenommen werden.
Das bedeutet, kopieren Sie die Dateien von "PRTG" in "%programfiles (x86)%\PRTG Network Monitor" und die
Dateien werden an die richtigen Stellen in den Unterverzeichnissen kopiert.
Wenn das Paket MIB-Dateien enthält, werden diese erst geladen, wenn PRTG neu gestartet wird.
Suchvorgänge können manuell neu geladen werden, indem Sie auf der Seite Admin Tools "*Setup -> Systemverwaltung -> Verwaltung*" klicken, oder im Webbrowser die URL: *https://{PRTGServerIPandPort}/api/loadlookups.htm* aufrufen.
Die restlichen Dateien dienen zur Dokumentation und zum Testen.