• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

AS um Backup von Ordner auf Sambaserver zu erstellen

  • Ersteller Mitglied 26876
  • Erstellt am

Mitglied 26876

Gast
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://[email protected]/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://[email protected]/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://[email protected]/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://[email protected]/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
 
Zuletzt bearbeitet von einem Moderator: