Verbindung zu NAS / LAN oder VPN

LogSeb

Mitglied
Thread Starter
Dabei seit
23.06.2009
Beiträge
56
Reaktionspunkte
4
Hallo zusammen!

Ich möchte gerne über ein Apple-Script eine Verbindung zu Ordnern auf meinem Synology NAS herstellen können und meiner Freundin so das Leben ein bisschen erleichtern. ;)
Hier meine Hardware/Situation:
- Fritzbox 3270 über die DynDNS verwaltet wird
- Synology DiskStation (DS214Play) mit DSM 4.3 über die der VPN-Server läuft
- MacBook Pro mit Mavericks über WLAN mit Fritzbox verbunden

Das Script soll nun folgendes tun:
1.) Prüfe, ob DiskStation über LAN erreichbar ist
2.) Falls ja: Weiter mit Schritt 6.); Falls nicht: Prüfe, ob DiskStation über Internet (mit Hilfe der DDNS) erreichbar ist.
3.) Falls ja: Weiter mit Schritt 5.); Falls nicht: Wecke DiskStation mittels WOL auf und warte 150 Sekunden vor nächstem Schritt.
4.) Prüfe, ob DiskStation jetzt über LAN erreichbar ist. Falls ja: Weiter mit Schritt 6.); Falls nicht: Weiter mit Schritt 5.)
5.) Stelle VPN-Verbindung zu DiskStation her.
6.) Verbinde Laufwerk smb://DiskStation/A
Ich habe mir aus dem Internet bisher ein bisschen was zusammengegooglet und bin bis hier gekommen:

Code:
try
	do shell script "ping -c 1 -t 1 [B]DiskStation(local)[/B]"
on error
	try
		do shell script "ping -c 1 -t 1 [B]DDNS.dyndns.org[/B]"
on error
		do shell script "/usr/local/bin/awake -b 192.168.0.255 [B]MAC-Adresse der DiskStation[/B]"
		delay 150
	end try
[B]Irgendwo hier müsste noch Schritt 4 eingebaut werden[/B]
		end try
try	
	tell application "System Events"
		tell current location of network preferences
			set VPNservice to service "Synology"
			connect VPNservice
		end tell
	end tell
	delay 10
end try
try
	mount volume "smb://DiskStation/Home"
end try

Meine Probleme:
1.) Falls DiskStation in Schritt 1 nicht verfügbar ist, wird ja nun zur VPN-Variante übergegangen. Allerdings wäre die DiskStation ja auch nicht verfügbar, wenn ich zwar zu hause im WLAN wäre, die DS aber ausgeschaltet wäre. -> WOL müsste ausgeführt werden mit anschließender Wartezeit von ca. 150 Sekunden vor dem Verbinden der Laufwerke, um der DS genug Zeit zum booten zu geben.

2.) Die DDNS in Schritt 2 ist immer verfügbar, da sie ja über die Fritzbox verwaltet wird. Ich bekomme es aber nicht hin, die DiskStation hinter meiner Fritzbox direkt anzupingen (laut Google ist das auch nicht möglich), um so zu prüfen, ob sie eingeschaltet ist und WOL nötig ist.

Beim Ausführen der VPN-Verbindung würde die DS übrigens auch automatisch über WOL geweckt. Leider kann ich dort keine Wartezeit zwischen Aufwecken und Herstellen der VPN-Verbindung vorgeben. Zeile 6 in meinem Script-Entwurf ist also, je nach Situation, ggf. überflüssig.

Ich habe leider an sich keine Ahnung vom Apple-Scripteditor. Ich kann lediglich einigermaßen googlen. ;)

Ich hoffe, dass einer von euch vllt. ein paar Ideen hat, wie ich meine Vorstellungen umsetzen kann.

Vielen Dank schon einmal für eure Hilfe!
 
Ich verstehe gerade nicht wieso du den Synology per WOL aktivieren möchtest? Laß sie doch im Standby. Dann haste den WOL Stress nicht.
Und zum anmelden beim Starten des Macbooks, reicht es ja den NAS in die Anmeldeobjekte des Nutzers zu ziehen per Drag & Drop vom Finder aus.
Desweiteren würd ich dir AFP empfehlen, hat bei mir mehr Speed als über SMB.
 
Hier habe ich mal beschrieben, wie man feststellt, in welchem Netzwerk man sich befindet: klick. Dein Skript könnte also folgendermaßen aussehen:

Code:
if (Netzwerkname != Zuhause) then
     connect VPN
end if
[COLOR=#000000]try
[/COLOR]     ping diskStation
on error
     awake disk station
end try
mount volume
 
Vielen Dank erst einmal für eure Hilfe!

@LXD: Das NAS fährt halt nachts runter, da ich es dann nicht brauche. Oft bleibt es auch ein paar Tage ausgeschaltet. Da muss es nicht unbedingt im Standby laufen. WOL ist ja an sich auch nicht das Problem. Mein Problem ist eher, dass das Script nicht weiß, ob die DS eingeschaltet ist und ob das Macbook gerade zu hause ist. Aber da kommt ja Pills Ansatz ins Spiel. Was SMB vs. AFP betrifft: Soweit ich weiß, unterstützt Mavericks jetzt SMB2. Diese Verbindung soll definitiv schneller sein als AFP. Bei mir läuft die SMB-Verbindung auch schneller als AFP.

@Pill: So etwas hatte ich mir auch schon gedacht. Leider bekomme ich dein Script nicht auf meine Verhältnisse umgeschrieben. (Wie gesagt: Ich kenne mich mit diesen Scripts nicht wirklich aus.) Ich habe hier mal etwas weiter zusammenkopiert. Bitte nicht für die unzähligen Syntax-Fehler schlagen. ;)

Code:
set currentSSID to do shell script "airport --getinfo | grep -w 'SSID' | sed s/' *SSID: '//"

if currentSSID is [B]NOT[/B] in {"FRITZ!Box 3270"} then                                 [B](NOT hier möglich?)[/B]
    try
		tell application "System Events"
		tell current location of network preferences
			set VPNservice to service "Synology"
			connect VPNservice
		end tell
	end tell
	delay 10

[B]Falls VPN-Verbindung nicht klappt, nach 150 Sekunden erneuten Verbindungsversuch starten[/B]           

[B](Problem: Fehlermeldungen werden auf Bildschirm ausgegeben, wenn VPN beim ersten Versuch nicht klappt. Es wäre super, wenn 
man vorher irgendwie testen könnte, ob die DS eingeschaltet ist. Problem 2: Ping über Internet an Gerät hinter einem Router scheint 
ja nicht zu gehen. Gibt es da Alternativen?)[/B]

end try

try 
	mount volume "smb://DiskStation/Home"
end try
	
else	
	do shell script "ping -c 1 -t 1 DiskStation"
	
on error
	try
		do shell script "/usr/local/bin/awake -b 192.168.0.255 [I]MAC-Adresse der DS[/I]"
		
		delay 150
	end try	

	try
		mount volume "smb://DiskStation/Home"
	end try		

end if

Vielen Dank für eure Tipps!

Beste Grüße

Sebastian
 
Wenn du diese SSID nutzt wird das script bei der Hälfte deiner Freunde um WLAN denken es ist zu Hause.
"Ping über internet an Gerät hinter router"? Was hast du vor?Eigentlich gibt es doch nur zwei Netzwerkfälle für dich: "zu haus" und "nicht zu hause". dann noch die Fälle "NAS schläft", "NAS wach"also in Pseudocode:
Code:
function wakeNAS()
{
    date = now()
    while ((NASisSleeping) or (now()-date < 5min)){
        WOL(NAS)
    }
}
if (zuhause not true){
    startVPN
}
wakeNAS
mountShares

Ein würde ich der Einfachheit immer schicken. Läuft das NAS schadet es nicht, schläft es wird es eingeschaltet.
 
Zurück
Oben Unten