• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Der Frühling ist auch in den eingesandten Fotos deutlich zu erkennen. Zeigt uns, wer Euer Favorit ist! hier geht es lang für Euer Voting --> Klick

Netzwerkplatten mounten

Registriert
11.08.10
Beiträge
50
Ich weiß, dass es zu diesem Thema wahrscheinlich schon hunderte Themen gibt, zig Seiten im Netz, die das Theman aufgreifen, aber bisher hab' ich noch keine für mich wirklich passende Lösung gefunden (vielleicht gibt es keine?).

Das Problem ist folgendes:

Ein Kunde von mir hat ein MacMini Server im Einsatz. Als Backuplösung läuft Pressstore Backup. Zum sichern haben wir zwei Netzwerkplatten im Einsatz, welche täglich getauscht werden.
Momentan ist der Workaround, dass die Platte angeschlossen wird und anschließend die Platte über ein Skript gemountet wird, das Backup startet dann zur vorgegebenen Zeit. Am nächsten Tag dann das Gleiche Spiel mit der zweiten Platte.

Ich hätte halt gerne ein Skript, welches, sobald die Platte ans Netz angeschlossen wird, dieses evtl. die Platte einschaltet (falls möglich) und anschließend solange ein Ping absetzt, bis die Platte gefunden wird um diese dann anschließend zu mounten.

Im Netz hab' ich irgendwo das folgende Skript gefunden. Das ist auch wie ich finde schon recht mächtig, aber es befridigt mich dann doch nicht so ganz.

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 "IP"
set volList to {"Share"}
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 -t 3 " & ServerIP
        if t contains "0% packet loss" then
            return true
        else
            return false
        end if
    on error
        return false
    end try
end checkServer
Was ich mich jetzt frage, gibt es für die Abfrage des Pings evtl. eine bessere Lösung, weil er vergleicht ja nach dem Absetzen nur den Text, ob er mit der Ausgabe übereinstimmt.

Code:
set t to do shell script "ping -c 1 -t 3 " & ServerIP
        if t contains "0% packet loss" then
Aber sobald ja einmal ein Paket nicht ankommt, läuft das Ding ja schon ins Leere.

Eine andere Frage wäre, gibt es die Möglichkeit, falls die Platte WakeOnLan oder Ähnliches unterstützt, diese mit einem Skriptbefehl einzuschalten?

Ich hoffe ihr könnt mir helfen
Grüße Shadow
 

toc-rox

Weigelts Zinszahler (Rotfranch)
Registriert
15.11.09
Beiträge
247
Frage: Gesucht wird eine permanent laufende (Hintergrund-)Anwendung mit folgenden Eigenschaften:
- Erkennung: Wurde (neue) Platte angeschlossen?
- Erkennung: Ist (neue) Platte eingeschaltet?
- Aktion: Wenn beide Vorbedingungen erfüllt sind: Platte mounten
 
Registriert
11.08.10
Beiträge
50
Ungefähr:

Platte ist angesteckt, braucht nicht überprüft zu werden.
-Erkennung: Ist Platte eingeschaltet?
-Wenn nicht, Platte einschalten
-Aktion: Wenn Platte an: mounten
 

toc-rox

Weigelts Zinszahler (Rotfranch)
Registriert
15.11.09
Beiträge
247
Für die Durchführung der Teilaufgaben wäre als nächstes "das wie" zu klären:
-Erkennung: Ist Platte eingeschaltet?
-Wenn nicht, Platte einschalten
-Aktion: Wenn Platte an: mounten
Ich würde erwarten, dass es hierfür entsprechende Utilities gibt die parameterisiert aufgerufen werden können.