tazze
Goto Top

Blat - verdecken der Parameter möglich? Zentrale Konfiguration?

Blat ohne direkte Nennung von Benutzer und Passwort in der Batch-Datei

Hallo!
ich verwende hier Blat, ein gutes Tool zum Versand von eMails, funktioniert auch recht gut.

Frage ist nun, ob ich gerade in Batchdateien die Syntax von Blat etwas "optimieren" kann, z.b. beim Abfragen von Errorleveln.

Gibt es eine Möglichkeit, eine zentrale Datei für Blat zu verwenden, wo z.B. der Username, die Empfängereimailadresse, das Passwort etc. hinterlegt ist, so dass ich es nicht jedesmal neu angeben muss?

Falls ja, wie genau funktioniert das? Anleitung oder Beispiel wäre super!!!
Wir verwenden hier nen Server 2003 Standard.

Tausend Dank!

Viele Grüße, Tazze

Content-Key: 145844

Url: https://administrator.de/contentid/145844

Printed on: April 24, 2024 at 08:04 o'clock

Mitglied: 60730
60730 Jun 28, 2010 at 22:07:04 (UTC)
Goto Top
Servus,

natürlich geht das - denn innerhalb von "Batch" oder anderen Scriptsprachen kann man sehr vieles automatisieren.
Das nennt man dann aber eigentlich "Variablen" und die sind - wie der name schon sagt - variabel.

Ohne deine Batch zu kennen, kann man die nicht optimieren. Von daher nur diese zeilen und damit die Aufforderung - schreib Sie hier nieder.
Am besten in / zwischen <code> </code> Blöcke.

Gruß
Member: tazze
tazze Jun 28, 2010 at 22:32:53 (UTC)
Goto Top
Hi, danke für die schnelle Antwort, nachstehend einfach mal ein Beispiel für ntbackup, welches eine Sicherung nach Wochentagen anlegt:

@echo off & setlocal

rem *** Stop der Datenbank
net stop "FirebirdGuardianDefaultInstance"  
net stop "FirebirdServerDefaultInstance"  

rem *** Wechsel in das Verzeichnis
cd c:\sicherung

rem *** Aufruf  für Wochentag
Call c:\sicherung\GetAllDateTimeInfos.bat /s /q

Set Wochentag=%cDoW%

rem *** Löschung der  lokalen Variablen
Call c:\sicherung\GetAllDateTimeInfos.bat /u

rem *** prameter für ntbackup
Set "NTPara=backup @C:\sicherung\jobauswahl.bks"  
Set "NTPara=%NTPara% /F s:\Sicherung_%Wochentag%"  
Set "NTPara=%NTPara% /j "Serversicherung" /V:yes /R:no /L:s /M normal"  

ntbackup.exe %NTPara%


rem *** Kopie der aktuellen Log-Datei  von ntbackup
for /f %%i in ('dir /b /od "C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\*.log"') do @set Neueste=%%i  
copy "C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\%Neueste%" "C:\temp\logfile-%computername%.txt"  
set error=%errorlevel%

IF %error% == 4 goto error4
IF %error% == 3 goto error3
IF %error% == 2 goto error2
IF %error% == 1 goto error1
IF %error% == 0 goto error0


:error4
echo "Hier ist error=4"  
Blat -install SERVER. email@email.de
Blat -body "Sicherung fehlerhaft"  -to Mailempfänger  -server Mailserver -u Absender -pw Passwort  -timestamp -log blatSMTPlog.txt -subject "Sicherung Server, FEHLERHAFT!"  -attach "C:\temp\logfile-%computername%.txt"  
goto eof


:error3
echo "Hier ist error=3"  
Blat -install SERVER. email@email.de
Blat -body "sicherung fehlerhaft (abgebrochen)"  -to Mailempfänger  -server Mailserver -u Absender -pw Passwort  -timestamp -log blatSMTPlog.txt -subject "Sicherung Server, FEHLERHAFT!" -attach "C:\temp\logfile-%computername%.txt"  
goto eof

:error2
echo "Hier ist error=2"  
Blat -install SERVER. email@email.de
Blat -body "sicherung fehlerhaft (Dateizugriffskonflikt)" -to Mailempfänger  -server Mailserver -u Absender -pw Passwort  -timestamp -log blatSMTPlog.txt -subject "Sicherung Server, FEHLERHAFT!" -attach "C:\temp\logfile-%computername%.txt"  
goto eof

:error1
echo "Hier ist error=1"  
Blat -install SERVER. email@email.de
Blat -body "sicherung fehlerhaft (keine Dateien zum sichern gefunden)"  -server Mailserver -u Absender -pw Passwort  -timestamp -log blatSMTPlog.txt -subject "Sicherung Server, FEHLERHAFT!" -attach "C:\temp\logfile-%computername%.txt"  
goto eof

:error0
echo "Hier ist error=0. Sicherung erfolgreich"  
Blat -install SERVER. email@email.de
Blat -body "sicherung erfolgreich!" -to Mailempfänger  -server Mailserver -u Absender -pw Passwort  -timestamp -log blatSMTPlog.txt -subject "Sicherung Server, ERFOLGREICH!" -attach "C:\temp\logfile-%computername%.txt"  
goto eof

rem *** Start der Datenbank
:eof
net start "FirebirdGuardianDefaultInstance"  
echo "hier ist eof"  
pause

Zugegeben, das meiste ist nicht von mir, versuche nur das ganze etwas anzupassen.
Was mich vor allem stört, ist der aufruf von Blat mit mehrfach genannten Paramentern. Kann man das nicht optimieren? Wenn ja, wie?

tausend Dank!

viele Grüße, Tazze
Member: bastla
bastla Jun 29, 2010 at 00:03:51 (UTC)
Goto Top
Hallo tazze!

Etwas gestrafft:
@echo off & setlocal

rem *** Stop der Datenbank
net stop "FirebirdGuardianDefaultInstance"  
net stop "FirebirdServerDefaultInstance"  

rem *** Wechsel in das Verzeichnis
cd /d c:\sicherung

rem *** Aufruf  für Wochentag
Call GetAllDateTimeInfos.bat /s /q

Set Wochentag=%cDoW%

rem *** Löschung der  lokalen Variablen
Call GetAllDateTimeInfos.bat /u

rem *** prameter für ntbackup
Set "NTPara=backup @C:\sicherung\jobauswahl.bks"  
Set "NTPara=%NTPara% /F s:\Sicherung_%Wochentag%"  
Set "NTPara=%NTPara% /j "Serversicherung" /V:yes /R:no /L:s /M normal"  

ntbackup.exe %NTPara%
set error=%errorlevel%

rem *** Kopie der aktuellen Log-Datei  von ntbackup
for /f %%i in ('dir /b /od "C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\*.log"') do set Neueste=%%i  
copy "C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\%Neueste%" "C:\temp\logfile-%computername%.txt"  

IF %error% == 4 call :MailIt "Sicherung fehlerhaft" "Sicherung Server, FEHLERHAFT!"  
IF %error% == 3 call :MailIt "Sicherung fehlerhaft (abgebrochen)" "Sicherung Server, FEHLERHAFT!"  
IF %error% == 2 call :MailIt "Sicherung fehlerhaft (Dateizugriffskonflikt)" "Sicherung Server, FEHLERHAFT!"  
IF %error% == 1 call :MailIt "Sicherung fehlerhaft (keine Dateien zum sichern gefunden)" "Sicherung Server, FEHLERHAFT!"  
IF %error% == 0 call :MailIt "Sicherung erfolgreich!" "Sicherung Server, ERFOLGREICH!"  

rem *** Start der Datenbank
net start "FirebirdGuardianDefaultInstance"  
echo "hier ist eof"  
pause
goto :eof

:MailIt
echo %~1 - %~2
Blat -install SERVER. email@email.de 
Blat -body %1  -to Mailempfänger  -server Mailserver -u Absender -pw Passwort  -timestamp -log blatSMTPlog.txt -subject %2  -attach "C:\temp\logfile-%computername%.txt"  
goto :eof
Grüße
bastla
Mitglied: 77559
77559 Jun 29, 2010 at 07:42:23 (UTC)
Goto Top
Hallo Tazze,

du kannst mit Blat auch mehrere Profile mit kompletten Login Daten in der Registry ablegen (Mail-Account und Passwort verschlüsselt).
Die landen dort in [HKEY_LOCAL_MACHINE\SOFTWARE\Public Domain\Blat] sind dann also für alle User nutzbar.
Wer darauf Zugriff hat, kann das auch auslesen und ggfs missbrauchen. Du verlagerst also nur ein Risiko von der Batch in die Registry.

Die Syntax von z.Bsp -installsmtp weicht etwas von der normalen Kommandozeile ab, die Reihenfolge ist wichtig da die Argumente nicht bennant sind.
(Die drei - stehen für die Defaultwerte von Try=1, Port=25, Profil=Standard)
Blat -installSMTP Mailserver email@email.de - - - Absender Passwort 
Wenn die Daten einmal in der Registry sind, kannst du das Standard Profil einfach nutzen mit:
Blat -body "sicherung erfolgreich!" -to Mailempfänger -timestamp -log blatSMTPlog.txt -subject "Sicherung Server, ERFOLGREICH!" -attach "C:\temp\logfile-%computername%.txt" 
Nach einmaliger Anwendung muss das -InstallSMTP aus der Batch natürlich raus.

Gruß
LotPings
Member: tazze
tazze Jun 29, 2010 at 16:34:12 (UTC)
Goto Top
Hi Bastla + LotPings

wow... , die beiden Antworten waren genau das, wonach ich suchte.

eine Unklarheit noch:

Blat -installSMTP Mailserver email@email.de - - - Absender Passwort 

die drei Querstriche (-) muss ich die so eingeben oder mit Inhalten füllen? Gleich mal testen....

herzlichen Dank nochmals!
Member: tazze
tazze Jun 29, 2010 at 16:53:38 (UTC)
Goto Top
Hi, jetzt muss ich doch noch mal fragen (sorry, dau....)

in Zeile 43:
echo %~1 - %~2 

das ist mir nicht ganz klar.... hier werden die Werte aus Zeile 30 - 34 übergeben, ja nach Fall. Aber die Syntax sieht für mich sehr ungewöhnlich aus

danke nochmals!
Tazze
Member: bastla
bastla Jun 29, 2010 at 17:01:52 (UTC)
Goto Top
Hallo Tazze!

Die Schreibweise mit Tilde ("~") sorgt einfach dafür, dass die übergebenen Parameter ohne die umgebenden Anführungszeichen ausgegeben werden ...

Grüße
bastla
Mitglied: 77559
77559 Jun 29, 2010 at 17:08:05 (UTC)
Goto Top
Zitat von @tazze:
die drei Querstriche (-) muss ich die so eingeben oder mit Inhalten füllen? Gleich mal testen....
Das kannst du halten wie du willst,
wenn du ein Profil angibst, musst du es natürlich auch später mit -profile Profname ansprechen.
Ich würde es der Einfachheit halber bei den defaults mit 3 mal - - - belassen.

Gruß
LotPings
Member: tazze
tazze Jun 29, 2010 at 18:51:47 (UTC)
Goto Top
Hoi,
Thanks!

ich hatte das letzte mal mit Batch-Geschichten zu Zeiten von MS-Dos 5 und 6.x zu tun.
Insofern ist es schon spannend für mich, was du aus dem Script gemacht hast.

Die Zeilen 38 - 40 lassen sich doch auch löschen, weil hier ja das script zu ende ist?
Wusste gar nicht, dass man mit Call auch Befehle ausführen kann, die nicht in außerhalb liegenden batchen liegen, dachte immer, dass man damit nur diese aufrufen kann....

Weisßt du zufällig, ob es auch höhere Errorlevels als 4 gibt, die ich mit nt backup abfragen muss /sollte? Werde bei Tante google da nicht wirklich fündig.

Mal wieder was gelernt.
Danke!
c-u
Tazze
Member: bastla
bastla Jun 29, 2010 at 19:02:26 (UTC)
Goto Top
Hallo tazze!
Die Zeilen 38 - 40 lassen sich doch auch löschen, weil hier ja das script zu ende ist?
38 und 39 sind entbehrlich - die Zeile 40 wird aber benötigt, da hier das "Hauptprogramm" endet (ansonsten würde das "Mail"-Unterprogramm ein zweites Mal ausgeführt).
Wusste gar nicht, dass man mit Call auch Befehle ausführen kann, die nicht in außerhalb liegenden batchen liegen, dachte immer, dass man damit nur diese aufrufen kann....
Unter DOS war das so, mit der CMD-Shell ist einiges mehr möglich - eben auch ein Unterprogrammaufruf (wobei sich dieses Unterprogramm dabei vergleichbar wie ein externer Batch verhält und zB auch Übergabeparameter als %1, %2, etc verwenden kann).
Weisßt du zufällig, ob es auch höhere Errorlevels als 4 gibt, die ich mit nt backup abfragen muss /sollte? Werde bei Tante google da nicht wirklich fündig.
Sorry - damit kann ich auch nicht dienen ...

Grüße
bastla