1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

AS um Backup von Ordner auf Sambaserver zu erstellen

Dieses Thema im Forum "AppleScript" wurde erstellt von Rosi-janni, 06.06.09.

  1. Rosi-janni

    Rosi-janni Rheinischer Winterrambour

    Dabei seit:
    27.02.07
    Beiträge:
    926
    Hallo Leute,

    ich habe mich mal dran gesetzt und versucht ein AppleScript zu schreiben, welches mir ein Backup vom Dokumente Ordner (mal als Beispiel) auf dem Server erstellt.
    Also:

    Ich möchte z.B. von jedem Clientuser, wenn er angemeldet ist, dass ein Script ausgeführt wird, was in einer Endlosschleife von 10min oder so den Ordner (Bsp.) Dokumente auf den Server kopiert. Dazu soll er sich erst auf dem Server anmelden und wenn das fehlschlägt, soll er das Fenster (Nur als Info) einblenden und dann soll er der Fehler loggen in einer Log_Datei und kA evtl später dann auch eine Mail an mich senden oder so mal gucken und trotzdem weiter hin versuchen die Verbindung auf zu baun, dann aber bei weiteren Fehlern KEIN Fenster mehr einblendet, nur wenn das Backup dann nach einem Fehler doch noch ausgeführt werden konnte.

    So und er soll, wenn der Server nicht erreich bar ist mir nicht anzeigen: Fehler -36 oder so, sondern das so hinnehmen und in einer Log sichern und dann halt weiter machen und das Fenster einblenden.
    Nur geht das alles einfach nicht, er zeigt mir immer an: Fehler -36 oder sowas wie "Typ Bolean kann nicht umgewandelt werden in File "Gemeinsam" oder so was.
    Auch habe ich versucht, das Fenster einfach mal in einem externen Script einblenden zu lassen, was auch nicht ging.
    "Angegebene Taste existiert nicht."

    Schaut Euch einfach mal den Quellcode an:
    Code:
    -- Unter Event Logfile sichern
    -- If Anweisung
    -- Sambavolume mounten
    if mount volume "smb://192.168.2.105/DokumenteNUTZERNAME" as user name "NUTZERNAME" with password "PASSWORT" then
    	close
    	-- Hier soll er eigenelich loggen, dass ein Fehler aufrat	
    	log
    	error "/Macintosh HD:Users:NUTZERNAME:Desktop:Test.rtf"
    	-- Fehlermeldung wird eingeblendet, wenn die Verbindung fehlschlug.
    	display dialog "Verbindung zum Sambaserver konnte nicht hergestellt werden! Sie können jetzt leider nicht auf Ihre Dateien auf dem Server zugreifen. Es werden trotzdem weiterhin Zugriffsversuche gestartet. Sie werden informiert, sobald die Verbindung besteht und sie wieder auf Ihre Dateien zugreiffen können. Surfen im Web wird natürlich weiterhin möglich sein." buttons ¬
    		{"Ok und weitere Verbindungen versuchen auf zubauen"} with title "Sambaserver nicht erreichbar!!" default button 3 with icon stop
    end if
    end
    set DlogResult to result
    -- Hier endet die erste If Anweisung, und die des Display Dialogs beginnt.
    if button returned of result = "Ok und weitere Verbindungen versuchen auf zubaueneren" then
    	-- Hier versucht er wieder eine Verbindung herzustellen 
    	repeat until mount volume "smb://192.168.2.105/DokumenteNUTZERNAME" as user name "NUTZERNAME" with password "PASSWORT"
    	end repeat
    	-- Variablen setzten
    	set Ordner_Client to "Macintosh HD:Users:JaGaller:Sites"
    	set Ordner_Server to "smb://192.168.2.105/DokumenteNUTZERNAME"
    	set folderlist to list folder alias Ordner_Client
    	-- Jetzt beginnt das Sichern
    	repeat with x in folderlist
    		if x does not start with "." then
    			tell application "Finder"
    				try
    					move document file (Ordner_Client & x as alias) to folder (Ordner_Server as alias)
    				on error
    					log of "/Macintosh HD:Users:NUTZERNAME:Desktop:Test.rtf"
    				end try
    			end tell
    		end if
    	end repeat
    end if
    
    Wenn Ihr noch Infos braucht, melden!
    Habe MacBook und PowerBook. Und das sind beides Clients.


    Liebe Grüße,
    Jan!

    EDIT:
    Habe das Script (angefangen) in Teile zu zerlegen und sei mal so zu testen:
    Teil 1- Mounten (Passwort liegt in Keychains)
    Code:
    tell application "Finder"
    	mount volume "smb://karolin@192.168.2.105/Dokumente1"
    end tell
    
    Teil 2- Loggen bei Fehler
    Den Teil habe ich noch nicht
    Teil 3- Fenster einblenden
    Code:
    display dialog "Verbindung zum Sambaserver konnte nicht hergestellt werden! Sie können jetzt leider nicht auf Ihre Dateien auf dem Server zugreifen. Es werden trotzdem weiterhin Zugriffsversuche gestartet. Sie werden informiert, sobald die Verbindung besteht und sie wieder auf Ihre Dateien zugreiffen können. Surfen im Web wird natürlich weiterhin möglich sein." buttons ¬
    	{"Weiter versuchen", "Nur im Web surfen", "Abbrechen"} with title "Sambaserver nicht erreichbar!!" default button 3 with icon stop
    set DlogResult to result
    if button returned of result = "Verbindung weiter versuchen aufzubauen" then
    	tell application "Finder"
    		mount volume "smb://karolin@192.168.2.105/Dokumente1"
    	end tell
    else if button returned of result = "Nur im Web surfen" then
    	close
    end if
    
    Teil 4- Weiter verbinden
    Habe ich auch noch nicht
    Teil 5- Sichern (Mit Server)
    Code:
    set Ordner_Client to "Macintosh HD:Users:Karolin:Dokumente"
    set Ordner_Server to "smb://192.168.2.105/Dokumente/Karolin"
    set folderlist to list folder alias Ordner_Client
    -- Jetzt beginnt das Sichern
    repeat with x in folderlist
    	if x does not start with "." then
    		tell application "Finder"
    			try
    				move document file (Ordner_Client & x as alias) to folder (Ordner_Server as alias)
    			end try
    		end tell
    	end if
    end repeat
    
    
    Teil 5-B Sichern/Verschieben lokal
    Code:
    set Ordner_Client to "Macintosh HD:Users:JaGaller:Sites" as alias
    set Ordner_Server to "Macintosh HD:Users:JaGaller:Documents" as alias
    set folderlist to list folder alias Ordner_Client
    repeat with x in folderlist
    	if x does not start with "." then
    		tell application "Finder"
    			try
    				move document file (Ordner_Client & x as alias) to folder (Ordner_Server as alias)
    			end try
    		end tell
    	end if
    end repeat
    
    Geht leider nicht, denn dann kommt:
    Code:
    alias (alias "Macintosh HD:Users:JaGaller:Sites:") kann nicht in Typ file umgewandelt werden.
    
    EDIT 3:
    So jetzt habe ich alles noch mal etwas geändert und zusammen geführt.
    Also als erstes habe ich ein AS mit dem Quellcode:
    Code:
    on log_event(themessage)
    	set theLine to (do shell script ¬
    		"date  +'%Y-%m-%d %H:%M:%S'" as string) ¬
    		& " " & themessage
    	do shell script "echo " & theLine & ¬
    		" >> ~/Library/Logs/AppleScript-events.log"
    end log_event
    in ~/Library/Scripts folder/log.scpt gelegt und jetzt sieht das AS so aus:
    Code:
    set commonScript to load script alias ¬
    	((path to library folder from user domain as string) ¬
    		& "Scripts floder:Log.scpt")
    tell application "Finder"
    	mount volume "smb://karolin@192.168.2.105/Dokumente1"
    end tell
    false
    display dialog "Verbindung zum Sambaserver konnte nicht hergestellt werden! Sie können jetzt leider nicht auf Ihre Dateien auf dem Server zugreifen. Es werden trotzdem weiterhin Zugriffsversuche gestartet. Sie werden informiert, sobald die Verbindung besteht und sie wieder auf Ihre Dateien zugreiffen können. Surfen im Web wird natürlich weiterhin möglich sein." buttons ¬
    	{"Weiter versuchen", "Nur im Web surfen", "Abbrechen"} with title "Sambaserver nicht erreichbar!!" default button 3 with icon stop
    set DlogResult to result
    if button returned of result = "Weiter versuchen" then
    	try
    		repeat until mount volume "smb://karolin@192.168.2.105/Dokumente1"
    		end repeat
    		log_event("Put your string here") of commonScript
    	end try
    else
    	if button returned of result = "Nur im Web surfen" then
    		close
    	end if
    end if
    ABER:
    Jetzt sagt er, die Datei ~/Library/Scripts folder/Log.scpt würde nicht existieren?! Und das tut sie aber!
    Und ausserdem was muss ich bei:
    Code:
    log_event("[B][U][COLOR="Magenta"]Put your string here"[/COLOR][/U][/B]) of commonScript
    einsetzen??
    Quelle: Klick mich
     
    #1 Rosi-janni, 06.06.09
    Zuletzt bearbeitet: 06.06.09

Diese Seite empfehlen