Batch-Skript anpassen
Hallo liebe Community,
ich möchte gerne ein Batch-Skript, welches den Status diverser Krankenhausschnittstellen anzeigt, dahingehen ändern, dass es einen Befehl automatisch absetzt und das Ergebnis in ein Texfile schreibt, damit ich den Status mit Nagios überwachen kann. Leider habe ich von unten stehendem Batchfile nicht so viel die Ahnung.
Hier folgendes Batchfile:
Dieses Batchfile öffnet unsere "Jaif"-Konsole (nach ca 2 Sek. Ladezeit in der "normalen" Konsole). Mit dem Befehlt "show status" können wir den status der Schnittstellen dann abfragen. Dieser Befehlt listet die einzelnen Schnittstellen mit Status auf.
Wie bereits erwähnt möchte ich nun gerne haben, dass wenn man das Batchskript aufruft, automatisch der Befehl "show status" abgeschickt wird und das ergebnis in ein Textfile geschrieben wird. Somit könnte ich
das Textfile mit einer Abfrage nach dem Wort "offline" oder "Error" durchsuchen, und Nagios mithilfe des NS-Clients den gewünschten Exit-Code übergeben. Am besten wäre das natürlich, wenn das alles in das Ausgangsskript kommen könnte. Es sei denn, ihr habt evtl. eine bessere Idee das abzubilden ;)
Hier noch dei beiden anderen Skripte, die wohl durch das obere Skript aufgerufen werden:
setbsld.bat
und
setenv.bat
Ich hoffe ich konnte mich einigermaßen ausdrücken und ihr versteht mein Problem.
Ich bin für jede Hilfe dankbar.
LG
Niko
[Edit Biber] Codeformatierung nachgezogen.[/Edit]
ich möchte gerne ein Batch-Skript, welches den Status diverser Krankenhausschnittstellen anzeigt, dahingehen ändern, dass es einen Befehl automatisch absetzt und das Ergebnis in ein Texfile schreibt, damit ich den Status mit Nagios überwachen kann. Leider habe ich von unten stehendem Batchfile nicht so viel die Ahnung.
Hier folgendes Batchfile:
@call "%~dp0\setbsld.bat"
@set SYS_OPT=%SYS_OPT% -Dbsloader.noupdate=true
@set SYS_OPT=%SYS_OPT% -Dbsloader.mainclass=ag.gwi.app.comm.jaif.JAIFTool
@%JAVA_HOME%\bin\java.exe %SYS_OPT% -jar "%~dp0\bsld.jar" -console localhost:1099
Wie bereits erwähnt möchte ich nun gerne haben, dass wenn man das Batchskript aufruft, automatisch der Befehl "show status" abgeschickt wird und das ergebnis in ein Textfile geschrieben wird. Somit könnte ich
das Textfile mit einer Abfrage nach dem Wort "offline" oder "Error" durchsuchen, und Nagios mithilfe des NS-Clients den gewünschten Exit-Code übergeben. Am besten wäre das natürlich, wenn das alles in das Ausgangsskript kommen könnte. Es sei denn, ihr habt evtl. eine bessere Idee das abzubilden ;)
Hier noch dei beiden anderen Skripte, die wohl durch das obere Skript aufgerufen werden:
setbsld.bat
@REM ###############
@REM LOADER SETTINGS
@REM ###############
@call "%~dp0\setenv.bat"
@set SYS_OPT=-Dbsloader.libdir=%LIB_DIR%
@set SYS_OPT=%SYS_OPT% -Dbsloader.classdir=%CLASSES_DIR%
@set SYS_OPT=%SYS_OPT% -Dbsloader.resdir=%RESOURCES_DIR%
@set SYS_OPT=%SYS_OPT% -Dbsloader.startmethod=main
@REM Uncomment the next line to see the BSLD output
@REM set SYS_OPT=%SYS_OPT% -Dbsloader.verbose=true
@set SYS_OPT=%SYS_OPT% -Dbsloader.passparams=true
@set SYS_OPT=%SYS_OPT% -Dbsloader.usestatic=true
@set SYS_OPT=%SYS_OPT% -Dbsloader.noshutdown=true
@set SYS_OPT=%SYS_OPT% -Dbsloader.dbalias=%DATABASE_ALIAS%
@REM Uncomment following two lines to enable database user and password parameters. User name and password must be set in setenv.bat.
@REM set SYS_OPT=%SYS_OPT% -Dbsloader.dbuser=%DATABASE_USER%
@REM set SYS_OPT=%SYS_OPT% -Dbsloader.dbpwd=%DATABASE_PWD%
@set SYS_OPT=%SYS_OPT% -Dbsloader.rmisecmgr=true
@set SYS_OPT=%SYS_OPT% -Djava.security.policy=%JAIF_HOME%/system/jaif.policy
@REM #################
@REM STANDARD SETTINGS
@REM #################
@set SYS_OPT=%SYS_OPT% -Dcnf=%CNF_PATH%
@set SYS_OPT=%SYS_OPT% -DJAIFHOME=%JAIF_HOME%
@set SYS_OPT=%SYS_OPT% -Dgwi.comm.rmiport=1099
setenv.bat
@REM ################################
@REM # SETS THE CURRENT ENVIRONMENT #
@REM ################################
@set JAVA_HOME="C:\Program Files (x86)\Java\jre7"
@set CLASSES_DIR="C:\JAIF\JAIF_HL7/classes"
@set LIB_DIR="C:\JAIF\JAIF_HL7/lib"
@set RESOURCES_DIR="C:\JAIF\JAIF_HL7\resources"
@set DATABASE_ALIAS=KHV
@REM Uncomment following two lines and set correspondingly database user and password. Equivalent changes in setbsld.bat required.
@REM set DATABASE_USER=
@REM set DATABASE_PWD=
@set CNF_PATH="C:\JAIF\JAIF_HL7\admin\orbis.cnf"
@set JAIF_HOME="C:\JAIF\JAIF_HL7\jaif"
@set INSTALL_HOME="C:\JAIF\JAIF_HL7"
Ich bin für jede Hilfe dankbar.
LG
Niko
[Edit Biber] Codeformatierung nachgezogen.[/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 270383
Url: https://administrator.de/contentid/270383
Ausgedruckt am: 22.11.2024 um 05:11 Uhr
9 Kommentare
Neuester Kommentar
Hallo Niko,
wonach du suchst, sind Pipes.
Oh ja, du solltest auch nach Codetags suchen, um die Codezeilen etwas übersichtlicher in die Beiträge integrieren zu können ;)
Siehe hier
Das soll heißen, den ersten Teil deines Batchfiles könntest du in etwa so realisieren: (nur beispielhaft)
An dieser Stelle stellt | einen Pipe-Operator dar, >> ist ein Command redirection Operator, der die Ausgabe der Ausführung an ein Textfile anhängt.
Zu diesem Thema mal ein paar Jahre in der Zeit zurück gereist: Command Redirection
Ich hoffe, ich habe deine Aufgabe richtig verstanden.
Beste Grüße
Dominique
wonach du suchst, sind Pipes.
Oh ja, du solltest auch nach Codetags suchen, um die Codezeilen etwas übersichtlicher in die Beiträge integrieren zu können ;)
Siehe hier
Das soll heißen, den ersten Teil deines Batchfiles könntest du in etwa so realisieren: (nur beispielhaft)
call "%~dp0\setbsld.bat"
set SYS_OPT=%SYS_OPT% -Dbsloader.noupdate=true
set SYS_OPT=%SYS_OPT% -Dbsloader.mainclass=ag.gwi.app.comm.jaif.JAIFTool
echo. MeinBefehl | @%JAVA_HOME%\bin\java.exe %SYS_OPT% -jar "%~dp0\bsld.jar" -console localhost:1099 >> C:\myLog.txt
Zu diesem Thema mal ein paar Jahre in der Zeit zurück gereist: Command Redirection
Ich hoffe, ich habe deine Aufgabe richtig verstanden.
Beste Grüße
Dominique
Ja klar ;)
Also, die Ausgabe von "show status" wird heißen: "Der Befehl "show" ist entweder falsch geschrieben oder konnte nicht gefunden werden." bzw. das anderssprachige Pendant
Da die CMD ihn ja nicht kennt. Deswegen springt die Console wohl wieder weg.
Dafür das vorangesetzte echo.
Nimm eventuell doch mal den Punkt weg. Eine meiner schlechten Gewohnheiten. Damit rückt er den String ein Space weiter.
Vielleicht mag er das nicht.
Beste Grüße
Dominique
Also, die Ausgabe von "show status" wird heißen: "Der Befehl "show" ist entweder falsch geschrieben oder konnte nicht gefunden werden." bzw. das anderssprachige Pendant
Da die CMD ihn ja nicht kennt. Deswegen springt die Console wohl wieder weg.
Dafür das vorangesetzte echo.
Nimm eventuell doch mal den Punkt weg. Eine meiner schlechten Gewohnheiten. Damit rückt er den String ein Space weiter.
Vielleicht mag er das nicht.
Beste Grüße
Dominique
Nein, nicht ganz.
Die CMD versucht den Befehl auszuwerten und das Ergebnis dann an die Console zu senden.
Also musst du dafür sorgen, dass das Ergebnis dein eigentlicher Input ist und nicht andersherum. Das Echo wird also nicht mit gesendet.
Schonmal versucht, ob sich die JAIF-console einen Schalter kennt, um direkt mitgelieferte Befehle auszuwerten und zu beenden?
Die CMD versucht den Befehl auszuwerten und das Ergebnis dann an die Console zu senden.
Also musst du dafür sorgen, dass das Ergebnis dein eigentlicher Input ist und nicht andersherum. Das Echo wird also nicht mit gesendet.
Schonmal versucht, ob sich die JAIF-console einen Schalter kennt, um direkt mitgelieferte Befehle auszuwerten und zu beenden?
Du hast echo show status in Anführungszeichen gesetzt? :D
Ja klar, das könntest Du machen. Achte aber erst darauf, dass die JAIF-Console (und damit das Batch samt CMD) sich nach Ausführung des show status beenden.
Sonst läuft das Batch unendlich lang, ehe es beginnt, das Textfile zu durchsuchen.
Beste Grüße
Dominique
Ja klar, das könntest Du machen. Achte aber erst darauf, dass die JAIF-Console (und damit das Batch samt CMD) sich nach Ausführung des show status beenden.
Sonst läuft das Batch unendlich lang, ehe es beginnt, das Textfile zu durchsuchen.
Beste Grüße
Dominique