Automator: Wie Netzwerkvolume mounten?

2nd

2nd

Aktives Mitglied
Thread Starter
Dabei seit
25.07.2004
Beiträge
9.018
Reaktionspunkte
243
Moin,

ich kriege es nicht hin, mit dem Automator ein Netzwerkvolume zu mounten. Die Serveraktionen des Finders machen zwar was, aber mounten das angegebene Volume nicht.

Im Prinzip brauche ich 2 Aktionen:

1. Ein angegebenes Netzwerkvolume muss gemounted werden
2. Danach soll ein Programm gestartet werden

Das Ganze möchte ich als "Programm" im Dock haben, sprich ein Doppelklick und die beiden Schritte werden ausgeführt.

Wer kann helfen?

Danke,

2nd
 
Warum machst Du es nicht mit Applescript und DSW?

Script:
Code:
tell application "Finder"
	open location "afp://user:password@server/share"
end tell

DSW: http://azarhi.com/Projects/DSW/index.php

Grüße,
Flo
 
Ich kann kein Applescript und ich wollte nicht jemanden drum bitten, mir so ein Skript zu schreiben. Danke für Deines!

DSW läßt sich leider nicht downloaden, da ist nichts auf dem Server (das DMG).

Kann man nicht noch oben ins Script 2 Zeilen hinzufügen, dass iTunes gestartet werden soll? Dann brauche ich doch gar kein DSW mehr oder?

2nd
 
Ach so...das mit dem DSW-Download ist seltsam.

Probier es mal mit diesem Script:

Code:
tell application "Finder"
	open location "afp://user:password@server/share"
end tell
delay 5
tell application "iTunes" to activate

delay gibt eine Pause des angegebenen Wertes vor.
Kann man weglassen/verkürzen/verlängern...

Grüße,
Flo
 
https://www.macuser.de/forum/showthread.php?t=162051&highlight=script

Das könnte mit Applescript z.B. so aussehen:
Code:
on run
  tell application "Finder"
    activate
      try
        -- Netzlaufwerk auf dem Server verbinden
        mount volume "smb://Benutzer:Passwort@IP-Adresse-Server/Freigabename1"
      on error
        --Die Verbindung konnte nicht hergestellt werden
      end try
      try
        -- Netzlaufwerk auf dem Server verbinden
        mount volume "smb://Benutzer:Passwort@IP-Adresse-Server/Freigabename2"
      on error
        --Die Verbindung konnte nicht hergestellt werden
      end try

    end tell
end run
 
Super, danke lengsel, das Script probiere ich gleich mal :)

Der Delay ist natürlich ganz gut. Sind das Millisekunden?

Noch eine andere Frage zu Applescript: Ist es möglich, UDP Pakete an eine IP/MAC Adresse zu schicken?

Dann würde ich nämlich noch einen WakeOnLAN an den Anfang mit einbauen. Ich habe hier ein kurzes PHP Script, was genau das macht. Geht das?

2nd
 
2ndreality schrieb:
...Der Delay ist natürlich ganz gut. Sind das Millisekunden?

Nein, das sind ganze Sekunden

2ndreality schrieb:
Noch eine andere Frage zu Applescript: Ist es möglich, UDP Pakete an eine IP/MAC Adresse zu schicken?

Dann würde ich nämlich noch einen WakeOnLAN an den Anfang mit einbauen. Ich habe hier ein kurzes PHP Script, was genau das macht. Geht das?...

Meines Wissens nach geht das nicht direkt, Du kannst aber das PHP-Script wie im Terminal mit "do shell script aufrufen", sieht dann so aus:

Code:
do shell script "php /voller/Pfad/zum/Script.php"

Nicht wundern: Es wird kein Terminalfenster geöffnet, oder anderweitig Meldung gegeben, sondern einfach abgearbeitet.

Danach würde ich aber ne ordentliche delay-Zeit übergeben, bis so ein Rechner mal erwacht ist kann das ja dauern...

Sähe im Ganzen dann ungefähr so aus:

Code:
do shell script "php /voller/Pfad/zum/Script.php"
delay 10
tell application "Finder"
	open location "afp://user:password@server/share"
end tell
delay 5
tell application "iTunes" to activate

Grüße,
Flo
 
Also Mounten und Öffnen fkt. perfekt - danke.

Was mir noch nicht ganz klar ist: Wie wird das PHP-Skript abgearbeitet? Auf dem lokalen Mac OS X Apache inkl. PHP? Der ist bei mir nämlich aus, ich habe XAMP installiert. Oder gibt es einen eigenen Interpreter für Apple Script?

Eher nicht oder?

EDIT: Das funktioniert auch mit dem PHP-Skript :) Mich würde aber trotzdem interessieren, auf welcher Basis die PHP Scripte abgearbeitet werden.

Super, jetzt muss meine Freundin nur einen Klick machen, um Ihr iTunes mit unserem Netzmusiklaufwerk zu öffnen :D

2nd
 
Persönliche Anmerkung: Wenn man nicht nur die Songdateien, sondern auch die Librarydatei(en) auf das andere Volume auslagert (z.B. mit einem Alias), hat man die Gewähr dass iTunes auch nur dann startet (starten kann) wenn das entsprechende Volume auch gemountet ist.

Grüße,
Flo
 
Wenn ich es so machen würde, bräuchte ich gar kein Script, da iTunes 7 mittlerweile alles von alleine mounted, was relevant ist.

Ich habe 2 Tage lang rumprobiert weil ich 3 Rechner auf eine Libary zugreifen lassen wollte. Das geht aber nicht so einfach wegen den parallelen Schreibzugriffen auf die Libary und das XML File.

Auf jeden Fall mounted iTunes 7 beim Start automatisch das Netzwerkvolume auf dem die Libary liegt.

Bei lokalem Libary File und ausgelagerten Mediendaten mounted iTunes die Platte mit der Musik automatisch, wenn man einen Song doppelklickt. Nur Play drücken reicht da nicht.

2nd
 
2ndreality schrieb:
...Was mir noch nicht ganz klar ist: Wie wird das PHP-Skript abgearbeitet?...
EDIT: Das funktioniert auch mit dem PHP-Skript :) Mich würde aber trotzdem interessieren, auf welcher Basis die PHP Scripte abgearbeitet werden...

Durch das "do shell script" wird der nachfolgende String an das System übergeben, als hätte man ihn selbst im Terminal getippt. Das PHP Script wird also vom PHP-Interpreter des Systems abgearbeitet, der ja mit "php /Pfad/zum/script.php" aufgerufen wird. Das hat mit Apache oder Applescript nichts zu tun.

2ndreality schrieb:
Wenn ich es so machen würde, bräuchte ich gar kein Script, da iTunes 7 mittlerweile alles von alleine mounted, was relevant ist.

Ach so. Ich benutze noch eine 6er-Version.

Grüße,
Flo
 
lengsel schrieb:
Durch das "do shell script" wird der nachfolgende String an das System übergeben, als hätte man ihn selbst im Terminal getippt. Das PHP Script wird also vom PHP-Interpreter des Systems abgearbeitet, der ja mit "php /Pfad/zum/script.php" aufgerufen wird. Das hat mit Apache oder Applescript nichts zu tun.

Alles klar! Also do shell script "php ... übergibt das an den eingebauten OS X PHP Interpreter, genausogut könnte man do shell script "perl ... oder was anderes machen.

Das ist gut zu wissen, dann kann man immer mal wieder was als lokale Aufgabe schnell selber tippen... oder ich lerne irgendwann mal AS :D

Eine Bitte hätte ich noch zur Abrundung des Scripts: Läßt sich prüfen, ob ein Volume schon gemounted ist? Das gibt immer eine häßliche Fehlermeldung, wenn das Laufwerk schon da ist.

Also

PHP:
if (!open location "...") open location "..."

oder so ähnlich?

1000Dank,

2nd
 
2ndreality schrieb:
...genausogut könnte man do shell script "perl ... oder was anderes machen.

Ganz genau. ;)

2ndreality schrieb:
Eine Bitte hätte ich noch zur Abrundung des Scripts: Läßt sich prüfen, ob ein Volume schon gemounted ist? Das gibt immer eine häßliche Fehlermeldung, wenn das Laufwerk schon da ist.

Probier es mal so:

Code:
set a to list disks
if a contains "Volumename" then
	display dialog "JA"
else
	display dialog "NEIN"
end if

An Stelle von "display dialog" musst Du halt das bisherige Script einsetzen.

Grüße,
Flo
 
Ok, hab alles.

Hintergrund ist der, dass unsere auf einem Server gelagerte Musik für iTunes automatisch gemounted werden soll und danach iTunes starten soll. Der Server befindet sich im DeepSleep, das Skript weckt den per WakeOnLan (das PHP Script unten) auf.

Arbeitsablauf ist also:

1. Server aufwecken aus dem DeepSleep
2. Das Musiklaufwerk mounten
3. iTunes lokal starten

Hier das ganze Skript:

PHP:
set volumeList to list disks
if volumeList contains "volumeName" then
	tell application "iTunes" to activate
else
	do shell script "php /volumes/volumeName/PfadZumScript.php"
	delay 7
	tell application "Finder"
		try
			open location "afp://login:passwort@ip.des.rechners/volumeName"
		on error
			-- Die Verbindung konnte nicht hergestellt werden
		end try
	end tell
	delay 2
	set volumeList to list disks
	if volumeList contains "volumeName" then
		tell application "iTunes" to activate
	end if
end if

Hier das PHP Skript, was den WoL ausführt und vom Appelscript oben an den PHP-Interpreter übergeben wird. Das Ding muss in eine ganz normale Text-Datei mit Endung ".php":

PHP:
<?
	function wakeonlan($ip, $mac) {
	
		$socket = fsockopen("udp://".$ip, 9, $errno);
		
		if (!$errno) {
			$magicpacket = str_repeat(chr(0xff),6).str_repeat(pack("H*",$mac),16);
			fputs($socket, $magicpacket);
			fclose($socket);
		}
	}
	
	wakeonlan("Ip.des.Zielrechners","MAC-Adresse ohne Doppelpunkte");
?>

Das Applescript kann man als Programm abspeichern, in den Applications Ordner tun und das Icon austauschen, z. B. das iTunes Icon nehmen :D

Vielleicht braucht es jemand...

Danke an lengsel für die AS Hilfe!

2nd
 
hmm blöde frage
kann ich mit applescript auch usb-festplatten aktivieren?
und wenn es schon aktiviert ist die platte deaktivieren?

also den aktivieren/deaktivieren button des festplattendienstprogrammes nachbilden?
 
Problem mit PHP Script

2ndreality schrieb:
Ok, hab alles.

Hintergrund ist der, dass unsere auf einem Server gelagerte Musik für iTunes automatisch gemounted werden soll und danach iTunes starten soll. Der Server befindet sich im DeepSleep, das Skript weckt den per WakeOnLan (das PHP Script unten) auf.

Arbeitsablauf ist also:

1. Server aufwecken aus dem DeepSleep
2. Das Musiklaufwerk mounten
3. iTunes lokal starten

Hier das ganze Skript:

PHP:
set volumeList to list disks
if volumeList contains "volumeName" then
	tell application "iTunes" to activate
else
	do shell script "php /volumes/volumeName/PfadZumScript.php"
	delay 7
	tell application "Finder"
		try
			open location "afp://login:passwort@ip.des.rechners/volumeName"
		on error
			-- Die Verbindung konnte nicht hergestellt werden
		end try
	end tell
	delay 2
	set volumeList to list disks
	if volumeList contains "volumeName" then
		tell application "iTunes" to activate
	end if
end if

Hier das PHP Skript, was den WoL ausführt und vom Appelscript oben an den PHP-Interpreter übergeben wird. Das Ding muss in eine ganz normale Text-Datei mit Endung ".php":

PHP:
<?
	function wakeonlan($ip, $mac) {
	
		$socket = fsockopen("udp://".$ip, 9, $errno);
		
		if (!$errno) {
			$magicpacket = str_repeat(chr(0xff),6).str_repeat(pack("H*",$mac),16);
			fputs($socket, $magicpacket);
			fclose($socket);
		}
	}
	
	wakeonlan("Ip.des.Zielrechners","MAC-Adresse ohne Doppelpunkte");
?>

Das Applescript kann man als Programm abspeichern, in den Applications Ordner tun und das Icon austauschen, z. B. das iTunes Icon nehmen :D

Vielleicht braucht es jemand...

Danke an lengsel für die AS Hilfe!

2nd

Hallo...,
ich hatte genau das gleiche Problem und die Apple Scripts haben sehr geholfen.
Allerdings habe ich das PHP Script noch nicht zum Laufen gekriegt. Ich habe auch keine Ahnung von PHP.
IP und MAC-Adresse habe ich ausgefüllt. Muss ich bei "udp://" und "H*" noch was eintragen?
 
Nein, musst Du nicht. Die Funktion pack(); erstellt einen Binärstring, H* ist bloss ein Parameter. Und "udp://" wird der IP als String vorne angestellt, der Punkt ist ein Verkettungsoperator.

2nd
 
Zurück
Oben Unten