Startskript - Laufwerk Mounten

microsun

Aktives Mitglied
Thread Starter
Dabei seit
27.06.2009
Beiträge
793
Reaktionspunkte
5
Hallo Zusammen,

habe noch nie auf dem Mac ein Skript geschrieben. Könnt ihr mir bitte helfen?

Folgende Aufgabe:

Beim anmelden von Benutzer 'Meier' soll das Skript ausgeführt werden.

Ping an 'server'
Falls Antwort weiter, wenn nicht springe zu ende
mount server/freigabe
ende
 
Ein komplettes Applescript kann ich Dir jetzt auf die Schnelle nicht bieten. Aber die Abfrage, ob ein Server online ist, habe ich die Tage (zugegeben auf die Schnelle) mal so gelöst. Es gibt bestimmt eine elegantere Methode.
Code:
set IPVDR to "192.168.0.7"
set MACVDR to "XX:XX:XX:XX:XX:XX"

set vdr_running to (do shell script "ping -t1 -c1 " & IPVDR & " | grep transmitted | cut -d , -f3")
if vdr_running = " 100.0% packet loss" then
	do shell script "/usr/bin/wakeonlan " & MACVDR
	display dialog "Der VDR ist ausgeschaltet und wird gestartet." buttons {"OK"} default button 1
end if

EDIT: Schau mal hier: http://hohabadu.de/?APPLESCRIPT/Erkl%E4rende-Scripts/Netzwerk-Laufwerke-%2F-Volumes-mounten

Gruß
 
  • Gefällt mir
Reaktionen: microsun
Ach so, das Applescript legst Du einfach unter dem Benutzer als Startobjekt fest. Dann wird es ausgeführt, sobald der Benutzer sich einlogged.
 
  • Gefällt mir
Reaktionen: microsun
Hallo,

die Lösung von BirdOfPrey sieht etwas kompliziert aus. Gitbs eine elegantere Lösung?
 
Ein komplettes Applescript kann ich Dir jetzt auf die Schnelle nicht bieten. Aber die Abfrage, ob ein Server online ist, habe ich die Tage (zugegeben auf die Schnelle) mal so gelöst. Es gibt bestimmt eine elegantere Methode.
Code:
set IPVDR to "192.168.0.7"
set MACVDR to "XX:XX:XX:XX:XX:XX"

set vdr_running to (do shell script "ping -t1 -c1 " & IPVDR & " | grep transmitted | cut -d , -f3")
if vdr_running = " 100.0% packet loss" then
	do shell script "/usr/bin/wakeonlan " & MACVDR
	display dialog "Der VDR ist ausgeschaltet und wird gestartet." buttons {"OK"} default button 1
end if

EDIT: Schau mal hier: http://hohabadu.de/?APPLESCRIPT/Erkl%E4rende-Scripts/Netzwerk-Laufwerke-%2F-Volumes-mounten

Gruß

Wie kann ich einen Sprung nach der negativen If-Abfrage machen?

Kannst Du bitte die Befehle in der Zeile aufschlüsseln?
set vdr_running to (do shell script "ping -t1 -c1 " & IPVDR & " | grep transmitted | cut -d , -f3")
 
Hallo,

Platte einmal mounten.

Usereinstellung öffnen
Startobjekte wählen
Icon der gemounteten Platte dorthin ziehen.

Fertig.

Dafür ist kein Script notwendig. Klappt mit meiner Internetplatte von Strato bestens.
 
Das ist easy.

Das mit dem Pink habe ich weggelassen, stattdessen habe ich ein dry eingefügt, d.h. wenns nicht klappt. kriegste auch keine Fehlermeldung..

try
mount volume "XXX"
end try


Das musst du Alls Programm speichern. und dann in die Start Objekte bringen (systemeinstellungen....)

bei XXX musst du di IP eingeben...

Viele Grüße,+
bluedisc
 
Hallo,

Platte einmal mounten.

Usereinstellung öffnen
Startobjekte wählen
Icon der gemounteten Platte dorthin ziehen.

Fertig.

Dafür ist kein Script notwendig. Klappt mit meiner Internetplatte von Strato bestens.

Ich habe mehrere Startobjekte, wenn jetzt der 'Server/Freigabe' nicht zu erreichen ist, wird eine zeitlang versucht das Laufwerk zu Mounten. Das dauert 1-2 Minuten. In dieser Zeit sind die anderen Startbefehle in der Warteschleife.

Abgesehen davon bekomme ich immer eine Fehlermeldung wenn das Laufwerk nicht zu erreichen ist.

Deswegen die If-Abfrage mit Sprung!
 
Geht auch quick & dirty.
Allerdings alles ohne Überprüfung ob der Server oder die Freigabe existiert.

Code:
mount volume "afp://benutzername:PASSWORT@IPADRESSEDESSERVERERS/FREIGABE"

//doger
 
Ich habe mehrere Startobjekte, wenn jetzt der 'Server/Freigabe' nicht zu erreichen ist, wird eine zeitlang versucht das Laufwerk zu Mounten. Das dauert 1-2 Minuten. In dieser Zeit sind die anderen Startbefehle in der Warteschleife.

Abgesehen davon bekomme ich immer eine Fehlermeldung wenn das Laufwerk nicht zu erreichen ist.

Deswegen die If-Abfrage mit Sprung!

Hallo,

das stimmt natürlich.

Alternative: Du legst einen Alias zu dem Mount auf den Desktop. Dann nach dem booten einmal klicken und gut ist.
 
Das ist easy.

Das mit dem Pink habe ich weggelassen, stattdessen habe ich ein dry eingefügt, d.h. wenns nicht klappt. kriegste auch keine Fehlermeldung..

try
mount volume "XXX"
end try


Das musst du Alls Programm speichern. und dann in die Start Objekte bringen (systemeinstellungen....)

bei XXX musst du di IP eingeben...

Viele Grüße,+
bluedisc

Danke, genau das wollte ich.

Kennst Du ein 'gute' Seite oder Buch über Apple Skript?
 
So ganz verstehe ich das Problem jetzt nicht? Mein Link oben zeigt doch auf ein fertiges Skript!? Wo genau liegt dann dort das Problem?
 
So ganz verstehe ich das Problem jetzt nicht? Mein Link oben zeigt doch auf ein fertiges Skript!? Wo genau liegt dann dort das Problem?

Er möchte erst testen, ob der Server verfügbar ist, da sonst der Mac 1-2 Minuten hängt.
 
Ja, und was denkst Du, was im oben verinkten Script die "checkServer" Sub-Routine macht? Das Script testet doch erst, ob der Server erreichbar ist. Wenn er es ist, wird gemountet, wenn nicht, kommt eine entsprechende Meldung. Diese Meldung kann man natürlich auch einfach weg lassen, wenn sie stört.
EDIT: Dafür einfach die Zeilen
Code:
else
   activate
   display dialog "Server \"" & serv & "\" isn't available at this moment!" with icon stop giving up after 20
löschen.
/EDIT

http://hohabadu.de/?APPLESCRIPT/Erkl%E4rende-Scripts/Netzwerk-Laufwerke-%2F-Volumes-mounten
Code:
property usrn : "" --< do NOT pick in your username here!
property pswd : "" --< do NOT pick in your password here!

(* Just save this script as application. Within first script-start you will be asked
for username & password and it will be stored as property in the script-app for the future.
But please customize the vars "serv" and "volList" in the next two paragraphs,
that's all to do in Script Editor. *)

set serv to "192.0.0.0"
set volList to {"Voume1", "Volume2", "Volume3"}
set firstMount to true

-- ::::::::::::::::::::::::::::::::::::::::  hohabadu.de  ::::::::::::::::::::::::::::::::::::::::

(*   © by H =:o) L G I  (alias Holger Hansen)
Ich würde mich freuen, wenn bei Verwendung des Codes oder Teilen davon
diese Zeilen erhalten bleiben, zumindest aber die Zeile m. d. Hinweis auf die Website *)


-- username & password configuration
if usrn is "" and pswd is "" then
   set usrn to text returned of (display dialog "Username for Server \"" & serv & "\":" default answer "username")
   set pswd to text returned of (display dialog "Password for Server \"" & serv & "\":" default answer "password" with hidden answer)
end if


-- mounting volumes, if necessary and the Server is available

-- check, if the server is available
if my checkServer(serv) then
   repeat with vol in volList
      -- check, if volume isn't already mounted
      if vol is not in (list disks) then
         -- check, if that's the first attempt to mount a volume of the server
         if firstMount then
            try
               mount volume "afp://" & usrn & ":" & pswd & "@" & serv & "/" & vol
            on error
               mount volume "afp://" & serv & "/" & vol
            end try
         else
            mount volume "afp://" & serv & "/" & vol
         end if
      end if
      set firstMount to false
   end repeat
else
   activate
   display dialog "Server \"" & serv & "\" isn't available at this moment!" with icon stop giving up after 20
end if


on checkServer(ServerIP)
   try
      set t to do shell script "ping -c 1 " & ServerIP
      if t contains "0% packet loss" then
         return true
      else
         return false
      end if
   on error
      return false
   end try
end checkServer

Man muss oben natürlich noch die IP angeben:
set serv to "192.0.0.0"

Und die zu mountenden Freigaben:
set volList to {"Voume1", "Volume2", "Volume3"}

Wobei "Volume1" bis "Volume3" für die Freigabenamen stehen.
 
Zuletzt bearbeitet:
Hi,

ich hatte mich mit dem Thema auch mal zwangsweise etwas beschäftigt.

An sich benutze ich den gleichen Script. Die einzige Änderung die ich da gemacht habe war die Zeile mit
"set t to do shell script "ping -c 1 " & ServerIP"

Zumindest auf meinem System direkt wenn sich ein User anmeldet ist ping nicht zu finden, da es im sbin liegt und erst wenn scheinbar die "komplette" Umgebung aufgebaut wird ist dann ping "direkt" gefunden
 
Ich würde trotzdem das genannte Skript verwenden. Denn der Dreizeiler ist zwar kurz, aber imho nicht gut. Die "lange" Version erledigt die Aufgabe nämlich vermutlich schneller, wenn der Server nicht erreichbar ist.
Und ob Du jetzt drei oder dreissig Zeilen in den Applescript Editor kopierst ...
 
Ich würde trotzdem das genannte Skript verwenden. Denn der Dreizeiler ist zwar kurz, aber imho nicht gut. Die "lange" Version erledigt die Aufgabe nämlich vermutlich schneller, wenn der Server nicht erreichbar ist.
Und ob Du jetzt drei oder dreissig Zeilen in den Applescript Editor kopierst ...

Werde es Probieren. Schnell ist das andere auch bekomme aber schnell eine Fehlermeldung.

EDIT: Mochte auf eine Windows Freigabe zugreifen. Dann muss ich 'smb' schreiben oder?
 
Zurück
Oben Unten