erste Gehversuche - ini & GUI

  • Erst mal hallo, Vorstellung folgt noch im Richtigen Forum ;)
    Edit: Wie Versprochen, die Vorstellung

    Als alter Batch Liebhaber bin ich mitlerweile an meine Grenzen gestossen. Dank autoit sollte sich allerdings mein derzeitges "Projekt" gut realisieren lassen.

    Kurz zum Projekt (zum besseren Verständniss):
    Script welches ntBackup / 7zip Sicherung startet, WIN Ereignissanzeige ausliest, Dienste stoppt/startet (um konflikte mit Backups zu vermeiden), LOG Files schreibt, LOGs per mail versendet und alte logs löscht
    Konfiguration erfolgt über ini, bzw. über GUI (GUI ist zB notwendig um das MailServerPasswort nicht in reinschrift zu speichern)

    Status:
    hab jetzt mal dammit begonnen ein Script für die Konfiguration zu schreiben. Anfangs ini auslesen, dann GUI starten (wird in Zukunft über ein Syntax aufgerufen). Das Rückschreiben in die ini folgt noch.

    meine Frage:
    bevor ich jetzt voller Euphorie weiterscripte wollte ich mal wissen ob ich's grundsätzlich mal halbwegs Richtig mache.
    IMHO müsste es auch einen leichteren Weg mit den GUICtrlCreateCombo Funktionen geben, da doch eineige Einstellungen per Drop-Down gewählt werden sollten wird das mit meiner bisherigen Methode ziemleich Umfangreich.
    Ausserdem müsste ich den Default-DropDown Eintrag aufgrund des ini wertes Anpassen (ntBackup (Bandsicherung) als Default wenn ntbt in der ini steht)

    Code:

    [autoit]


    ; Script um die ini Datei zu Bearbeiten und auszulesen..

    [/autoit][autoit][/autoit][autoit]

    ; String.au3 includieren umd das Mail Passwort zu verschlüsseln
    #include <String.au3>
    #include <GuiConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    ; Passwort für die ver- / entschlüsselung:
    dim $mail_pwdkey = "12345"

    [/autoit][autoit][/autoit][autoit]

    ; ini Datei auslesen:
    $config_BackupType = IniRead("config.ini", "config", "BackupType", "0")
    $config_logType = IniRead("config.ini", "config", "logType", "0")
    $config_logFormat = IniRead("config.ini", "config", "logFormat", "0")
    $config_sendMail = IniRead("config.ini", "config", "sendMail", "0")
    $config_Services = IniRead("config.ini", "config", "Services", "0")
    $config_logDir = IniRead("config.ini", "config", "logDir", "0")
    $config_BackupFile = IniRead("config.ini", "config", "BackupFile", "0")

    [/autoit][autoit][/autoit][autoit]

    $tape_check = IniRead("config.ini", "tape", "check", "0")
    $tape_dev1 = IniRead("config.ini", "tape", "dev1", "0")
    $tape_dev2 = IniRead("config.ini", "tape", "dev2", "0")

    [/autoit][autoit][/autoit][autoit]

    $file_name = IniRead("config.ini", "file", "name", "0")
    $file_path = IniRead("config.ini", "file", "path", "0")

    [/autoit][autoit][/autoit][autoit]

    $mail_to = IniRead("config.ini", "mail", "to", "0")
    $mail_from = IniRead("config.ini", "mail", "from", "0")
    $mail_name = IniRead("config.ini", "mail", "name", "0")
    $mail_server = IniRead("config.ini", "mail", "server", "0")
    $mail_user = IniRead("config.ini", "mail", "user", "0")
    $mail_pwd = IniRead("config.ini", "mail", "pwd", "0")

    [/autoit][autoit][/autoit][autoit]

    ; Mail Passwort entschlüsseln:
    $mail_pwdd = _StringEncrypt ( 0, $mail_pwd, $mail_pwdkey, 1)

    [/autoit][autoit][/autoit][autoit]

    ; alle Variablen wurden eingelesen und das Mail Passwort wurde entschlüsselt
    G_Setup ()
    ; Funtion für Graphisches Setup:
    Func G_Setup ()
    #Region ### START Koda GUI section ### Form=G:\Documents\Admin Script\v0.1b\forms\AdminScript Setup.kxf
    $SetupForm = GUICreate("Einstellungen", 300, 500)
    $SetupForm_LC1 = GUICtrlCreateLabel("Backup Typ", 20, 16, 100, 20)
    $SetupForm_IC1 = GUICtrlCreateCombo ("ntBackup (Bandsicherung)", 130,16,150,20)
    GUICtrlSetData(-1,"ntBackup (Sicherung in Datei)|Sicherung in Datei (7zip)",$SetupForm_IC1)
    $SetupForm_TestButton = GUICtrlCreateButton("test", 270, 470)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit][autoit][/autoit][autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch GUICtrlRead ($SetupForm_IC1)
    case "ntBackup (Bandsicherung)"
    $config_BackupType = ("ntbt")

    case "ntBackup (Sicherung in Datei)"
    $config_BackupType = ("ntbf")

    case "Sicherung in Datei (7zip)"
    $config_BackupType = ("7zip")
    EndSwitch
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $SetupForm_TestButton
    MsgBox(0, "Test", "BackupTyp: "&GUICtrlRead ($SetupForm_IC1)&@CRLF&"ini Eintrag:"&$config_BackupType )

    [/autoit][autoit][/autoit][autoit]

    EndSwitch
    WEnd
    EndFunc

    [/autoit]

    Source.zip im Anhang (mit der ini Datei)

    Verbesserungsvorschläge erwünscht (bevor ich später alles neu coden muss :D )

    • Offizieller Beitrag

    Herzlich willkommen hier im Forum!

    Das Script sieht soweit ganz gut aus, bis auf eine Kleinigkeit:

    [autoit]


    GUICtrlSetData(-1,"ntBackup (Sicherung in Datei)|Sicherung in Datei (7zip)",$SetupForm_IC1)

    [/autoit]

    Das Ende (,$SetupForm_IC1) ist falsch. Nach dem Komma kommt der Defaultwert. Wenn das 'ntBackup (Sicherung in Datei)' sein soll, dann musst Du das so hinschreiben.
    Willst Du das später im Script ändern (nur den Defaultwert), dann so:

    [autoit]


    GUICtrlSetData($SetupForm_IC1, 'Sicherung in Datei (7zip)')

    [/autoit]

    Benötigst Du den aktuellen Wert (also den, den der User dort ausgewählt hat), dann kannst Du den mit...

    [autoit]


    $erg = GUICtrlRead($SetupForm_IC1)

    [/autoit]

    ...auslesen.


  • da ich sowas ähnliches schon programmiert habe wollt ich dich fragen wie du das mit den Feiertagen und Wochenenden machst ?
    läuft da dein script durch ? oder möchtest du an Feitertagen/Wochenenden aussetzen.


    Ich hab mir in der BATCH Version eine Datei namens feiertage.ini angelegt und alle Tage an denen das Backup nicht ausgeführt wird (Feiertage, SA, SO,...) in diese Datei eingetragen. In der BATCH Datei sieht das ganze dann so aus:

    Code
    %dh% ### Feiertage abfragen:
    set ftag=false
    for /f "tokens=1" %%d in (%cfg_dir%\feiertage.ini) do if %%d==%date:~-10% set ftag=true
    if NOT "%ftag%" == "true" goto run_netStop 
    echo Das Backup wurde wegen eines Feiertages / Betriebsurlaub nicht ausgefuehrt!!> %MYFILES%\l_backup.tmp
    goto run_log


    %dh% ist hierbei der Debung-Flag, dH wenn das Script im Debug Modus gestartet wird ist %dh = echo;
    %date wurde zuvor mit dem Befehlt unixdate gesetzt und formatiert;
    [run_log] ist der Abschnitt in dem das LOG weiterbehandelt wird (Ereignisanzeige auslesen, LOG schreiben und per Mail versenden);
    [net_Stop] ist der Abschnitt an dem ich dann (wenn konfiguriert) Dienste Beende und danach das Backup starte.

    Ich hab Dir mal mein Batch Script angehängt, die Einzelenen Zusatzprogramme ( 7zip.exe, blat.exe & blat.dll & blat.lib, delold.exe, dumpel.exe, istapeinserted, logparser.dll & logparser.exe, sleep.exe, unixdate.exe; ) welche im bin Ordner liegen fehlen allerdings (weiss nicht ob ich die Zwecks Copyright mitanhängen darf). p_template.tpl ist die Template Datei für LogParser wenn HTML Logs geschrieben werden sollen.
    Das Script funktioniert mehr oder weniger, Ausführung auf eigene Gefahr ;) (mit "AdminScript -debug" wird der Debug modus aktiviert in dem man alle Ausgaben des Scriptes sieht)
    Hoffe es hilft Dir, wie ich das ganze in AutoIt Umsetzte weis ich noch nicht, lass es Dich aber gerne wissen.
    So, nun aber zurück zu SciTe und weiter "konvertieren" ;)
    LG, MadHatter