Programm soll VPN Eregnis abwarten

  • Hi ihr,

    ich habe hier ein kleines Tool das damals unsere VPN Verbinung aufgebaut hat, Netzlaufwerke verbunden usw.
    Jetzt sind wir allerdings dabei auf PaloAlto umzustellen und die bringt den GlobalProtect Client mit. Den kann man nicht wirklich irgendwie beeinflussen oder steuern.
    Also müssen unsere User künftig die VPN Verbindung über den PA Client aufbauen und genau dann soll das Programm dafür sorgen dass Laufwerke verbundnen werden usw.

    Das alles hab ich mit AdlibRegister gelöst.
    Wer sich das antun will, anbei der Code, ist noch etwas wüst, weil ich verschiedene Möglichkeiten getestet hab.

    Vielleicht ist das aber der völlig falsche Ansatz.

    Das Problem ist dass ich den Client nicht steueren kann wir unseren Usern aber zu viel Klickerei ersparen wollen. Also sollten die eigentlich nur die VON Verbindung aufbauen und den Rest soll das Programm machen.
    Nur weiss ich keinen besseren Weg festzustellen ob eine VPN Verbindung besteht als ein Ping.

    Hat jemand eine bessere Idee?

  • Ich hab eine Alternative zu AdlibRegister gefunden: So siehst das Original aus:


    Spoiler anzeigen
    [autoit]

    Global $timer = TimerInit(), $counter, $Funktionen[2][2] = [['"Test", 0, "Test1", "blabla1"', 1000], ['"Test", 0, "Test2", "blabla2"', 2000]]
    While 1 If TimerDiff($timer) >= $Funktionen[$counter][1] Then ; In diesem Array kann man einstellen wie viel Zeit zwischen dem Aufruf der Funktionen liegen soll (Also nicht die Zeit zwischen den Skripten) $timer = TimerInit() ; Zeitmarke wird neu gesetzt Execute('Call(' & $Funktionen[$counter][0] & ')') ; Call ruft Funktionen auf, das erste im String ist der Name der Funktion, danach folgen die Parameter! Auf diese Art kann man Funktionen über Strings callen If $counter = UBound($Funktionen) - 1 Then ; Wenn counter maximal groß ist, wird es wieder auf 0 gesetzt, ansonsten + 1 $counter = 0 Else $counter += 1 EndIf EndIfWEnd
    Func Test($Flag, $Title, $Text) MsgBox($Flag, $Title, $Text)EndFunc

    [/autoit]

    So meine Anpassungen bisher:

    Spoiler anzeigen
    [autoit]

    Global $timer = TimerInit(), $counter, $Funktionen[2][2] = [["VPN_Status",0,_VPNStatus, 10000], ["Check_drives",0,_CheckDrives, 20000]]

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

    While 1

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

    If TimerDiff($timer) >= $Funktionen[$counter][1] Then ; In diesem Array kann man einstellen wie viel Zeit zwischen dem Aufruf der Funktionen liegen soll (Also nicht die Zeit zwischen den Skripten) $timer = TimerInit() ; Zeitmarke wird neu gesetzt
    Execute('Call(' & $Funktionen[$counter][0] & ')') ; Call ruft Funktionen auf, das erste im String ist der Name der Funktion, danach folgen die Parameter! Auf diese Art kann man Funktionen über Strings callen
    If $counter = UBound($Funktionen) - 1 Then ; Wenn counter maximal groß ist, wird es wieder auf 0 gesetzt, ansonsten + 1 $counter = 0 Else $counter += 1 EndIf EndIf

    [/autoit]

    Den Fehler den ich bekomme:
    (141) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    in dieser Zeile:

    [autoit]

    Global $timer = TimerInit(), $counter, $Funktionen[2][2] = [["VPN_Status",0,_VPNStatus, 10000], ["Check_drives",0,_CheckDrives, 20000]]

    [/autoit]


    Ich muss aber feststellen dass das meinen Horizont sprengt 8|
    Hier steige ich schon kognitiv aus:

    [autoit]

    $timer = TimerInit(), $counter, $Funktionen[2][2] = [["VPN_Status",0,_VPNStatus, 10000], ["Check_drives",0,_CheckDrives, 20000]]

    [/autoit]


    Dummerweise muss ich nur jedes halbe Jahr - Jahr mal was programmieren, deswegen dauert es auch immer recht lange bis ich mich erinnere wie dieses und jenes zu lesen ist. :wacko: 

    Kann mir da mal jemand auf die Sprünge helfen?

    • Offizieller Beitrag
    [autoit]

    $Funktionen[2][2] = [["VPN_Status",0,_VPNStatus, 10000], ["Check_drives",0,_CheckDrives, 20000]]

    [/autoit]


    Das Array ist mit 2 Elementen und 2 Elementen in der 2. Dimension angegeben, hat aber in der 2. Dim 4 Elemente.
    Also deklariere mit $Funktionen[2][4] und passe die Indizes im Rest des Codes an.

    • Offizieller Beitrag

    Achja, hatte ich vorhin nicht drauf geachtet:
    Was bitte soll denn das in dem Array sein: "_VPNStatus" und "_CheckDrives" ?
    Wenn du diese Funktionen aufrufen möchtest um den Return als Parameter im Array zu speichern, geht das so:
    "_VPNStatus()" und "_CheckDrives()"
    Der Syntaxcheck sollte dir aber dazu eine Fehlermeldung ausspucken.