1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Automatisches Verbinden mit VPN bei Systemstart

Dieses Thema im Forum "AppleScript" wurde erstellt von Cillit Bang, 01.03.13.

  1. Cillit Bang

    Cillit Bang Châtaigne du Léman

    Dabei seit:
    21.12.08
    Beiträge:
    821
    Hallo,

    Da OS X leider nicht von Haus aus die Option bietet, sich bei Systemstart sich automatisch mit einem bestimmten VPN verbinden zu lassen, bin ich nach kurzer Suche im Internet auf eine einfache Lösung mit einem Apple-Skript gestoßen.

    Code:
    [LEFT]on idle[/LEFT]
         tell application "System Events"        
              tell current location of network preferences            
                   set myConnection to the service "FH München"            
                   if myConnection is not null then                
                        if current configuration of myConnection is not connected then                    
                             connect myConnection                
                        end if            
                   end if        
              end tell        
              return 120    
         end tell [LEFT]end idle[/LEFT]
    
    HIER die komplette Anleitung.

    Jedoch passiert nach dem Ausführen des Skriptes bei mir leider nichts.
    Ich habe einmal den "on idle"-Befehl weggelassen, dann funktioniert das Skript. Da ich bis jetzt jedoch kaum etwas mit AppleScript zutun hatte, würde ich gerne von euch wissen, ob dieser Befehl wichtig ist, ob man ihn braucht und was er bewirkt. Außerdem steht in der Anleitung, dass man das Skript als Programm abspeichern soll mit der Option "stay open". Diese wird bei mir jedoch gar nicht erst angezeigt.
     
  2. TAdS

    TAdS Osnabrücker Reinette

    Dabei seit:
    17.09.04
    Beiträge:
    977
    Wenn du das Ganze ohne AppleScript o.ä. lösen willst, schau dir mal das kleine Menuprogramm `Controlplane` an.
    Damit lässt sich u.a auch die VPN-Verbindung `location`-gesteuert ein- und ausschalten.

    Gruesse
     
  3. das_micha

    das_micha Leipziger Reinette

    Dabei seit:
    11.03.07
    Beiträge:
    1.795
    naja sollte ne simple automator aktion nicht reichen. habs eben mal ausprobiert mit wlan deaktivieren und dann wieder aktivieren. hat super geklappt.
     
  4. Pill

    Pill Adams Parmäne

    Dabei seit:
    07.07.12
    Beiträge:
    1.310
    Du musst das Skript mit "on idle" als "Programm" abspeichern mit der Option "Nach run-Handler anzeigen" (Mountain Lion) oder "Nicht automatisch beenden" (vor Mountain Lion).

    Der Programmcode im idle-Handler wird wird alle x Sekunden ausgeführt. Dazwischen befindet sich das Programm im Ruhezustand. Die Dauer wird dabei am Ende des Skripts mit "return 120" auf 120 Sekunden festgelegt.

    Hier findest du mehr zu den verschiedenen Handler:

    https://developer.apple.com/library...langguide/conceptual/ASLR_about_handlers.html
     
    Wuchtbrumme gefällt das.
  5. Cillit Bang

    Cillit Bang Châtaigne du Léman

    Dabei seit:
    21.12.08
    Beiträge:
    821
    Vielen Dank für eure Antworten! Das Programm Controlplane werde ich mir mal anschauen, kann man auch für andere Funktionen gut gebrauchen. Jedoch finde ich für die VPN-Geschichte die Lösung über ein Apple-Skript am simpelsten und saubersten.

    @Pill: Genau auf diese Antwort habe ich gewartet! ;) Das Skript funktioniert jetzt wunderbar nachdem ich den Haken bei "Nach run-Handler anzeigen" gesetzt habe. Nun ist alles so, wie ich es mir vorstelle.
     
  6. feuerwehrmann

    feuerwehrmann Gloster

    Dabei seit:
    06.05.13
    Beiträge:
    62
    Hallo zusammen,

    tut mir leid, dass ich das hier nochmal rauskrame. Aber ich bekomme leider eine Fehlermeldung, wenn ich das ganze ausführe.

    Was mache ich falsch?

    LG
     

    Anhänge:

  7. Kernelpanik

    Kernelpanik Winterbanana

    Dabei seit:
    05.03.04
    Beiträge:
    2.207
    Naja, bisschen nachdenken schadet nicht:
    Code:
    on idle
        set {newList, exclList} to {{}, {"WLAN", "Ethernet", "iPhone-USB", "iPad-USB"}}
        tell application "System Events"
            tell current location of network preferences
                set nameList to name of services
                repeat with x in nameList
                    if x is not in exclList then set newList to newList & x
                end repeat
                try
                    set connection to service (some item of newList)
                on error
                    return 60
                end try
                connect connection
            end tell
        end tell
        return 60
    end idle

    Die exclList muss ev. erweitert werden, je nach Bedarf. Wie oben schon gesagt, muss das Programm mit nach Run Handler anzeigen gespeichert werden. Anstelle von (some item of newList) kann auch ein absoluter Wert eingegeben werden.
     
    #7 Kernelpanik, 07.10.17
    Zuletzt bearbeitet: 07.10.17
  8. feuerwehrmann

    feuerwehrmann Gloster

    Dabei seit:
    06.05.13
    Beiträge:
    62
    Hallo,

    leider bin ich hier kein Profi.
    Ich verstehe dich so, dass ich die Liste mit allen Schnittstellen füllen soll, über die ich eine Internetverbindung herstelle, inklusive dem VPN. Und den VPN setzte ich dann in die Klammer "(some item of newList)" ein?

    Code:
    on idle
       set {newList, exclList} to {{}, {"WLAN", "fritzvpn"}}
       tell application "System Events"
           tell current location of network preferences
               set nameList to name of services
               repeat with x in nameList
                   if x is not in exclList then set newList to newList & x
               end repeat
               try
                   set connection to service (fritzvpn)
               on error
                   return 60
               end try
               connect connection
           end tell
       end tell
       return 60
    end idle
    
     
  9. ottomane

    ottomane Landsberger Renette

    Dabei seit:
    24.08.12
    Beiträge:
    7.194
  10. Kernelpanik

    Kernelpanik Winterbanana

    Dabei seit:
    05.03.04
    Beiträge:
    2.207
    Nein. Das Script sucht alle verfügbaren Internet Services die in den Systemeinstellungen > Netzwerk definiert sind. Die exclList schliesst alle aus, welche nicht berücksichtigt werden sollen. Von den übrigen wird einer zufällig ausgewählt. (some item of newList) Falls die Zufallsauswahl umgangen werden soll, einfach anstelle von (some item of newList) den absoluten Namen einsetzen. In Deinem Fall "fritzvpn" mit Anführungszeichen.
    Das Script ist ungetestet. Falls es nicht geht, einfach den Fehler hier melden.


    In Deinem Fall sollte folgendes Script genügen:
    Code:
    on idle
        tell application "System Events"
            tell current location of network preferences
                try
                    set connection to service "fritzvpn"
                    connect connection
                end try
            end tell
        end tell
        return 60
    end idle
     
    #10 Kernelpanik, 08.10.17
    Zuletzt bearbeitet: 08.10.17
  11. feuerwehrmann

    feuerwehrmann Gloster

    Dabei seit:
    06.05.13
    Beiträge:
    62
    Hi,

    danke.
    Leider funktioniert das Skript, welches bei mir genügen sollte, nicht. Ich bekomme keine Fehlermeldung und der VPN wird auch nicht verbunden.

    @ottomane Das Programm habe ich auch schon versucht, allerdings gibt es immer einen Fehler, falls keine Internetverbindung besteht.
     
  12. Kernelpanik

    Kernelpanik Winterbanana

    Dabei seit:
    05.03.04
    Beiträge:
    2.207
    Kannst Du mal einen Screen Shot von Deinen Netzwerkeinstellungen beilegen hier? Nimm mal "on idle", "try" und "end try" und "end idle" aus dem Skript und schicke dann die Fehlermeldung oder das Ergebnis.
     
    #12 Kernelpanik, 08.10.17
    Zuletzt bearbeitet: 08.10.17
  13. feuerwehrmann

    feuerwehrmann Gloster

    Dabei seit:
    06.05.13
    Beiträge:
    62
    Wenn ich das rausnehme passiert garnichts. Keine Fehlermeldung und keine Verbindung des VPN.
     

    Anhänge:

  14. Kernelpanik

    Kernelpanik Winterbanana

    Dabei seit:
    05.03.04
    Beiträge:
    2.207
    "on Idle", "end idle" rausgenommen?
    Versuch mal folgendes Script:
    Code:
    do shell script "networksetup -connectpppoeservice fritzvpn"
    
    Sollte das gehen, am Anfang die Zeile "on idle" und am Schluss die Zeilen "return 60" und "end idle" hunzufügen. Danach wie oben beschrieben als Programm mit "nach run handler" speichern.
    Code:
    on idle
        do shell script "networksetup -connectpppoeservice fritzvpn"
        return 60
    end idle
     
    #14 Kernelpanik, 09.10.17
    Zuletzt bearbeitet: 09.10.17
    feuerwehrmann gefällt das.
  15. feuerwehrmann

    feuerwehrmann Gloster

    Dabei seit:
    06.05.13
    Beiträge:
    62
    Jaaa. Funktioniert. Vielen Dank Kernelpanik.

    Kann man das jetzt noch so machen, dass er nur versucht eine Verbindung aufzuabuen wenn WLAN oder Ethernet verbunden sind? Sonst kommt eine Fehlermeldung, wenn keine Internetverbindung besteht.
     
  16. Kernelpanik

    Kernelpanik Winterbanana

    Dabei seit:
    05.03.04
    Beiträge:
    2.207
    z.B:
    Code:
    on idle
        try
            do shell script "ping -oQ -t2 8.8.4.4"
            do shell script "networksetup -connectpppoeservice fritzvpn"
        on error
            return 8
        end try
        return 60
    end idle

    Das Script testet ob egal womit, eine Internetverbindung besteht, wenn ja wird verbunden, wenn nein testet es nach 8 Sekunden wieder. Wenn verbunden testet es alle 60 Sekunden ob die Verbindung noch besteht.
     
    feuerwehrmann gefällt das.
  17. feuerwehrmann

    feuerwehrmann Gloster

    Dabei seit:
    06.05.13
    Beiträge:
    62
    Vielen vielen Dank.

    Ich fasse nochmal kurz zusammen, falls andere das gleiche Problem haben:

    Folgender Code prüft alle 8 Sekunden, ob eine Internetverbindung besteht (Ping an Google DNS Server).
    Wenn dies der Fall ist, wird die Verbindung fritzvpn hergestellt. Dann wird alle 60 Sekunden geprüft, ob die Verbindung noch besteht.

    Code:
    on idle
       try
           do shell script "ping -oQ -t2 8.8.4.4"
           do shell script "networksetup -connectpppoeservice fritzvpn"
       on error
           return 8
       end try
       return 60
    end idle
    
    Den Code in AppleScript einfügen und als Programm speichern. Die Option "nach run-Handler anzeigen" muss aktiviert sein.
    Ich packe das jetzt in den Autostart und blende das ganze im Dock aus (https://apple.stackexchange.com/que...to-connect-to-vpn-upon-login-boot/32395#32395). Getestet unter macOS Sierra.

    Nochmal vielen Dank.
     
  18. Kernelpanik

    Kernelpanik Winterbanana

    Dabei seit:
    05.03.04
    Beiträge:
    2.207
    Das Script ist nicht getestet. Unter anderem muss beobachtet werden ob, bei länger bestehender Verbindung Fehler auftreten. Oder was geschieht wenn die Netzwerkverbindung z.B durch Stromausfall oder Neustart des Routers unterbrochen wird. Im Dock ausblenden kann man indem man im Info.plist File des Programms die Zeile
    Code:
    <key>LSUIElement</key>
        <true/>
    

    hinzufügt. Dazu muss man den Paketinhalt des Skriptprograms anzeigen lassen.
     
    #18 Kernelpanik, 09.10.17
    Zuletzt bearbeitet: 10.10.17

Diese Seite empfehlen