<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://znil.net/index.php?action=history&amp;feed=atom&amp;title=Zabbix%3ATemplate_BackupExec_2010_Jobs</id>
	<title>Zabbix:Template BackupExec 2010 Jobs - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://znil.net/index.php?action=history&amp;feed=atom&amp;title=Zabbix%3ATemplate_BackupExec_2010_Jobs"/>
	<link rel="alternate" type="text/html" href="https://znil.net/index.php?title=Zabbix:Template_BackupExec_2010_Jobs&amp;action=history"/>
	<updated>2026-05-06T00:44:17Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in znilwiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://znil.net/index.php?title=Zabbix:Template_BackupExec_2010_Jobs&amp;diff=9513&amp;oldid=prev</id>
		<title>BLinz2: Textersetzung - „&lt;comments&gt;“ durch „&lt;comments /&gt;“</title>
		<link rel="alternate" type="text/html" href="https://znil.net/index.php?title=Zabbix:Template_BackupExec_2010_Jobs&amp;diff=9513&amp;oldid=prev"/>
		<updated>2017-08-06T18:52:08Z</updated>

		<summary type="html">&lt;p&gt;Textersetzung - „&amp;lt;comments&amp;gt;“ durch „&amp;lt;comments /&amp;gt;“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
[[Kategorie:Zabbix]]&lt;br /&gt;
[[Kategorie:Zabbix_Templates]]&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;#039;&amp;#039;&amp;#039;Changelog:&amp;#039;&amp;#039;&amp;#039;&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* 01.04.2014: Erste Öffentliche Version&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;#039;&amp;#039;&amp;#039;Bekannte Fehler:&amp;#039;&amp;#039;&amp;#039;&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* Wenn ein Job &amp;quot;Nicht eingehalten&amp;quot; wurde gibt mein Tool ein &amp;quot;ZBX_NOTSUPPORTED&amp;quot; zurück - weil BackupExec auch nur ein &amp;#039;&amp;#039;&amp;#039;-1&amp;#039;&amp;#039;&amp;#039; zurück gemeldet hat - was bedeutet das es dieses Auftrag nicht gibt. Der Auftrag wird beim AutoDiscovery weiterhin gefunden - aber die Items gehen alle auf &amp;#039;&amp;#039;&amp;#039;grau&amp;#039;&amp;#039;&amp;#039; bis ein Auftrag wieder einen anderen Fehlergrund hat. Ich suche noch wie ich in Fall von &amp;quot;Nicht eingehalten&amp;quot; an die Auftragsdaten kommen ...&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Download==&lt;br /&gt;
&amp;lt;big&amp;gt;Download: &amp;#039;&amp;#039;&amp;#039;[[Media:ZabbixTemplateBackupExec2010.zip|ZabbixTemplateBackupExec2010.zip]]&amp;#039;&amp;#039;&amp;#039;&amp;lt;/big&amp;gt; Version 1.0.0.73&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Template für Zabbix 3.0.x: &amp;#039;&amp;#039;&amp;#039;[[Media:BackupExec2010_Template_Zabbix3.0.0.zip|BackupExec2010_Template_Zabbix3.0.0.zip]]&amp;#039;&amp;#039;&amp;#039;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Vorwort==&lt;br /&gt;
Da wir alles mit Zabbix Überwachen wollten wir auch das vielfach eingesetzte BackupExec 2010 überwachen. Die Dienste waren schon mal mit der automatischen Diensteerkennung abgedeckt (siehe [[Zabbix:Template Windows Service Auto-Discover - Windows Dienste automatisch entdecken]]), nun fehlten noch die Aufträge.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Als Grundlage für dieses Template nahm ich die &amp;lt;code&amp;gt;bemcmd.exe&amp;lt;/code&amp;gt; die wohl seit mindestens BackupExec 12.5 immer mit dabei ist. Mein Tool prüft aber auf den Installationspfad von BackupExec 2010 in der Registry, für ältere Versionen müsste man diese Prüfung anpassen.&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Screenshots / Bilder==&lt;br /&gt;
[[Datei:Zabbix-BackupExec2010-001.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:Zabbix-BackupExec2010-002.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Funktionsweise==&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;#039;&amp;#039;&amp;#039;Wie funktioniert es?&amp;#039;&amp;#039;&amp;#039;&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Die &amp;lt;code&amp;gt;backupexec2010.exe&amp;lt;/code&amp;gt; wird vom Zabbix Agenten auf dem jeweiligen Server aufgerufen.&amp;lt;br&amp;gt;&lt;br /&gt;
Die &amp;#039;&amp;#039;&amp;#039;.exe&amp;#039;&amp;#039;&amp;#039; ermittelt in der Registry den Installationspfad von BackupExec 2010 und sucht darüber die &amp;lt;code&amp;gt;bemcmd.exe&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Diese wird von der &amp;#039;&amp;#039;&amp;#039;backupexec2010.exe&amp;#039;&amp;#039;&amp;#039; aufgerufen und kennt verschiedene Parameter:&amp;lt;br&amp;gt;&lt;br /&gt;
 /? oder -?     : Hilfe Anzeigen&lt;br /&gt;
 &lt;br /&gt;
 discoverjobs   : Erzeugt eine Liste im JSON Format über alle Backup-Aufträge&lt;br /&gt;
                  die wiederkehrend geplant sind. (Job State 18) Diese Liste wird vom Zabbix&lt;br /&gt;
                  Template für das Auto-Discovery genutzt. Zurück gegeben werden&lt;br /&gt;
                  der Auftragsname und die eindeutige Job-ID (in { }).&lt;br /&gt;
                  Des weiteren werden alle Aufträge die an einen anderen Auftrag&lt;br /&gt;
                  angehängts sind (Job State 23) und alle Aufträge die von einem&lt;br /&gt;
                  anderen Job abhängig sind auf grund von Richtlinien (Job State 25)&lt;br /&gt;
                  erkannt und an das Template übergeben.&lt;br /&gt;
 &lt;br /&gt;
 Die nachfolgenden Parameter erwarten als 2. Parameter die Job Id!&lt;br /&gt;
 &lt;br /&gt;
 jobstatus      : Gibt den Status des letzen Backup-Auftrages zurück. Dies wäre&lt;br /&gt;
                  nicht ein aktuell laufender Backup-Auftrag.&lt;br /&gt;
                  Bekannte Rückgabewerte für Trigger sind:&lt;br /&gt;
                    1 : Abgebrochen&lt;br /&gt;
                    3 : Erfolgreich (mit Ausnahmen)&lt;br /&gt;
                    6 : Fehlgeschlagen&lt;br /&gt;
                   19 : Erfolgreich&lt;br /&gt;
 &lt;br /&gt;
 jobhowlongago  : Gibt die Zeit in Sekunden zurück die seit dem letzen Start des&lt;br /&gt;
                  Auftrages vergangen sind. Mit einem Trigger läßt sich so abfangen&lt;br /&gt;
                  das ein Auftrag nicht mehr wie geplant angelaufen ist.&lt;br /&gt;
 &lt;br /&gt;
 jobbytes       : Gibt die gesamte gesicherte Datenmenge in Bytes zurück&lt;br /&gt;
 &lt;br /&gt;
 jobruntime     : Gibt die Laufzeit des Backup-Auftrages in Sekunden zurück&lt;br /&gt;
 &lt;br /&gt;
 jobdirectorys  : Gibt die Anzahl der gesicherten Verzeichnisse zurück&lt;br /&gt;
 &lt;br /&gt;
 jobfiles       : Gibt die Anzahl der gesicherten Dateien zurück&lt;br /&gt;
 &lt;br /&gt;
 jobskipped     : Gibt die Anzahl der übersprungenden Dateien zurück&lt;br /&gt;
 &lt;br /&gt;
 jobcorrupt     : Gibt die Anzahl defekter, nicht gesicherten Dateien zurück&lt;br /&gt;
 &lt;br /&gt;
 jobinuse       : Gibt die Anzahl von Dateien die in Benutzung waren und nicht&lt;br /&gt;
                  gesichert werden konnten zurück&lt;br /&gt;
Damit könnt Ihr das ganze zuvor einmal auf der Kommandozeile / DOS-Box testen.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Template==&lt;br /&gt;
Zunächst müsst Ihr unter&lt;br /&gt;
 Administration -&amp;gt; General -&amp;gt; Value mapping&lt;br /&gt;
Das folgende, neue Value mapping anlegen:&amp;lt;br&amp;gt;&lt;br /&gt;
:[[Datei:Zabbix-BackupExec2010-003.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
 Name:       BackupExec 2010&lt;br /&gt;
 Value:   1  Abgebrochen&lt;br /&gt;
          3  Erfolgreich (mit Ausnahmen)&lt;br /&gt;
          6  Fehlgeschlagen&lt;br /&gt;
         19  Erfolgreich&lt;br /&gt;
Im Zip-Archiv findet Ihr neben der &amp;lt;code&amp;gt;backupexec2010.exe&amp;lt;/code&amp;gt; auch das Template in Deutsch.&amp;lt;br&amp;gt;&lt;br /&gt;
Die deutschen Versionen findet Ihr nach dem Import in der Hostgruppe &amp;#039;&amp;#039;&amp;#039;&amp;#039;Templates znil.net&amp;#039;&amp;#039;&amp;#039;&amp;#039; mit den Namen&lt;br /&gt;
 znil Template BackupExec 2010 Auftragsueberwachung ACTIVE AGENT&lt;br /&gt;
Also nur eine Active Agent Version - paasiv müsstet ihr eben selbst daraus bauen bei Bedarf&amp;lt;br&amp;gt;&lt;br /&gt;
Darin sind NUR die Items - keine Trigger - die müsst ihr euch selbst anlegen. Als Hilfe dafür habe ich z.B. die Rückgabewerte gebaut wie lange der letzte Start her ist. Damit lässt sich indirekt erkennen wenn z.B,. ein Job hängt (wenn er z.B. mehr als 25h nicht neu gestartet wurde) etc.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;big&amp;gt;Download: &amp;#039;&amp;#039;&amp;#039;[[Media:ZabbixTemplateBackupExec2010.zip|ZabbixTemplateBackupExec2010.zip]]&amp;#039;&amp;#039;&amp;#039;&amp;lt;/big&amp;gt; Version 1.0.0.73&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Template für Zabbix 3.0.x: &amp;#039;&amp;#039;&amp;#039;[[Media:BackupExec2010_Template_Zabbix3.0.0.zip|BackupExec2010_Template_Zabbix3.0.0.zip]]&amp;#039;&amp;#039;&amp;#039;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;#039;&amp;#039;&amp;#039;Zur Installation müsst Ihr folgendes tun:&amp;#039;&amp;#039;&amp;#039;&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* Kopiert die &amp;lt;code&amp;gt;backupexec2010.exe&amp;lt;/code&amp;gt; in das Verzeichnis in dem auch schon der Zabbix-Agent ist, z.B.&lt;br /&gt;
 C:\Program Files\Zabbix&lt;br /&gt;
* Tragt in die Agenten-Konfigurationsdatei, in der Regel ist das die &amp;lt;code&amp;gt;zabbix_agentd.win.conf&amp;lt;/code&amp;gt; die Zeile&lt;br /&gt;
 UserParameter=znil.BackupExec2010[*],&amp;quot;C:\Program Files\Zabbix\backupexec2010.exe&amp;quot; $1 &amp;quot;$2&amp;quot;&lt;br /&gt;
ein - Pfad natürlich ggf. anpassen&amp;lt;br&amp;gt;&lt;br /&gt;
* Startet des Zabbix Agenten Dienst neu&lt;br /&gt;
 net stop &amp;quot;zabbix agent&amp;quot;&lt;br /&gt;
 net start &amp;quot;zabbix agent&amp;quot;&lt;br /&gt;
*Import eine der &amp;lt;code&amp;gt;.XML&amp;lt;/code&amp;gt; Dateien in Zabbix und verknüpft diese mit dem Host.&lt;br /&gt;
* Warten! Alle 3600 Sekunden = 1 Stunde wird die Abfrage gestartet.&amp;lt;br&amp;gt;&lt;br /&gt;
* Da erst die Aufträge gefunden werden und dann daurch die Items angelegt werden dauert es eine Weile bis der Agent davon weis.&amp;lt;br&amp;gt;&lt;br /&gt;
* Als Beschleunigung: Nachdem Ihr in Zabbix die Items sehen könnt startet den AGenten auf dem Server noch einmal neu. Wen Ihr noch einen Proxy dazwishen habt müsst ihr den Dienst auf diesen auch einmal neu starten ... oder einfach abwarten!&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Quellcode==&lt;br /&gt;
Hier noch für Interessierte der Quellcode der &amp;lt;code&amp;gt;backupexec2010.exe&amp;lt;/code&amp;gt;:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;AutoIt&amp;quot;&amp;gt;&lt;br /&gt;
#NoTrayIcon&lt;br /&gt;
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****&lt;br /&gt;
#AutoIt3Wrapper_Icon=Icon256-32.ico&lt;br /&gt;
#AutoIt3Wrapper_Outfile=BackupExec2010.exe&lt;br /&gt;
#AutoIt3Wrapper_Change2CUI=y&lt;br /&gt;
#AutoIt3Wrapper_Res_Description=Zabbix Available Windows Updates&lt;br /&gt;
#AutoIt3Wrapper_Res_Fileversion=1.0.0.74&lt;br /&gt;
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y&lt;br /&gt;
#AutoIt3Wrapper_Res_LegalCopyright=2013 Bernhard Linz&lt;br /&gt;
#AutoIt3Wrapper_Res_SaveSource=y&lt;br /&gt;
#AutoIt3Wrapper_Res_Language=1031&lt;br /&gt;
#AutoIt3Wrapper_Res_Field=Website|http://znil.net&lt;br /&gt;
#AutoIt3Wrapper_Res_Field=Manual|http://znil.net/index.php?title=Zabbix:Template_BackupExec_2010_Jobs&lt;br /&gt;
#AutoIt3Wrapper_Res_Field=See You|znil.net&lt;br /&gt;
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****&lt;br /&gt;
Opt(&amp;#039;MustDeclareVars&amp;#039;, 1)&lt;br /&gt;
#Region    ;************ Includes ************&lt;br /&gt;
#Include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;Date.au3&amp;gt;&lt;br /&gt;
#EndRegion ;************ Includes ************&lt;br /&gt;
; ##########################################################################################################################&lt;br /&gt;
; ##########################################################################################################################&lt;br /&gt;
; # backupexec2010.exe --&amp;gt; Tool for Check BackupJobs in Zabbix                                                             #&lt;br /&gt;
; # 2013 Bernhard Linz    /    Bernhard@znil.de    /    http://znil.net                                                    #&lt;br /&gt;
; # Idea and Original at Zabbix Wiki                                                                                       #&lt;br /&gt;
; #                                                                                                                        #&lt;br /&gt;
; # Latest Version of this Program and Template in German:                                                                 #&lt;br /&gt;
; # http://znil.net/index.php?title=Zabbix:Template_BackupExec_2010_Jobs                                                   #&lt;br /&gt;
; #                                                                                                                        #&lt;br /&gt;
; #	         ________  .__   __.  __   __        .__   __.  _______ .___________.                                          #&lt;br /&gt;
; #	        |       /  |  \ |  | |  | |  |       |  \ |  | |   ____||           |                                          #&lt;br /&gt;
; #	        `---/  /   |   \|  | |  | |  |       |   \|  | |  |__   `---|  |----`                                          #&lt;br /&gt;
; #	           /  /    |  . `  | |  | |  |       |  . `  | |   __|      |  |                                               #&lt;br /&gt;
; #	          /  /----.|  |\   | |  | |  `----.__|  |\   | |  |____     |  |                                               #&lt;br /&gt;
; #	         /________||__| \__| |__| |_______(__)__| \__| |_______|    |__|                                               #&lt;br /&gt;
; #                                                                                                                        #&lt;br /&gt;
; ##########################################################################################################################&lt;br /&gt;
; ##########################################################################################################################&lt;br /&gt;
&lt;br /&gt;
; find the &amp;#039;bemcmd.exe&amp;#039; - take a look at Registry of Host&lt;br /&gt;
Dim $SoftwareBasePaths[3] = [&amp;quot;HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Symantec Backup Exec 13.0&amp;quot;, _&lt;br /&gt;
							 &amp;quot;HKLM64\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Symantec Backup Exec 13.0&amp;quot;, _&lt;br /&gt;
							 &amp;quot;HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Symantec Backup Exec 13.0&amp;quot;]&lt;br /&gt;
Global $bemcmdexe&lt;br /&gt;
Dim $aparameter[6]&lt;br /&gt;
	$aparameter[0] = &amp;quot;-o23 -j -s18 -i&amp;quot; 					; get a List of scheduled jobs&lt;br /&gt;
	$aparameter[1] = &amp;quot;-o23 -j -s16&amp;quot; 					; get a list of current running jobs&lt;br /&gt;
	$aparameter[2] = &amp;#039;-o21 -e -j&amp;quot;Name of Job&amp;quot;&amp;#039;			; get last Exit-Code of a specific job by Name&lt;br /&gt;
	$aparameter[3] = &amp;#039;-o21 -e -i{ID of Job}&amp;#039;			; get last Exit-Code of a specific job by ID&lt;br /&gt;
	$aparameter[4] = &amp;quot;-o23 -j -s23 -i&amp;quot; 					; get a List of jobs wich are linked to a master job&lt;br /&gt;
	$aparameter[5] = &amp;quot;-o23 -j -s25 -i&amp;quot; 					; get a List of jobs wich dependant for an policy job&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dim $stemp&lt;br /&gt;
Dim $atemp&lt;br /&gt;
Dim $aDateTemp&lt;br /&gt;
Dim $aRuntimeTemp&lt;br /&gt;
Dim $aBackupJobs_byName[1] = [ 0 ]&lt;br /&gt;
Dim $aBackupJobs_byID[1] = [ 0 ]&lt;br /&gt;
&lt;br /&gt;
Dim $s_JSONOutput&lt;br /&gt;
Dim $sRunCommand&lt;br /&gt;
Dim $sJobStatus&lt;br /&gt;
Dim $iJobStatus&lt;br /&gt;
Dim $iJobhowlongago&lt;br /&gt;
Dim $iJobBytes&lt;br /&gt;
Dim $iJobRuntime&lt;br /&gt;
Dim $iJobDirectorys&lt;br /&gt;
Dim $iJobFiles&lt;br /&gt;
Dim $iJobSkipped&lt;br /&gt;
Dim $iJobCorrupt&lt;br /&gt;
Dim $iJobInUse&lt;br /&gt;
&lt;br /&gt;
;                          10        20        30        40        50        60        70        80&lt;br /&gt;
;                 12345678901234567890123456789012345678901234567890123456789012345678901234567890&lt;br /&gt;
Dim $s_Header = _&lt;br /&gt;
		&amp;quot;+------------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;| BackupExec2010.exe - Version &amp;quot; &amp;amp; FileGetVersion(@ScriptName) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;+------------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;| 2014 von Bernhard Linz für http://znil.net - Kontakt: Bernhard@znil.net&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;+------------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF&lt;br /&gt;
&lt;br /&gt;
;                          10        20        30        40        50        60        70        80&lt;br /&gt;
;                 12345678901234567890123456789012345678901234567890123456789012345678901234567890&lt;br /&gt;
Dim $s_HilfeText = _&lt;br /&gt;
		&amp;quot;Hilfsprogramm für Zabbix als UserParameter um Backup-Aufträge zu überwachen&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;Getestet und entwickelt mit backupExec 2010 R3, wird aber auch mit vielen&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;älteren Versionen funktionieren - solange es eine bemcmd.exe im Programm-&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;Verzeichnis gibt.&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;---------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;Aufruf: &amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		@ScriptName &amp;amp; &amp;quot; &amp;lt;Option&amp;gt; &amp;lt;Parameter&amp;gt;&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;Optionen:&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;---------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; /? oder -?     : Diese Hilfe Anzeigen&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; discoverjobs   : Erzeugt eine Liste im JSON Format über alle Backup-Aufträge&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;                  die wiederkehrend geplant sind. (Job State 18) Diese Liste wird vom Zabbix&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;                  Template für das Auto-Discovery genutzt. Zurück gegeben werden&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;                  der Auftragsname und die eindeutige Job-ID (in { }).&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;                  Des weiteren werden alle Aufträge die an einen anderen Auftrag&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;                  angehängts sind (Job State 23) und alle Aufträge die von einem&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;                  anderen Job abhängig sind auf grund von Richtlinien (Jon State 25)&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;                  erkannt und an das Template übergeben.&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; jobstatus      : Gibt den Status des letzen Backup-Auftrages zurück. Dies wäre&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;                  nicht ein aktuell laufender Backup-Auftrag.&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;                  Bekannte Rückgabewerte für Trigger sind:&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;                    1 : Abgebrochen&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;                    3 : Erfolgreich (mit Ausnahmen)&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;                    6 : Fehlgeschlagen&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;                   19 : Erfolgreich&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; jobhowlongago  : Gibt die Zeit in Sekunden zurück die seit dem letzen Start des&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;                  Auftrages vergangen sind. Mit einem Trigger läßt sich so abfangen&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;                  das ein Auftrag nicht mehr wie geplant angelaufen ist.&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; jobbytes       : Gibt die gesamte gesicherte Datenmenge in Bytes zurück&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; jobruntime     : Gibt die Laufzeit des Backup-Auftrages in Sekunden zurück&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; jobdirectorys  : Gibt die Anzahl der gesicherten Verzeichnisse zurück&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; jobfiles       : Gibt die Anzahl der gesicherten Dateien zurück&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; jobskipped     : Gibt die Anzahl der übersprungenden Dateien zurück&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; jobcorrupt     : Gibt die Anzahl defekter, nicht gesicherten Dateien zurück&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; jobinuse       : Gibt die Anzahl von Dateien die in Benutzung waren und nicht&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;                  gesichert werden konnten zurück&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;HINWEIS: Alle Rückgabewerte sind zum letzten beendeten Backup-Auftrag, nicht zu aktuell&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;         laufenden Aufträgen. Durch &amp;#039;jobhowlongago&amp;#039; und &amp;#039;jobruntime&amp;#039; kann aber erkannt&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;         wenn ein Job hängt - z.B. wenn der letzte Start des täglichen Backup mehr als&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;         25h zurück liegt&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;+------------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;| BackupExec2010.exe ist FREEWARE!&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;| Kopieren, weitergeben ausdrücklich erlaubt!&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;| Die jeweils aktuelleste Version und Anleitungen findet Ihr unter:&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;| http://http://znil.net/index.php?title=Zabbix:Template_BackupExec_2010_Jobs&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;+------------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; ##########################################################################################################################&lt;br /&gt;
; ##########################################################################################################################&lt;br /&gt;
;                                                                                   ########################################&lt;br /&gt;
; ######## ##     ## ##    ##  ######  ######## ####  #######  ##    ##  ######     ########################################&lt;br /&gt;
; ##       ##     ## ###   ## ##    ##    ##     ##  ##     ## ###   ## ##    ##    ########################################&lt;br /&gt;
; ##       ##     ## ####  ## ##          ##     ##  ##     ## ####  ## ##          ########################################&lt;br /&gt;
; ######   ##     ## ## ## ## ##          ##     ##  ##     ## ## ## ##  ######     ########################################&lt;br /&gt;
; ##       ##     ## ##  #### ##          ##     ##  ##     ## ##  ####       ##    ########################################&lt;br /&gt;
; ##       ##     ## ##   ### ##    ##    ##     ##  ##     ## ##   ### ##    ##    ########################################&lt;br /&gt;
; ##        #######  ##    ##  ######     ##    ####  #######  ##    ##  ######     ########################################&lt;br /&gt;
;                                                                                   ########################################&lt;br /&gt;
; ##########################################################################################################################&lt;br /&gt;
; ##########################################################################################################################&lt;br /&gt;
Func _bemcmd($sbemparameter)&lt;br /&gt;
	Local $sRunCommand&lt;br /&gt;
	Local $outputBEMCMD&lt;br /&gt;
	Local $errorsBEMCMD&lt;br /&gt;
	Local $hBEMCMD&lt;br /&gt;
	Local $iBEMCMDmaxWaitTime = 20000&lt;br /&gt;
	Local $iBEMCMDmaxWaitTimeSTART&lt;br /&gt;
	Local $stdoutReadFEHLER&lt;br /&gt;
	; build the Command for run&lt;br /&gt;
	$sRunCommand = $bemcmdexe &amp;amp; &amp;quot; &amp;quot; &amp;amp; $sbemparameter&lt;br /&gt;
	; Start the timer for max wait time&lt;br /&gt;
	$iBEMCMDmaxWaitTimeSTART = TimerInit()&lt;br /&gt;
	; run the Command&lt;br /&gt;
	$hBEMCMD = Run($sRunCommand, &amp;quot;&amp;quot;, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD + $STDERR_CHILD)&lt;br /&gt;
	;get the output&lt;br /&gt;
	Do&lt;br /&gt;
		Sleep(5)&lt;br /&gt;
		; get the output&lt;br /&gt;
		$outputBEMCMD = $outputBEMCMD &amp;amp; StdoutRead($hBEMCMD)&lt;br /&gt;
		; get the errors&lt;br /&gt;
		$errorsBEMCMD = $errorsBEMCMD &amp;amp; StderrRead($hBEMCMD)&lt;br /&gt;
		; did we have an error while reading?&lt;br /&gt;
		$stdoutReadFEHLER = @error&lt;br /&gt;
		If $stdoutReadFEHLER &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
			; No error, go on&lt;br /&gt;
			If $outputBEMCMD = &amp;quot;&amp;quot; Then&lt;br /&gt;
				; but also no output, let us take a 2. try&lt;br /&gt;
				$outputBEMCMD = $outputBEMCMD &amp;amp; StdoutRead($hBEMCMD)&lt;br /&gt;
				If $outputBEMCMD = &amp;quot;&amp;quot; Then&lt;br /&gt;
					; anymore no output, oh oh&lt;br /&gt;
					If $stdoutReadFEHLER &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
						; but we have an error message&lt;br /&gt;
						ConsoleWriteError($errorsBEMCMD &amp;amp; @CRLF)&lt;br /&gt;
					EndIf&lt;br /&gt;
				EndIf&lt;br /&gt;
			EndIf&lt;br /&gt;
		EndIf&lt;br /&gt;
	Until $stdoutReadFEHLER Or TimerDiff($iBEMCMDmaxWaitTimeSTART) &amp;gt; $iBEMCMDmaxWaitTime&lt;br /&gt;
	;MsgBox(0,&amp;quot;&amp;quot;,$outputBEMCMD)&lt;br /&gt;
	Return $outputBEMCMD&lt;br /&gt;
EndFunc ;&amp;lt;== End _bemcmd()&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; _ANSI2OEM löst das Problem mit dem Umlauten und anderen Sonderzeichen. Es wandelt Text so um das er korrekt in der DOS-Box dargestellt wird&lt;br /&gt;
; So können hier im Quellcode auch Umlaute verwendet werden (in den Textausgaben) und diese werden dann korrekt dargestellt&lt;br /&gt;
; Wir zudem für die Prüfung der Gruppenzugehörigkeit benötigt für Gruppen mit Umlauten, z.B. Domänen-Admins&lt;br /&gt;
; Dank an Xenobiologist von AutoIt.de für diese Lösung: http://www.autoit.de/index.php?page=Thread&amp;amp;threadID=9461&amp;amp;highlight=ANSI2OEM&lt;br /&gt;
&lt;br /&gt;
Func _ANSI2OEM($text)&lt;br /&gt;
	$text = DllCall(&amp;#039;user32.dll&amp;#039;, &amp;#039;Int&amp;#039;, &amp;#039;CharToOem&amp;#039;, &amp;#039;str&amp;#039;, $text, &amp;#039;str&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	Return $text[2]&lt;br /&gt;
	;Return $text&lt;br /&gt;
EndFunc   ;==&amp;gt;_ANSI2OEM&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; Hilfsroutine die den Hilfetext ausgibt&lt;br /&gt;
Func _HilfeAusgeben()&lt;br /&gt;
	ConsoleWrite(_ANSI2OEM($s_Header))&lt;br /&gt;
	ConsoleWrite(_ANSI2OEM($s_HilfeText))&lt;br /&gt;
EndFunc   ;==&amp;gt;_HilfeAusgeben&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; ##########################################################################################################################&lt;br /&gt;
; ##########################################################################################################################&lt;br /&gt;
;                                       ####################################################################################&lt;br /&gt;
; ##     ##    ###    #### ##    ##     ####################################################################################&lt;br /&gt;
; ###   ###   ## ##    ##  ###   ##     ####################################################################################&lt;br /&gt;
; #### ####  ##   ##   ##  ####  ##     ####################################################################################&lt;br /&gt;
; ## ### ## ##     ##  ##  ## ## ##     ####################################################################################&lt;br /&gt;
; ##     ## #########  ##  ##  ####     ####################################################################################&lt;br /&gt;
; ##     ## ##     ##  ##  ##   ###     ####################################################################################&lt;br /&gt;
; ##     ## ##     ## #### ##    ##     ####################################################################################&lt;br /&gt;
;                                       ####################################################################################&lt;br /&gt;
; ##########################################################################################################################&lt;br /&gt;
; ##########################################################################################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If $CmdLine[0] &amp;gt; 0 Then&lt;br /&gt;
	If $CmdLine[1] = &amp;quot;/?&amp;quot; Or $CmdLine[1] = &amp;quot;-?&amp;quot; Then&lt;br /&gt;
		_HilfeAusgeben()&lt;br /&gt;
		Exit 0&lt;br /&gt;
	EndIf&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Ok, we need the bemcmd.exe, just find the BackupExec Installation Folder&lt;br /&gt;
; we take 3 try - depends of we are a 32 or 64 bit exe and if we run on a 32 or 64 bit system&lt;br /&gt;
$bemcmdexe = RegRead($SoftwareBasePaths[0], &amp;quot;InstallLocation&amp;quot;)&lt;br /&gt;
If $bemcmdexe = &amp;quot;&amp;quot; Then&lt;br /&gt;
	$bemcmdexe = RegRead($SoftwareBasePaths[1], &amp;quot;InstallLocation&amp;quot;)&lt;br /&gt;
	If $bemcmdexe = &amp;quot;&amp;quot; Then&lt;br /&gt;
		$bemcmdexe = RegRead($SoftwareBasePaths[2], &amp;quot;InstallLocation&amp;quot;)&lt;br /&gt;
		If $bemcmdexe = &amp;quot;&amp;quot; Then&lt;br /&gt;
			ConsoleWriteError(&amp;quot;Error, no installed BackupExec 2010 found&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
			Exit 1&lt;br /&gt;
		EndIf&lt;br /&gt;
	EndIf&lt;br /&gt;
EndIf&lt;br /&gt;
$bemcmdexe = $bemcmdexe &amp;amp; &amp;quot;bemcmd.exe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If StringInStr($CmdLineRaw, &amp;quot;discoverjobs&amp;quot;) &amp;gt; 0 Then&lt;br /&gt;
	Dim $s_JSONOutput&lt;br /&gt;
	; Get all scheduled Jobs&lt;br /&gt;
	$stemp = _bemcmd($aparameter[0])&lt;br /&gt;
	$atemp = StringSplit($stemp, @CRLF)&lt;br /&gt;
	For $i = 1 To $atemp[0]&lt;br /&gt;
		If StringLeft($atemp[$i],StringLen(&amp;quot;JOB ID: &amp;quot;)) = &amp;quot;JOB ID: &amp;quot; Then&lt;br /&gt;
			_ArrayAdd($aBackupJobs_byID, StringReplace(StringReplace(StringReplace($atemp[$i], &amp;quot;JOB ID: &amp;quot;, &amp;quot;&amp;quot;),&amp;quot;{&amp;quot;,&amp;quot;&amp;quot;),&amp;quot;}&amp;quot;,&amp;quot;&amp;quot;))&lt;br /&gt;
			$aBackupJobs_byID[0] = $aBackupJobs_byID[0] + 1&lt;br /&gt;
		EndIf&lt;br /&gt;
		If StringLeft($atemp[$i],StringLen(&amp;quot;JOB NAME: &amp;quot;)) = &amp;quot;JOB NAME: &amp;quot; Then&lt;br /&gt;
			_ArrayAdd($aBackupJobs_byName, StringReplace($atemp[$i], &amp;quot;JOB NAME: &amp;quot;, &amp;quot;&amp;quot;))&lt;br /&gt;
			$aBackupJobs_byName[0] = $aBackupJobs_byName[0] + 1&lt;br /&gt;
		EndIf&lt;br /&gt;
	Next&lt;br /&gt;
	; Get all linked Jobs&lt;br /&gt;
	$stemp = _bemcmd($aparameter[4])&lt;br /&gt;
	$atemp = StringSplit($stemp, @CRLF)&lt;br /&gt;
	For $i = 1 To $atemp[0]&lt;br /&gt;
		If StringLeft($atemp[$i],StringLen(&amp;quot;JOB ID: &amp;quot;)) = &amp;quot;JOB ID: &amp;quot; Then&lt;br /&gt;
			_ArrayAdd($aBackupJobs_byID, StringReplace(StringReplace(StringReplace($atemp[$i], &amp;quot;JOB ID: &amp;quot;, &amp;quot;&amp;quot;),&amp;quot;{&amp;quot;,&amp;quot;&amp;quot;),&amp;quot;}&amp;quot;,&amp;quot;&amp;quot;))&lt;br /&gt;
			$aBackupJobs_byID[0] = $aBackupJobs_byID[0] + 1&lt;br /&gt;
		EndIf&lt;br /&gt;
		If StringLeft($atemp[$i],StringLen(&amp;quot;JOB NAME: &amp;quot;)) = &amp;quot;JOB NAME: &amp;quot; Then&lt;br /&gt;
			_ArrayAdd($aBackupJobs_byName, StringReplace($atemp[$i], &amp;quot;JOB NAME: &amp;quot;, &amp;quot;&amp;quot;))&lt;br /&gt;
			$aBackupJobs_byName[0] = $aBackupJobs_byName[0] + 1&lt;br /&gt;
		EndIf&lt;br /&gt;
	Next&lt;br /&gt;
	; Get all dependant policy jobs&lt;br /&gt;
	$stemp = _bemcmd($aparameter[5])&lt;br /&gt;
	$atemp = StringSplit($stemp, @CRLF)&lt;br /&gt;
	For $i = 1 To $atemp[0]&lt;br /&gt;
		If StringLeft($atemp[$i],StringLen(&amp;quot;JOB ID: &amp;quot;)) = &amp;quot;JOB ID: &amp;quot; Then&lt;br /&gt;
			_ArrayAdd($aBackupJobs_byID, StringReplace(StringReplace(StringReplace($atemp[$i], &amp;quot;JOB ID: &amp;quot;, &amp;quot;&amp;quot;),&amp;quot;{&amp;quot;,&amp;quot;&amp;quot;),&amp;quot;}&amp;quot;,&amp;quot;&amp;quot;))&lt;br /&gt;
			$aBackupJobs_byID[0] = $aBackupJobs_byID[0] + 1&lt;br /&gt;
		EndIf&lt;br /&gt;
		If StringLeft($atemp[$i],StringLen(&amp;quot;JOB NAME: &amp;quot;)) = &amp;quot;JOB NAME: &amp;quot; Then&lt;br /&gt;
			_ArrayAdd($aBackupJobs_byName, StringReplace($atemp[$i], &amp;quot;JOB NAME: &amp;quot;, &amp;quot;&amp;quot;))&lt;br /&gt;
			$aBackupJobs_byName[0] = $aBackupJobs_byName[0] + 1&lt;br /&gt;
		EndIf&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	$s_JSONOutput = &amp;#039;{&amp;quot;data&amp;quot;:[&amp;#039; &amp;amp; @CRLF&lt;br /&gt;
	For $i = 1 To $aBackupJobs_byName[0]&lt;br /&gt;
		$s_JSONOutput = $s_JSONOutput &amp;amp; &amp;quot;     &amp;quot; &amp;amp; &amp;#039;{&amp;#039; &amp;amp; &amp;#039;@CRLF&amp;#039; &amp;amp; _&lt;br /&gt;
									&amp;quot;          &amp;quot; &amp;amp; &amp;#039;&amp;quot;{#BACKUPEXECJOB}&amp;quot;:&amp;quot;&amp;#039; &amp;amp; $aBackupJobs_byName[$i] &amp;amp; &amp;#039;&amp;quot;,&amp;#039; &amp;amp; &amp;#039;@CRLF&amp;#039; &amp;amp; _&lt;br /&gt;
									&amp;quot;          &amp;quot; &amp;amp; &amp;#039;&amp;quot;{#BACKUPEXECID}&amp;quot;:&amp;quot;&amp;#039; &amp;amp; $aBackupJobs_byID[$i] &amp;amp; &amp;#039;&amp;quot;&amp;#039; &amp;amp; &amp;#039;@CRLF&amp;#039; &amp;amp; _&lt;br /&gt;
									&amp;quot;     &amp;quot; &amp;amp; &amp;#039;},&amp;#039; &amp;amp; &amp;#039;@CRLF&amp;#039;&lt;br /&gt;
	Next&lt;br /&gt;
	$s_JSONOutput = StringTrimRight($s_JSONOutput, StringLen(&amp;quot;,&amp;quot; &amp;amp; &amp;quot;@CRLF&amp;quot;)) &amp;amp; @CRLF &amp;amp; &amp;quot;     &amp;quot; &amp;amp; &amp;#039;]&amp;#039; &amp;amp; @CRLF &amp;amp; &amp;#039;}&amp;#039;&lt;br /&gt;
	$s_JSONOutput = StringReplace($s_JSONOutput, &amp;quot;@CRLF&amp;quot;, @CRLF)&lt;br /&gt;
	ConsoleWrite($s_JSONOutput &amp;amp; @CRLF)&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
;MsgBox(0,&amp;quot;&amp;quot;,$CmdLineRaw &amp;amp; @CRLF &amp;amp; $CmdLine[0] &amp;amp; @CRLF &amp;amp; $CmdLine[1] &amp;amp; @CRLF &amp;amp; $CmdLine[2])&lt;br /&gt;
&lt;br /&gt;
If $CmdLine[0] = 2 Then&lt;br /&gt;
	If $CmdLine[1] = &amp;quot;jobstatus&amp;quot; Then&lt;br /&gt;
		;MsgBox(0, &amp;quot;&amp;quot;, &amp;quot;jobstatus von: &amp;quot; &amp;amp; $CmdLine[2])&lt;br /&gt;
		; Get all scheduled Jobs&lt;br /&gt;
		;MsgBox(0,&amp;quot;&amp;quot;,StringReplace($aparameter[3], &amp;#039;ID of Job&amp;#039;, $CmdLine[2]))&lt;br /&gt;
		$stemp = _bemcmd(StringReplace($aparameter[3], &amp;#039;ID of Job&amp;#039;,$CmdLine[2]))&lt;br /&gt;
		;MsgBox(0,&amp;quot;&amp;quot;,StringReplace($aparameter[2], &amp;#039;&amp;quot;Name of Job&amp;quot;&amp;#039;, $CmdLine[2]))&lt;br /&gt;
		$atemp = StringSplit($stemp, @CRLF)&lt;br /&gt;
&lt;br /&gt;
		;_ArrayDisplay($atemp)&lt;br /&gt;
&lt;br /&gt;
		For $i = 1 To $atemp[0]&lt;br /&gt;
			If StringLeft($atemp[$i],StringLen(&amp;quot;JOB STATUS: &amp;quot;)) = &amp;quot;JOB STATUS: &amp;quot; Then&lt;br /&gt;
				$sJobStatus = StringReplace($atemp[$i], &amp;quot;JOB STATUS: &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
				$iJobStatus = StringRegExpReplace($sJobStatus, &amp;quot;[^0-9]*&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
				ConsoleWrite($iJobStatus &amp;amp; @CRLF)&lt;br /&gt;
				Exit 0&lt;br /&gt;
			EndIf&lt;br /&gt;
			If StringInStr($atemp[$i], &amp;quot;RETURN VALUE:&amp;quot;) &amp;gt; 0 And StringInStr($atemp[$i], &amp;quot;-1&amp;quot;) &amp;gt; 0 Then&lt;br /&gt;
				ConsoleWrite(&amp;quot;ZBX_NOTSUPPORTED&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
				Exit 0&lt;br /&gt;
			EndIf&lt;br /&gt;
		Next&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	If $CmdLine[1] = &amp;quot;jobhowlongago&amp;quot; Then&lt;br /&gt;
		; Get all scheduled Jobs&lt;br /&gt;
		;MsgBox(0,&amp;quot;&amp;quot;,StringReplace($aparameter[3], &amp;#039;ID of Job&amp;#039;, $CmdLine[2]))&lt;br /&gt;
		$stemp = _bemcmd(StringReplace($aparameter[3], &amp;#039;ID of Job&amp;#039;,$CmdLine[2]))&lt;br /&gt;
		;MsgBox(0,&amp;quot;&amp;quot;,StringReplace($aparameter[2], &amp;#039;&amp;quot;Name of Job&amp;quot;&amp;#039;, $CmdLine[2]))&lt;br /&gt;
		$atemp = StringSplit($stemp, @CRLF)&lt;br /&gt;
&lt;br /&gt;
		;_ArrayDisplay($atemp)&lt;br /&gt;
&lt;br /&gt;
		For $i = 1 To $atemp[0]&lt;br /&gt;
			If StringLeft($atemp[$i],StringLen(&amp;quot;START TIME: &amp;quot;)) = &amp;quot;START TIME: &amp;quot; Then&lt;br /&gt;
				$stemp = StringRegExpReplace($atemp[$i], &amp;quot;START TIME:\s*&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
				$aDateTemp = StringSplit($stemp, &amp;quot; /&amp;quot;)&lt;br /&gt;
				; [1] = Monat&lt;br /&gt;
				; [2] = Tag&lt;br /&gt;
				; [3] = Jahr&lt;br /&gt;
				; [4] = Uhrzeit als hh:mm:ss&lt;br /&gt;
				;_ArrayDisplay($aDateTemp)&lt;br /&gt;
				$iJobhowlongago = _DateDiff(&amp;quot;s&amp;quot;, $aDateTemp[3] &amp;amp; &amp;quot;/&amp;quot; &amp;amp; $aDateTemp[1] &amp;amp; &amp;quot;/&amp;quot; &amp;amp; $aDateTemp[2] &amp;amp; &amp;quot; &amp;quot; &amp;amp; $aDateTemp[4], @YEAR &amp;amp; &amp;quot;/&amp;quot; &amp;amp; @MON &amp;amp; &amp;quot;/&amp;quot; &amp;amp; @MDAY &amp;amp; &amp;quot; &amp;quot; &amp;amp; @HOUR &amp;amp; &amp;quot;:&amp;quot; &amp;amp; @MIN &amp;amp; &amp;quot;:&amp;quot; &amp;amp; @SEC)&lt;br /&gt;
				;MsgBox(0,&amp;quot;&amp;quot;, $aDateTemp[3] &amp;amp; &amp;quot;/&amp;quot; &amp;amp; $aDateTemp[1] &amp;amp; &amp;quot;/&amp;quot; &amp;amp; $aDateTemp[0] &amp;amp; &amp;quot; &amp;quot; &amp;amp; $aDateTemp[4] &amp;amp; @CRLF &amp;amp; @YEAR &amp;amp; &amp;quot;/&amp;quot; &amp;amp; @MON &amp;amp; &amp;quot;/&amp;quot; &amp;amp; @MDAY &amp;amp; &amp;quot; &amp;quot; &amp;amp; @HOUR &amp;amp; &amp;quot;:&amp;quot; &amp;amp; @MIN &amp;amp; &amp;quot;:&amp;quot; &amp;amp; @SEC)&lt;br /&gt;
				ConsoleWrite($iJobhowlongago &amp;amp; @CRLF)&lt;br /&gt;
				Exit 0&lt;br /&gt;
			EndIf&lt;br /&gt;
			If StringInStr($atemp[$i], &amp;quot;RETURN VALUE:&amp;quot;) &amp;gt; 0 And StringInStr($atemp[$i], &amp;quot;-1&amp;quot;) &amp;gt; 0 Then&lt;br /&gt;
				ConsoleWrite(&amp;quot;ZBX_NOTSUPPORTED&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
				Exit 0&lt;br /&gt;
			EndIf&lt;br /&gt;
		Next&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	If $CmdLine[1] = &amp;quot;jobbytes&amp;quot; Then&lt;br /&gt;
		; Get all scheduled Jobs&lt;br /&gt;
		;MsgBox(0,&amp;quot;&amp;quot;,StringReplace($aparameter[3], &amp;#039;ID of Job&amp;#039;, $CmdLine[2]))&lt;br /&gt;
		$stemp = _bemcmd(StringReplace($aparameter[3], &amp;#039;ID of Job&amp;#039;,$CmdLine[2]))&lt;br /&gt;
		;MsgBox(0,&amp;quot;&amp;quot;,StringReplace($aparameter[2], &amp;#039;&amp;quot;Name of Job&amp;quot;&amp;#039;, $CmdLine[2]))&lt;br /&gt;
		$atemp = StringSplit($stemp, @CRLF)&lt;br /&gt;
&lt;br /&gt;
		;_ArrayDisplay($atemp)&lt;br /&gt;
&lt;br /&gt;
		For $i = 1 To $atemp[0]&lt;br /&gt;
			If StringLeft($atemp[$i],StringLen(&amp;quot;BYTES PROCESSED:&amp;quot;)) = &amp;quot;BYTES PROCESSED:&amp;quot; Then&lt;br /&gt;
				$stemp = StringRegExpReplace($atemp[$i], &amp;quot;BYTES PROCESSED:\s*&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
				$iJobBytes = StringReplace($stemp, &amp;quot;,&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
				ConsoleWrite($iJobBytes &amp;amp; @CRLF)&lt;br /&gt;
				Exit 0&lt;br /&gt;
			EndIf&lt;br /&gt;
			If StringInStr($atemp[$i], &amp;quot;RETURN VALUE:&amp;quot;) &amp;gt; 0 And StringInStr($atemp[$i], &amp;quot;-1&amp;quot;) &amp;gt; 0 Then&lt;br /&gt;
				ConsoleWrite(&amp;quot;ZBX_NOTSUPPORTED&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
				Exit 0&lt;br /&gt;
			EndIf&lt;br /&gt;
		Next&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	If $CmdLine[1] = &amp;quot;jobruntime&amp;quot; Then&lt;br /&gt;
		; Get all scheduled Jobs&lt;br /&gt;
		;MsgBox(0,&amp;quot;&amp;quot;,StringReplace($aparameter[3], &amp;#039;ID of Job&amp;#039;, $CmdLine[2]))&lt;br /&gt;
		$stemp = _bemcmd(StringReplace($aparameter[3], &amp;#039;ID of Job&amp;#039;,$CmdLine[2]))&lt;br /&gt;
		;MsgBox(0,&amp;quot;&amp;quot;,StringReplace($aparameter[2], &amp;#039;&amp;quot;Name of Job&amp;quot;&amp;#039;, $CmdLine[2]))&lt;br /&gt;
		$atemp = StringSplit($stemp, @CRLF)&lt;br /&gt;
&lt;br /&gt;
		;_ArrayDisplay($atemp)&lt;br /&gt;
&lt;br /&gt;
		For $i = 1 To $atemp[0]&lt;br /&gt;
			If StringLeft($atemp[$i],StringLen(&amp;quot;ELAPSED TIME:&amp;quot;)) = &amp;quot;ELAPSED TIME:&amp;quot; Then&lt;br /&gt;
				$stemp = StringRegExpReplace($atemp[$i], &amp;quot;ELAPSED TIME:\s*&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
				$aRuntimeTemp = StringSplit($stemp,&amp;quot;:&amp;quot;)&lt;br /&gt;
				; [1] = Stunden&lt;br /&gt;
				; [2] = Minuten&lt;br /&gt;
				; [3] = Sekunden&lt;br /&gt;
&lt;br /&gt;
				$iJobRuntime = Int($aRuntimeTemp[3]) + (Int($aRuntimeTemp[2]) * 60) + (Int($aRuntimeTemp[1]) * 3600)&lt;br /&gt;
&lt;br /&gt;
				ConsoleWrite($iJobRuntime &amp;amp; @CRLF)&lt;br /&gt;
				Exit 0&lt;br /&gt;
			EndIf&lt;br /&gt;
			If StringInStr($atemp[$i], &amp;quot;RETURN VALUE:&amp;quot;) &amp;gt; 0 And StringInStr($atemp[$i], &amp;quot;-1&amp;quot;) &amp;gt; 0 Then&lt;br /&gt;
				ConsoleWrite(&amp;quot;ZBX_NOTSUPPORTED&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
				Exit 0&lt;br /&gt;
			EndIf&lt;br /&gt;
		Next&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	If $CmdLine[1] = &amp;quot;jobdirectorys&amp;quot; Then&lt;br /&gt;
		; Get all scheduled Jobs&lt;br /&gt;
		;MsgBox(0,&amp;quot;&amp;quot;,StringReplace($aparameter[3], &amp;#039;ID of Job&amp;#039;, $CmdLine[2]))&lt;br /&gt;
		$stemp = _bemcmd(StringReplace($aparameter[3], &amp;#039;ID of Job&amp;#039;,$CmdLine[2]))&lt;br /&gt;
		;MsgBox(0,&amp;quot;&amp;quot;,StringReplace($aparameter[2], &amp;#039;&amp;quot;Name of Job&amp;quot;&amp;#039;, $CmdLine[2]))&lt;br /&gt;
		$atemp = StringSplit($stemp, @CRLF)&lt;br /&gt;
&lt;br /&gt;
		;_ArrayDisplay($atemp)&lt;br /&gt;
&lt;br /&gt;
		For $i = 1 To $atemp[0]&lt;br /&gt;
			If StringLeft($atemp[$i],StringLen(&amp;quot;DIRECTORIES PROCESSED:&amp;quot;)) = &amp;quot;DIRECTORIES PROCESSED:&amp;quot; Then&lt;br /&gt;
				$stemp = StringRegExpReplace($atemp[$i], &amp;quot;DIRECTORIES PROCESSED:\s*&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
				$iJobDirectorys = StringReplace($stemp, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
				ConsoleWrite($iJobDirectorys &amp;amp; @CRLF)&lt;br /&gt;
				Exit 0&lt;br /&gt;
			EndIf&lt;br /&gt;
			If StringInStr($atemp[$i], &amp;quot;RETURN VALUE:&amp;quot;) &amp;gt; 0 And StringInStr($atemp[$i], &amp;quot;-1&amp;quot;) &amp;gt; 0 Then&lt;br /&gt;
				ConsoleWrite(&amp;quot;ZBX_NOTSUPPORTED&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
				Exit 0&lt;br /&gt;
			EndIf&lt;br /&gt;
		Next&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	If $CmdLine[1] = &amp;quot;jobfiles&amp;quot; Then&lt;br /&gt;
		; Get all scheduled Jobs&lt;br /&gt;
		;MsgBox(0,&amp;quot;&amp;quot;,StringReplace($aparameter[3], &amp;#039;ID of Job&amp;#039;, $CmdLine[2]))&lt;br /&gt;
		$stemp = _bemcmd(StringReplace($aparameter[3], &amp;#039;ID of Job&amp;#039;,$CmdLine[2]))&lt;br /&gt;
		;MsgBox(0,&amp;quot;&amp;quot;,StringReplace($aparameter[2], &amp;#039;&amp;quot;Name of Job&amp;quot;&amp;#039;, $CmdLine[2]))&lt;br /&gt;
		$atemp = StringSplit($stemp, @CRLF)&lt;br /&gt;
&lt;br /&gt;
		;_ArrayDisplay($atemp)&lt;br /&gt;
&lt;br /&gt;
		For $i = 1 To $atemp[0]&lt;br /&gt;
			If StringLeft($atemp[$i],StringLen(&amp;quot;FILES PROCESSED:&amp;quot;)) = &amp;quot;FILES PROCESSED:&amp;quot; Then&lt;br /&gt;
				$stemp = StringRegExpReplace($atemp[$i], &amp;quot;FILES PROCESSED:\s*&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
				$iJobFiles = StringReplace($stemp, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
				ConsoleWrite($iJobFiles &amp;amp; @CRLF)&lt;br /&gt;
				Exit 0&lt;br /&gt;
			EndIf&lt;br /&gt;
			If StringInStr($atemp[$i], &amp;quot;RETURN VALUE:&amp;quot;) &amp;gt; 0 And StringInStr($atemp[$i], &amp;quot;-1&amp;quot;) &amp;gt; 0 Then&lt;br /&gt;
				ConsoleWrite(&amp;quot;ZBX_NOTSUPPORTED&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
				Exit 0&lt;br /&gt;
			EndIf&lt;br /&gt;
		Next&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	If $CmdLine[1] = &amp;quot;jobskipped&amp;quot; Then&lt;br /&gt;
		$stemp = _bemcmd(StringReplace($aparameter[3], &amp;#039;ID of Job&amp;#039;,$CmdLine[2]))&lt;br /&gt;
		$atemp = StringSplit($stemp, @CRLF)&lt;br /&gt;
		For $i = 1 To $atemp[0]&lt;br /&gt;
			If StringLeft($atemp[$i],StringLen(&amp;quot;FILES SKIPPED:&amp;quot;)) = &amp;quot;FILES SKIPPED:&amp;quot; Then&lt;br /&gt;
				$stemp = StringRegExpReplace($atemp[$i], &amp;quot;FILES SKIPPED:\s*&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
				$iJobSkipped = StringReplace($stemp, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
				ConsoleWrite($iJobSkipped &amp;amp; @CRLF)&lt;br /&gt;
				Exit 0&lt;br /&gt;
			EndIf&lt;br /&gt;
			If StringInStr($atemp[$i], &amp;quot;RETURN VALUE:&amp;quot;) &amp;gt; 0 And StringInStr($atemp[$i], &amp;quot;-1&amp;quot;) &amp;gt; 0 Then&lt;br /&gt;
				ConsoleWrite(&amp;quot;ZBX_NOTSUPPORTED&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
				Exit 0&lt;br /&gt;
			EndIf&lt;br /&gt;
		Next&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	If $CmdLine[1] = &amp;quot;jobcorrupt&amp;quot; Then&lt;br /&gt;
		$stemp = _bemcmd(StringReplace($aparameter[3], &amp;#039;ID of Job&amp;#039;,$CmdLine[2]))&lt;br /&gt;
		$atemp = StringSplit($stemp, @CRLF)&lt;br /&gt;
		For $i = 1 To $atemp[0]&lt;br /&gt;
			If StringLeft($atemp[$i],StringLen(&amp;quot;FILES CORRUPT:&amp;quot;)) = &amp;quot;FILES CORRUPT:&amp;quot; Then&lt;br /&gt;
				$stemp = StringRegExpReplace($atemp[$i], &amp;quot;FILES CORRUPT:\s*&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
				$iJobCorrupt = StringReplace($stemp, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
				ConsoleWrite($iJobCorrupt &amp;amp; @CRLF)&lt;br /&gt;
				Exit 0&lt;br /&gt;
			EndIf&lt;br /&gt;
			If StringInStr($atemp[$i], &amp;quot;RETURN VALUE:&amp;quot;) &amp;gt; 0 And StringInStr($atemp[$i], &amp;quot;-1&amp;quot;) &amp;gt; 0 Then&lt;br /&gt;
				ConsoleWrite(&amp;quot;ZBX_NOTSUPPORTED&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
				Exit 0&lt;br /&gt;
			EndIf&lt;br /&gt;
		Next&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	If $CmdLine[1] = &amp;quot;jobinuse&amp;quot; Then&lt;br /&gt;
		$stemp = _bemcmd(StringReplace($aparameter[3], &amp;#039;ID of Job&amp;#039;,$CmdLine[2]))&lt;br /&gt;
		$atemp = StringSplit($stemp, @CRLF)&lt;br /&gt;
		For $i = 1 To $atemp[0]&lt;br /&gt;
			If StringLeft($atemp[$i],StringLen(&amp;quot;FILES IN-USE:&amp;quot;)) = &amp;quot;FILES IN-USE:&amp;quot; Then&lt;br /&gt;
				$stemp = StringRegExpReplace($atemp[$i], &amp;quot;FILES IN-USE:\s*&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
				$iJobInUse = StringReplace($stemp, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
				ConsoleWrite($iJobInUse &amp;amp; @CRLF)&lt;br /&gt;
				Exit 0&lt;br /&gt;
			EndIf&lt;br /&gt;
			If StringInStr($atemp[$i], &amp;quot;RETURN VALUE:&amp;quot;) &amp;gt; 0 And StringInStr($atemp[$i], &amp;quot;-1&amp;quot;) &amp;gt; 0 Then&lt;br /&gt;
				ConsoleWrite(&amp;quot;ZBX_NOTSUPPORTED&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
				Exit 0&lt;br /&gt;
			EndIf&lt;br /&gt;
		Next&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
EndIf&lt;br /&gt;
Exit 0&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--[[Benutzer:BLinz|Bernhard Linz]] 11:03, 1. Apr. 2014 (CEST)&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Kommentare==&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>BLinz2</name></author>
	</entry>
</feed>