Infrastructure at your Service

Georges Grey

Control-M Application Integrator verwaltet Microsoft PowerShell Code & Credentials

Welche Vorteile hat “Control-M Application Integrator”?

Bei einem Kunden, der Control-M im Einsatz hat, habe ich auf einem Windows Server ganz viele Windows und PowerShell Scripts angetroffen. Unter diesen Scripts waren einige die nach einem bestimmten Keyword in einem Log-File suchten. Alle diese Scripts hatten einen festen CIFS Path im Script. Damit das klappt, wurde ein Share auf dem Windows Server gemappt, das File nach dem Keyword durchsucht und der Share wieder abgehängt. Dazu wurden jeweils 2 Scripts verwendet. In einem der Scripts, waren die Credentials direkt gespeichert! Das erste Script (Windows Script), wurde durch einen Job aus Control-M regelmässig gestartet, das zweite Script (PowerShell) wurde direkt aus dem ersten aufgerufen.

Was sind nun die Vorteile des Modules “Control-M Application Integrator”:

  • Keine lokalen Scripts mehr auf den Server nötig
  • Sicherheit, keine Credential in den Scripts
  • Deutliches vereinfachen
  • Bessere Wartbarkeit
  • Wiederverwendbarkeit des neuen “Control-M Application Integrator” Types “String finder”

 

Wie sieht eine “Control-M Application Integrator” Implementierung aus?

Die Erstellung eines neuen Job Type erfolgt direkt im “Control-M Application Integrator” von Control-M.

Der neue Job Type heisst “String finder”, und als erstes soll das Mapping mit “net use” auf Laufwerk x erfolgen.

2015-11-18_09h51_25

if exist x:\ (
	net use x: /delete /yes
)
net use x: "{{Path}}" {{ShareUserPW}} /USER:{{ShareUserName}}

 

Im Hauptteil “Execution #1 – #3″ haben wir dann den PowerShell Code:

2015-11-18_09h51_46

powershell.exe -nologo -ExecutionPolicy Bypass -NoProfile -Command \
"& {$COUNTES=@(GetChildItem -Path {{Path}} -Include {{Filename}} {{Recourse}} \
| Select-String '{{Pattern}}'.count; echo "Hits:$COUNTES"; exit $COUNTES}" < NUL

Im Code oben, wird das Vorkommen des Pattern gezählt ($COUNTES) und anschliessend ausgegeben (Hits:$COUNTES). Die Variablen welche durch “Control-M Application Integrator” verwendet werden ({{Path}}, {{Filename}}, {{Recourse}} und {{Pattern}} werden zur Laufzeit eingesetzt. Die Ausgabe (Hits:$COUNTES) wird später wieder verwendet um zu entscheiden, Mail oder nicht. Ebenfalls wird mit dem Exit Code, geprüft wenn ungleich null wird “Execution #2″ & “Execution #3″ ausgeführt.

 

In den beiden nächsten Schritten, werden noch eine globale Variable und der Text für die Mail Benachrichtigung erzeugt.

ctmvar -action set -var "%%%%\Text" -varexpr \
"The following pattern [{{Pattern}}] was found [{{HITS}}] times on the [{{Path}}\{{Filename}}]."

Hier wird die globale Control-M Variable “Text” verwendet um den Mail Text aus dem Code zu Definieren.

IF {{HITS}} GTR 0 (set MSG1=Hits& set MSG2=found!)
IF {{HITS}} GTR 0 (echo %MSG1% %MSG2% [{{HITS}}]) ELSE (echo Nothing to do.)

Hier wurde speziell der Text, nach dem aus Control-M später gesucht wird, in zwei Variablen aufgeteilt! Da sonst im Output, in dem der Textfilter sucht den Text “Hits found!” bereits bei der Definition finden würde!

 

Beim Post-Execution Schritt wird das Mapping wieder gelöscht.

if exist x:\ (
	net use x: /delete /yes
)

 

Wenn wir nun im Control-M, den Job erstellen möchten, so müssen wir den neuen Job Type “String finder” verwenden.

2015-11-18_09h52_57

In dem neuen Job spezifizieren wir dann die neuen Attribute für diesen Job:

  • Job Name: 1 -> Der Name des Jobs
  • Connection Profile: 2 -> Das wird im Connection Manager definiert und sind die Credentials (Username und Password für das Mapping)
  • Filename: 3 -> Filter “*.log” (Es sollen nur diese Files durchsucht werden)
  • Path: 4 -> Das ist der CIFS (Common Internet File System) Path, der verwendet werden soll
  • Pattern: 5 -> Ist das was wir in den Files suchen

2015-11-18_09h53_46

Damit wir beim Auffinden des gesuchten Pattern auch eine Benachrichtigung per Mail erhalten, konfigurieren wir noch folgendes:

2015-11-18_09h54_13

2015-11-18_09h54_31

Erstellung des Connection Profile im “Configuration Manager”

Damit wir die Credential nicht im Script oder Control-M Job definieren müssen, verwenden wir ein eigenes “Connection Profile”.

2015-11-18_14h04_00

Jetzt benötigen wir noch die Credentials:

2015-11-18_13h59_38

 

Fazit

Damit haben wir nun die Möglichkeit diverse Pattern in unterschiedlichen Files auf unterschiedlichen CIFS Laufwerken zu suchen, den Code und die Methodik wieder zu verwenden. Weiter haben wir keine Windows und PowerShell Scripts mehr lokal auf den Servern, das bedeutet Scheduler, Code und Credentials werden durch Control-M verwaltet, was auch die Sicherheit erhöht.

Control-M Application Integrator ist nur eines von vielen Modulen in Control-M.

Ich hoffe diese Beitrag konnte etwas Licht in das Module bringen :-) .

Leave a Reply

Georges Grey
Georges Grey

Delivery Manager & Consultant