{"id":1105,"date":"2016-03-05T07:03:03","date_gmt":"2016-03-05T06:03:03","guid":{"rendered":"http:\/\/www.symablog.de\/blog\/?p=1105"},"modified":"2016-03-05T16:22:10","modified_gmt":"2016-03-05T15:22:10","slug":"scom-monitor-fuer-externes-string-skript","status":"publish","type":"post","link":"https:\/\/www.symablog.de\/blog\/scom-monitor-fuer-externes-string-skript\/","title":{"rendered":"SCOM Monitor f\u00fcr externes String-Skript"},"content":{"rendered":"<p>H\u00e4ufig bekommt man vorgefertigte Skripte, die in das SCOM-Monitoring eingebunden werden sollen. Ein Two-State-VBScript-Monitor erh\u00e4lt von einer Batch-Datei Statusmeldungen als String \u00fcber StdOut \u00fcbergeben.<\/p>\n<p>Vorzugsweise sollte so eine Batch Datei den String &#8222;OK&#8220; (Healthy) oder einen String mit Fehlermeldung &#8222;Fehler XYZ aufgetreten&#8220; (Unhealthy) zur\u00fcckgeben. Diese R\u00fcckgabe eines String \u00fcber StdOut wird als Parameter status via PropertyBag des SCOM-Monitors zu einem Healthy\/Unhealthy-Status verarbeitet und entsprechend eskaliert.<br \/>\nIn diesem Beispiel-Script wird zus\u00e4tzlich gepr\u00fcft, ob die externe Datei existiert und im Fehlerfall eine entsprechende Nachricht an die PropertyBag \u00fcbergeben.<\/p>\n<p>Hier das im SCOM-Monitor eingebundene VBScript mit der PropertyBag:<\/p>\n<pre lang=\"VB\" line=\"0\">\r\n'SCOM-Monitorscript fuer Aufruf externes String-Script\r\nDim oAPI, oBag, objShell, objExec, fso, line, s\r\n\u2028Const FileName = \"c:\\meinebatch.bat\u201c\u2028\r\nSet oAPI = CreateObject(\"MOM.ScriptAPI\u201c)\r\n\u2028Set fso = CreateObject(\"Scripting.FileSystemObject\u201c)\u2028\r\nIf (fso.FileExists(FileName)) Then\u2028\r\n    Set objShell = WScript.CreateObject(\"WScript.Shell\u201c)\u2028\r\n    Set objExec = objShell.Exec(FileName)\r\n\u2028    Do\u2028\r\n        line = objExec.StdOut.ReadLine()\u2028\r\n        s = s & line\u2028\r\n    Loop While Not objExec.Stdout.atEndOfStream\u2028\r\nElse\r\n\u2028    s = \"File \u201c & FileName & \u201c does not exist\u201c\u2028\r\nEnd If\r\nSet oBag = oAPI.CreatePropertyBag()\u2028\r\nCall oBag.AddValue(\"status\u201c,s)\r\n\u2028Call oAPI.Return(oBag)\r\n<\/pre>\n<p>&nbsp;<\/p>\n<table border=\"1\">\n<tbody>\n<tr>\n<td colspan=\"2\">Programmbeschreibung zeilenweise<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>Definition der Variablen<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>Definition Stringkonstante f\u00fcr das aufzurufende externe Programm. Es muss der absolute Pfad und Dateiname angegeben werden.<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>Zuweisen Objekt MOM.ScriptAPI f\u00fcr die PropertyBag zur \u00dcbergabe von Parametern an den SCOM-Monitor.<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>Zuweisen FileSystemObject f\u00fcr die Methode FileExists<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>Bedingung mit FileExists, wenn auszuf\u00fchrendes externes Programm existiert, dann &#8230;bis Zeile 12 folgenden Code ausf\u00fchren.<\/td>\n<\/tr>\n<tr>\n<td>6<\/td>\n<td>Objektdefinition WScript.Shell<\/td>\n<\/tr>\n<tr>\n<td>7<\/td>\n<td>Auf das Objekt WScript.Shell die Methode Exec mit dem Parameter &#8222;externes Programm&#8220; anwenden.<\/td>\n<\/tr>\n<tr>\n<td>8<\/td>\n<td>Loop, fu\u00dfgesteuerte Schleife bis 11<\/td>\n<\/tr>\n<tr>\n<td>9<\/td>\n<td>Die aktuelle Zeile von StdOut wird gelesen und der Variable line zugewiesen.<\/td>\n<\/tr>\n<tr>\n<td>10<\/td>\n<td>Die aktuelle Zeile wird ohne(!) Zeilenvorschub der Variable s f\u00fcr den gesamten Output hinzugef\u00fcgt.<\/td>\n<\/tr>\n<tr>\n<td>11<\/td>\n<td>Ende der fu\u00dfgesteuerten Schleife wenn EndOfLine in StdOut erreicht ist.<\/td>\n<\/tr>\n<tr>\n<td>12<\/td>\n<td>Wenn externes Programm nicht vorhanden ist &#8230; bis Zeile 14<\/td>\n<\/tr>\n<tr>\n<td>13<\/td>\n<td>Fehlermeldung der Variable s zuweisen<\/td>\n<\/tr>\n<tr>\n<td>14<\/td>\n<td>End If<\/td>\n<\/tr>\n<tr>\n<td>15<\/td>\n<td>Erzeugen einer PropertyBag<\/td>\n<\/tr>\n<tr>\n<td>16<\/td>\n<td>Zuweisen (Add) des Ergebnis von s zum Parameter &#8222;status&#8220; in der PropertyBag<\/td>\n<\/tr>\n<tr>\n<td>17<\/td>\n<td>Return zum SCOM mit PropertyBag im &#8222;Schlepptau&#8220;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div id=\"attachment_741\" style=\"width: 810px\" class=\"wp-caption alignleft\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-741\" class=\"wp-image-741\" src=\"http:\/\/www.symablog.de\/blog\/wp-content\/uploads\/DSC03878.jpg\" alt=\"TheCloudOnAWall\" width=\"800\" height=\"600\" srcset=\"https:\/\/www.symablog.de\/blog\/wp-content\/uploads\/DSC03878.jpg 1152w, https:\/\/www.symablog.de\/blog\/wp-content\/uploads\/DSC03878-150x112.jpg 150w, https:\/\/www.symablog.de\/blog\/wp-content\/uploads\/DSC03878-400x300.jpg 400w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><p id=\"caption-attachment-741\" class=\"wp-caption-text\">The Cloud will watch You! &#8211; Wand am S-Bahnhof &#8222;D\u00fcsseldorf-Derendorf&#8220;<\/p><\/div>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>H\u00e4ufig bekommt man vorgefertigte Skripte, die in das SCOM-Monitoring eingebunden werden sollen. Ein Two-State-VBScript-Monitor erh\u00e4lt von einer Batch-Datei Statusmeldungen als String \u00fcber StdOut \u00fcbergeben. Vorzugsweise sollte so eine Batch Datei den String &#8222;OK&#8220; (Healthy) oder einen String mit Fehlermeldung &#8222;Fehler &hellip; <a class=\"more-link\" href=\"https:\/\/www.symablog.de\/blog\/scom-monitor-fuer-externes-string-skript\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[78,4,184],"tags":[193,161,203,181],"class_list":["post-1105","post","type-post","status-publish","format-standard","hentry","category-praxis","category-scom","category-vbscript","tag-scom","tag-scom-monitor","tag-scriptmonitor","tag-vbscript"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":false,"jetpack_shortlink":"https:\/\/wp.me\/p37Rzq-hP","_links":{"self":[{"href":"https:\/\/www.symablog.de\/blog\/wp-json\/wp\/v2\/posts\/1105"}],"collection":[{"href":"https:\/\/www.symablog.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.symablog.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.symablog.de\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.symablog.de\/blog\/wp-json\/wp\/v2\/comments?post=1105"}],"version-history":[{"count":23,"href":"https:\/\/www.symablog.de\/blog\/wp-json\/wp\/v2\/posts\/1105\/revisions"}],"predecessor-version":[{"id":1132,"href":"https:\/\/www.symablog.de\/blog\/wp-json\/wp\/v2\/posts\/1105\/revisions\/1132"}],"wp:attachment":[{"href":"https:\/\/www.symablog.de\/blog\/wp-json\/wp\/v2\/media?parent=1105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.symablog.de\/blog\/wp-json\/wp\/v2\/categories?post=1105"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.symablog.de\/blog\/wp-json\/wp\/v2\/tags?post=1105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}