Projekt “Executer” Heiko Burdack Mail: [email protected] Home: http://www.uni-magdeburg.de/burdack/executer 1. Projekt Executer 1.1 Warum Executer ? Wer kennt es nicht, wenn es darum geht große Client/Server- Landschaften auf Basis von Win95/98/NT/2000 zu verwalten, ist es oft erforderlich Kommandos auf verschiedenen System auszuführen. Bei diesen Aufgaben stoßt man recht schnell an die Grenzen, der normalen Kommando- bzw. Batch-Verarbeitung. Zwar sind die meisten Aufgaben recht einfach über Batch Dateien realisierbar, doch kommt es hier all zu oft zu Problemen. 1.2 Grundidee Executer In meiner täglichen Arbeit stellte sich immer wieder verschiedene Aufgaben, in denen verschiedene Kommandos über eine Serverliste ausgeführt werden sollten. Hierbei entstand die Idee ein Tool zu schreiben, welches über vordefinierte Jobs diese Aufgaben ausführen und die Ergebnisse entsprechend auswerten sollte. Dabei sollte das Tool recht flexibel sein, damit es auch für unterschiedliche Aufgaben genutzt werden kann. Es sollte auch möglich sein, Aufgaben in einer quasi Rekursion zu verschachteln. Die Aufgabenstellung war meines Erachtens zunächst ausreichend um einfach mal anzufangen. Ein Ergebnis folgt auch bald der Executer V1.0 der schon viele Aufgaben erledigen konnte. 1.3 Projekt Executer Nachdem die erste Version fertig war, kamen viele Ideen und Anregungen für Erweiterungen auf. Daher entschloss ich mich dazu, diese Aufgabe als ein Projekt anzusehen, um die Erweiterungen in neuen Version implementieren zu können. 1.4 Vision Executer Folgende Erweiterungen sind für den Executer geplant : Erstellung einer Win32 Applikation um den Executer anzusprechen bzw. komfortabel Jobs erstellen zu können . Unter Win NT/2000 ermöglichen den Executer als Dienst zu installieren Implementierung der Möglichkeit der TCP/IP Socket-Verbindung um den Executer remote über TCP/IP anzusprechen. Einfügen einer Scheduler Funktionalität. Erweiterung der Funktonalität zur Systemüberwachung 2. Programm Executer 2.1 Wie funktioniert der Executer ? Der Executer ließt die Job-Daten aus einer ini-Datei und führt die entsprechenden Befehle aus. Dann überprüft er die Rückgaben auf Übereinstimmung mit den Suchkriterien. Dabei werden die Befehle im Programm über eine System Pipe ausgeführt. Dabei ist es möglich neben der eigentlichen Batch Verarbeitung, eine Vor- bzw. Nachverarbeitung durchzuführen. Dadurch kann eine Art Rekursion aufgebaut werden. 2.2 Wie und wann benutze ich den Executer ? Die Anwendung erfolgt über eine zu erstellende bzw. zu modifizierende ini Datei. Am einfachsten nutzt man die beiliegende Standard job.ini Datei als Muster bzun Besipiel. Das Anwendungsspektrum des EXECUTER recht groß, daher kann kein allg. Anwendungsbereich angeben werden. Die Anwendung lohnt sich grundsätzlich, wenn Rückgaben von Commandos bzw. Befehlen ausgewertet werden sollen. In folgenden Anwendungsbereichen findet der EXECUTER bereits Anwendung: als Tool im Bereich Systemmanagment, um den Zustand von Server-Farmen darzustellen. Cleint Verwaltung, um Daten der Cleints abzufragen Security Überprüfung von Systemen und Client Rechnern Software Verteilung 2.3 Die „executer.exe“ Beim Aufruf der executer.exe ohne Parameter wird standardmäßig versucht die job.ini zu öffnen. Die executer.exe kann mit dem Startparameter –f <jobdatei> aufgerufen werden, um einen spezielle Job zu verwenden. Aufruf : c:\executer (job.ini wird geöffnet) c:\executer.exe –f batch.ini (andere Datei wird geöffnet) Die Ausführung des Jobs wird in der „Job“.log Datei entsprechend protokolliert. Das Ergebnis des Jobs wird in die Datei „Job“.txt geschrieben. 2.4 Die Job.ini Datei – erstellen eines Jobs Die Job Datei baut sich in mehrere Bereich auf. Bemerkungszeilen werden durch ein #-Symbol angezeigt. Alle Zeilen, die mit # beginnen werden in der Job Verarbeitung nicht berücksichtig. Bereich [job] [job] suchmodus= 0 (0=Standard 1=Nach Suchmaske) Festlegen wie die Ausgabe der Befehle nach den Suchkriterien durchsucht werden soll. 0=Standard, das bedeutet, alle Suchkriterien ODER verknüpft; Es wird ein Hit angezeigt, wenn eins der Suchkriterien enthalten sind. suchmaske= &...| (|=ODER &=UND) Suchfunktion über die Suchkriterien bilden. Die Suchmaske wird mit den Zeichnen „&“ für UND und „|“ für ODER gebildet. log_modus= 0 Ausgabemodus der Log Datei festlegen. 0=Standard Ausgabe; 1=detailierte Ausgabe (Alle Ausgaben der Befehle werden in die Log Datei geschrieben) out_modus= 0 Format der Ausgabe-Datei festlegen; 0=Standard, Suchbezogen; es werden die gefunden Zeilen ausgegeben 1=Standard detailliert; es wird zusätzlich die Treffer Informationen angezeigt 2=Ausgabe der Servername wenn ein Treffer vorlag 3=nur die Servernamen geschrieben. Die Output Datei kann als rekursive Server Datei verwendet werden. 4=nur die Rückgaben der Befehle werden bei einem Hit werden ausgegeben . srv_modus= 0 Server-Platzhalter Modus aktivieren 0=Einzelmodus; 1=Mehrfachmodus über zentrale server.ini; 2=Mehrfachmodus über eigene Server Datei. srv_datei= itocheck.srv Name der eigenen Server Datei angeben platzhalt= $$$$$ Platzhalter Zeichenkette angeben Bereich [command] [command] # Befehle die ausgeführt werden sollen ping $$$$$ Hier sind die entsprechenden Befehle einzugeben. Max. 50 Befehle a 256 Zeichen Bereich [check] [check] # Wonach die Ausgabe der Befehle gecheckt werden soll Zeit•berschreitung !Antwort Hier sind die entsprechenden Suchkriterien einzugeben. Max. 50 Kriterien a 256 Zeichen Wenn vor das Suchkriterium ein ! gestellt wird, wird dies als NICHT interpretiert. D.h. Wenn das Suchkriterium nicht gefunden wird, erfolgt ein Hit. Bereich [before] [before] # Befehle die vor der Ausführung ausgeführt werden sollen copy job.txt job.sik Hier können Befehle angegeben werden, die vor der Ausführung des Job durchlaufen sollen. Z.B Sicherung alter logs usw. Max. 50 Befehle a 256 Zeichen Bereich [after] [after] # Befehle die nach der Verarbeitung ausgeführt werden sollen sendmail job.txt [email protected] executer job2.ini Hier können Befehle angegeben werden, die nach der Ausführung des Job durchlaufen werden sollen. Z.B Ergebnis per Mail versenden, oder der Aufruf eines anderen Jobs usw. Max. 50 Befehle a 256 Zeichen 2.5 Der Suchmodus – die Suchmaske Mit Hilfe der Suchmaske kann eine Suchfunktion gebildet werden, mit der die Suchkriterien verknüpft werden. Dies ergibt eine Suchemaske, die einen Hit ergibt, wenn die Maske den Wert TRUE liefert. Dabei wird die Suchmaske wie mit den Zeichnen „&“ für UND und „|“ für ODER gebildet. Die Suchmaske wird das dann wie folgt über die Suchkriterien gelegt. & / & / Suchk1. Suchmaske=&& \ \ \ \ Suchk2. Suchk3. Dabei gilt, wenn ein Suchkriterium gefunden wird liefert das Suchkriterium den Wert TRUE zurück. Im Obigen Beispiel müssten also alle drei Suchkriterien enthalten sein, damit er einen Treffer anzeigt. 2.6 Die Log Datei – der Logmodus Abhängig vom Logmodus wird eine entsprechende Log Datei angelegt. Der Dateiname der Log Datei ist „Job-Name“.log. In dieser Datei wird während der Ausführung alles protokolliert. Es werden alle Fehlermeldungen und Fehlercodes ebenfalls in die Log Datei geschrieben. Wenn der log_mod=1 aktiviert wurde, werden zusätzlich alle Rückgaben der Befehle in der Pipe, ins log geschrieben. Daher sollte bei einer Fehleranalyse immer log_mod=1 gewählt werden. 2.7 Das Ergebnis – nutzen des Ausgabemodus Das Ergebnis des Durchlaufes wird in die Datei „Job-Name“.txt geschrieben. Dabei kann zwischen verschiedenen Ausgabeformaten gewählt werden. Die Standausgabe stellt das Ergebnis für jeden Server und jeden Befehl einzeln dar. Als eine Alternative kann der out_mod=3 gewählt werden. Dieses Ausgabeformat stellt im Kurzformat nur die Server dar, in denen die Ausgabe gefunden wurde. Dieses Ausgabeformat eignet sich z.B. dazu Systemzustände darzustellen (Server wird angezeigt => Server hat Problem ). Ein weiteres Ausgabeformat ermöglicht den Aufbau von quasi Rekursionen bzw. Schleifen. In diesem Format werden bei Treffern nur die Servernamen in die Ausgabedatei geschrieben. Dadurch ist es möglich diese Ausgabedatei als Eingabe Server-Datei für einen zweiten Aufruf vom Executer zu benutzen. 2.8 Die Server Datei – arbeiten mit Platzhalter Um Mehrfachaufrufe über Platzhalter durchführen zu können, wird die Server Datei benötig. Hier gibt es zunächst einmal die zentrale Server.ini Datei, welche über den srv_mod=1 angesprochen wird. Dabei darf man sich nicht an dem Begriff „Server“ stören, da dies nur eine Anwendung ist. Anstatt von Servernamen kann natürlich auch jede andere Zeichenfolge in diese Dateien eingetragen werden. Neben der zentralen Server Datei, gibt es auch die Möglichkeit eine individuelle Job bezogene Server Datei zu erstellen und zu verwenden. Dazu ist lediglich eine Datei mit den entsprechenden Servernamen zu erstellen. Der Name der Datei ist in der Job Datei unter srv_datei = „Dateiname“ zu vermerken, wobei der srv_mod=2 eingestellt sein muss. Für die Server Datei besteht folgende Begrenzung: 200 Zeilen a 40 Zeichen. Die Abgrenzung der einzelnen Server geschieht zeilenweise, d.h. es wird immer zeilenweise eingelesen und eine Zeile entspricht einem Server bzw. Platzhalter. 2.9 Nutzung von Vor- bzw. Nachverarbeitung – Aufbau von quasi Rekursionen Mit der Vor- bzw. Nachverarbeitung bietet die Möglichkeit, einzelne Befehle vor bzw. nach der Ausführung des eigentlichen Jobs, ausführen zu lassen. Dadurch lassen sich z.B. alte logs sichern oder Protokollmails versenden. Damit erhält man die Möglichkeit eine Art Rekursion aufzubauen. Ein Beispiel: Sie erstellen eine Job1.ini mit der alle Server aus der Server.ini nach einer Eigenschaft abgeprüft werden. Alle Hits werden in die job1.txt geschrieben(Wichtig das out_mod=2 !!!). Schreiben sie beim Job1 als Nachverarbeitungsbefehl den Aufruf executer –f job2.ini rein. Erstellen Sie eine job2.ini und schreiben bei ihr unter srv_datei=job1.txt. Dadurch wird die Ausgabe des ersten Jobs zur Server-Liste für den zweiten Job. Damit erhalten sie eine einfache Verschaltung der Jobs. Genauso können Sie die Vorverarbeitung benutzen. Im obigen Beispiel müsste nur executer –f job1.ini als Vorverarbeitungsbefehl in die Job2.ini eingeschrieben werden, womit man das gleiche Ergebnis hätte. 3. Beispiele und „Erste Schritte“ In dem Dokument Beispiele und „Erste Schritte“ finden Sie eine Einführung zum Executer mit praktischen Beispielen. 4. Die Fehlermeldungen Beim arbeiten mit dem Executer sind folgende Fehlermeldung möglich. Fehler 1000: Die Job-Datei konnte nicht geöffnet werden !!! Ursache: Die angegebene Job Datei ist nicht vorhanden Problemlösung: Dateinamen überprüfen Fehler 1001: Die Output Datei.txt konnte nicht geöffnet werden !!! Ursache: Die Output Datei kann nicht angelegt werden Problemlösung: prüfen ob ein anderes Prog. auf die Datei zugreift Fehler 1002: System Pipe konnte nicht geöffnet werden !!! Ursache: Das Betriebsystem verweigert das öffnen einer Pipe Problemlösung: Rechner ggf. überlastet , Rechner neu starten Fehler 1003: Die Job srv Datei konnte nicht geöffnet werden !!! Ursache: Die angegebene srv Datei ist nicht vorhanden Problemlösung: Dateinamen überprüfen, prüfen ob Datei vorhanden ist Fehler 1004: Eine Datei konnte nicht geschlossen werden !!! Ursache: evt.greifen andere Prozesse auf die Datei zu Problemlösung: zugreifende Prozesse beenden Fehler 1005: Job Datei Fehlerhaft !!! Ursache: Die Job.ini Datei enthält nicht die nötigen Job Daten Problemlösung: Format der Job Datei überprüfen Fehler 1007: Die Datei server.ini konnte nicht geöffnet werden !!! Ursache: Die angegebene server.ini Datei ist nicht vorhanden Problemlösung: Dateinamen überprüfen, prüfen ob Datei vorhanden ist Fehler 1008: Server Datei fehlerhaft !!! Ursache: Die Server Datei hat ein ungültiges Format Problemlösung: Einträge in der Server Datei überprüfen Fehler 1009: Eine Pipe konnte nicht geschlossen werden !!! Ursache: Der Befehl, der in der Pipe ausgeführt wurde leifert eine Fehlermeldung zurück Problemlösung: überprüfen sie die Rückgaben anhand der log Datei und ändern ggf. den Befehl.Wobei es auch möglich ist, dass der Befehl die richtige Rückgabe liefert, aber dennoch diese Meldung kommt. In diesem Fall kann diese Fehlermeldung ignoriert werden Fehler 1011: Suchmasken Schlüssel enthält undefinierte Zeichen, korregieren sie die INI Datei!!! Ursache: Die Suchmaske darf nur aus den Zeichen „&“ und „|“ bestehen Problemlösung: Ändern sie die Suchmaske Fehler 1013: Fehler in JOB INI-Datei. Anzahl zu groß. Nur max 50 Einträge je Bereich zulässig!!! Ursache: Die Job Datei hat ein ungültiges Format Problemlösung: Einträge in der Job Datei überprüfen Fehler 1014: Fehler in JOB INI-Datei. Suchmaske oder Anzahl Suchkriterien stimmen nicht!!! Ursache: Die Job Datei hat ein ungültiges Format Problemlösung: Einträge in der Job Datei überprüfen 5. Hinweise 5.1 Verwendung von Umlauten Da es ggf. zu Problemen bei der Verwendung von Umlauten kommen kann, folgender Hinweis. Damit ihr Suchkriterium mit Umlauten auch wirklich gefunden wird, verfahren sie wie folgt. Erstellen sie zunächst ihren Job. Lassen sie diesen mit log_mod=1 durchlaufen. Kopieren sie aus der Rückgabe ihrer Befehle den Bereich, der als Suchkriterium gelten soll, in die Job Datei. Nun sind sie sicher das die Zeichenfolge gefunden wird. 6. History 01.08.2000 Executer V1.0 Erste Version von Executer ist verfügbar und über Homepage Executer downloadbar http://www.uni-magdeburg.de/burdack/executer 08.08.2000 Executer V1.1 Neuerungen: Eingabe von NICHT Suchkriterien möglich. Suchfunktion überarbeitet Eingabemöglichkeit von Suchmasken Ausgabemodus 4 implementiert, der nur die gefundenen Zeilen ausgibt. 7. Copyright Alle Rechte liegen bei © 2000 Heiko Burdack. Für durch das Programm verursachte Fehler und Schäden an Soft- und Hardware übernimmt der Autor keine Haftung !!! Das Programm ist Freeware, es ist für die private sowie gewerbliche Nutzung freigegeben. Die Verteilung, der Verkauf oder sonstige kommerzielle Nutzung des Programms ist nur mit Zustimmung des Autors Heiko Burdack erlaubt. Eine Verlinkung der Internetseite ist erlaubt und ausdrücklich erwünscht. Executer © 2000, 02.08.2000 Heiko Burdack