Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Software>Mehrere Apple Scripte kombinieren oder besser Profildatei nutzen? Welche Fehler im Script?

Mehrere Apple Scripte kombinieren oder besser Profildatei nutzen? Welche Fehler im Script?

Windwusel
Windwusel07.08.2215:48
Hey,

ich versuche eine automatische VPN- und Server-Verbindung unter macOS zu realisieren. Dazu habe ich mehrere fertige Apple Scripte aber auch eine Anleitung für eine Profildatei gefunden. Mit der Profildatei funktioniert die automatische Verbindung leider nicht. Darum habe ich es mit Apple Script versucht. Das funktioniert zwar aber nicht so ganz nach Wunsch.

Dieses Script baut eine Verbindung zum Server auf sofern ich mit WiFi oder WiFi2 verbunden bin oder baut alternativ eine VPN-Verbindung und dann die Server-Verbindung auf. Das funktioniert, jedoch würde ich gerne das Script so ändern wollen, dass der VPN auch bei Trennung wieder verbindet. Dazu hätte ich das Script darunter...
set SSID to do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk '/ SSID: / {print $2}'"


if SSID is "WiFi" or SSID is "WiFi2" then
    try
        mount volume "smb://user:pass@192.168.100.100/Share"
    end try
    
    display notification "Internes WLAN verbunden, Verbindung zu NAS wurde hergestellt" with title "NAS verbinden"
    
else
    display notification "Verbunden mit anderem Netz, baue VPN Verbindung auf und mounte NAS" with title "NAS verbinden"
    
    tell application "System Events"
        tell current location of network preferences
            set VPNService to service "Heimserver"
            -- determine current VPN connection status     
            set isConnected to connected of current configuration of VPNService
            if isConnected = false then
                connect VPNService
                delay 6
            end if
        end tell
    end tell
    
    try
        mount volume "smb://usermitvpn:pass@192.168.111.111/Share"
    end try
    
end if

...Dieses Script stellt die Verbindung nach Trennung zwangsläufig wieder her. Auch das Funktioniert für sich allein genommen.
on idle
tell application "System Events"
        tell current location of network preferences
            set myConnection to the service "Heimserver"
            if myConnection is not null then
                if current configuration of myConnection is not connected then
                    connect myConnection
                end if
            end if
        end tell
        return 10
    end tell
end idle

Könnte man die beiden Scripte zu einem machen? Ziel ist die Verbindung aufzubauen wenn ich außerhalb von einem bestimmten Netzwerk bin und dann auch zu halten und wiederaufzubauen falls getrennt wird. Zudem soll auch dann erst die Server-Verbindung hergestellt werden.

Ich habe es außerdem mit einer modifizierten Profildatei aus dem Apple Configurator versucht. Aber mehr als die VPN-Verbindung hinzuzufügen macht diese leider entgegen der Aussage in der Anleitung nicht

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>PayloadContent</key>
    <array>
        <dict>
            <key>IPSec</key>
            <dict>
                <key>AuthenticationMethod</key>
                <string>SharedSecret</string>
                <key>LocalIdentifierType</key>
                <string>KeyID</string>
                <key>OnDemandRules</key>
                <array>
                    <dict>
                        <key>Action</key>
                        <string>EvaluateConnection</string>
                        <key>ActionParameters</key>
                        <array>
                            <dict>
                                <key>DomainAction</key>
                                <string>ConnectIfNeeded</string>
                                <key>Domains</key>
                                <array>
                                    <string>*.local</string>
                                    <string>*.fritz.box</string>
                                    <string>10.0.0.3</string>
                                </array>
                            </dict>
                        </array>
                    </dict>
                    <dict>
                        <key>Action</key>
                        <string>Disconnect</string>
                        <key>InterfaceTypeMatch</key>
                        <string>WiFi</string>
                        <key>SSIDMatch</key>
                        <array>
                            <string>Name of my Home Network</string>
                            <string>Company WiFi</string>
                        </array>
                    </dict>
                    <dict>
                        <key>Action</key>
                        <string>Connect</string>
                        <key>InterfaceTypeMatch</key>
                        <string>WiFi</string>
                    </dict>
                    <dict>
                        <key>Action</key>
                        <string>Connect</string>
                        <key>InterfaceTypeMatch</key>
                        <string>Cellular</string>
                    </dict>
                    <dict>
                        <key>Action</key>
                        <string>Connect</string>
                    </dict>
                </array>
                <key>SharedSecret</key>
                <data>Passwort</data>
            </dict>
            <key>IPv4</key>
            <dict>
                <key>OverridePrimary</key>
                <integer>0</integer>
            </dict>
            <key>PPP</key>
            <dict>
                <key>AuthName</key>
                <string>NAME</string>
                <key>AuthPassword</key>
                <string>Passwort</string>
                <key>CommRemoteAddress</key>
                <string>VPN-Adresse</string>
            </dict>
            <key>PayloadDescription</key>
            <string>Konfiguriert VPN-Einstellungen</string>
            <key>PayloadDisplayName</key>
            <string>VPN</string>
            <key>PayloadIdentifier</key>
            <string>com.apple.vpn.managed.XXX</string>
            <key>PayloadType</key>
            <string>com.apple.vpn.managed</string>
            <key>PayloadUUID</key>
            <string>XXX</string>
            <key>PayloadVersion</key>
            <integer>1</integer>
            <key>Proxies</key>
            <dict>
                <key>HTTPEnable</key>
                <integer>0</integer>
                <key>HTTPSEnable</key>
                <integer>0</integer>
            </dict>
            <key>UserDefinedName</key>
            <string>Heimserver</string>
            <key>VPNType</key>
            <string>L2TP</string>
        </dict>
    </array>
    <key>PayloadDisplayName</key>
    <string>Heimserver</string>
    <key>PayloadIdentifier</key>
    <string>Heimserver</string>
    <key>PayloadRemovalDisallowed</key>
    <false/>
    <key>PayloadType</key>
    <string>Configuration</string>
    <key>PayloadUUID</key>
    <string>XXX</string>
    <key>PayloadVersion</key>
    <integer>1</integer>
</dict>
</plist>

Das letzte Script sollte innerhalb eines bestimmten WiFi einen SplitVPN automatisch aufbauen wenn auf eine bestimmte Adresse zugegriffen wird bspw. 10.0.0.3. Dieses Script wäre eigentlich ideal da es immer dann eine Verbindung aufbaut wenn diese gebraucht würde, also wenn man auf den Server zugreifen würde. Leider funktioniert es nicht bei mir. Die Anleitung ist zwar bereits etwas älter aber mir wäre kein Grund bekannt warum diese an sich nicht funktionieren sollte. Die automatische Verbindung zum Server könnte ich dann mit dem Apple Script realisieren und den VPN-Part herausnehmen. Aber auch so ändern dann eben immer dann die Verbindung zum Server aufgebaut würde wenn eine VPN-Verbindunng besteht.

Ich bin zwar kein absoluter laie und vertehe die Codezeilen teilweise aber bin aktuell mit meinem Latein am Ende. Hat jemand Erfahrung mit dieser Art Problem und kennt eine praktikable Lösung oder kann die Probleme mit den Scripten vielleicht lösen?
„Meine Apple Geräte: MacBook Pro mit Touch Bar (15-inch, 2018), iPhone 14 Pro Max, AirPods Pro (2. Gen), Apple TV 4K (2022) und HomePod mini (1. Gen)“
-1

Kommentare

marm07.08.2216:41
Geht dies nicht viel einfacher über die Erstellung von zwei Netzwerkumgebungen? Umschalten kannst du dann schnell mit Apfel-Logo/Umgebung.
0
Windwusel
Windwusel07.08.2218:17
marm
Geht dies nicht viel einfacher über die Erstellung von zwei Netzwerkumgebungen? Umschalten kannst du dann schnell mit Apfel-Logo/Umgebung.

Kannst du das bitte genauer erklären?
„Meine Apple Geräte: MacBook Pro mit Touch Bar (15-inch, 2018), iPhone 14 Pro Max, AirPods Pro (2. Gen), Apple TV 4K (2022) und HomePod mini (1. Gen)“
0
marm07.08.2218:30
Ich verstehe es so, dass Du im Heimnetz per WLAN eine direkte Verbindung mit dem Server haben möchtest und unterwegs in einem fremden WLAN/LAN die Server-Verbindung per VPN.
Dann müsstest Du in der ersten Netzwerk-Umgebung unter Systemeinstellungen alles ohne VPN einrichten. Die zweite Netzwerkumgebung für unterwegs hingegen enthält ein aktives VPN-Profil.
Die SMB-Verbindung zum Server sollte in beiden Umgebungen gleich ablaufen.
Du musst natürlich selbst zwischen den Umgebungen wechseln, aber so oft läufst Du ja nicht aus deinem WLAN rein und raus, nehme ich an.
0
marm08.08.2200:42
Das habe ich mir gerade nochmal angeschaut.

Schlechte Nachricht: Ich kann zwar per Netzwerkumgebung die Reihenfolge von Ethernet und WLAN einstellen und auch welcher Ethernet-Adapter aktiviert ist, aber VPN ist aktiv oder nicht - egal welche Umgebung.

Gute Nachricht: Es ist bei mir völlig egal, ob VPN lokal aktiv ist.
Wenn ich VPN aktiv lasse, hat mein MBA über Tailgate (WireGuard) die IP 100.81.x.x. Mein Server lässt aber nur Zugriffe über 192.168.x.x zu. VPN ist so eingestellt, dass nicht der gesamte Verkehr über die VPN-Verbindung läuft. VPN läuft also lokal ins Leere und ich sehe auch nicht, dass es Ressourcen verbraucht.

Mein Fazit als Netzwerk-Amateur: Stelle die Firewall vom Server und Router passend ein, lass VPN einfach laufen und verzichte auf das Apple Script.

Aber vielleicht erklärt noch ein Profi, wie das richtig gemacht wird...
0
Mad Mac
Mad Mac08.08.2216:47
Mit der Anleitung habe ich die automatische VPN-Verbindung auf dem iPhone realisiert. Es benutzt VPN (zur eigenen FritzBox) nur, wenn ich außerhalb eines defineirten Heim-WiFi bin. Wollte es immer auch für mein MacBook Pro realisieren, hab aber noch keine Zeit gehabt.

Zu SplitVPN kann ich leider nichts beitragen.
0
ttwm08.08.2217:16
Normalerweise schalte ich mit bei Problemen zu AS gerne ein. Aber das ist zu spezifisch, als dass ich es bei mir ad hoc reproduzieren bzw. nachstellen könnte. Einzig eine Anmerkung hierzu:
Die Anleitung ist zwar bereits etwas älter aber mir wäre kein Grund bekannt warum diese an sich nicht funktionieren sollte.
Je nachdem, wie alt die Anleitung ist, sind die dort verwendeten AS-Befehle (bzw. der Bezug auf die entsprechenden Dictionarys) überholt. Selbst bei einem System-Update können Scripts, die bei der System-Vorgänger-Version noch funktionierten, plötzlich ins Leere laufen…
D. h. nicht, dass die Funktionalität des Scripts nicht weiterhin möglich ist, evtl. aber mit minimalem/mittlerem/großem Umbauaufwand verbunden.
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.