• 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

appleskript - Mail - automatisch

martino15

Idared
Registriert
04.12.06
Beiträge
24
Hallo,

ich möchte gerne ein ein Apple-Skript erstellen, das Mail dazu bringt, eine Datei aus einem Verzeichnis zu versenden.
Hintergrund ist ist eine automatisierte Backup-Funktion. Ich erstelle täglich automatisch eine neue Sicherungskopie meiner mySql-DB. Klappt wunderbar. Jetzt möchte ich mail dazu bringen, die aktuellste Sicherung im Verzeichnis zu an einen mail-Empfänger zu senden.

Mir fehlen leider etwas die Ansätze dazu. Hat jemand eine Idee?

Gruss Martin
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Worauf läuft denn der mySQL Server? Grundsätzlich ist es unsinnig sowas mit einem Mail Client zu verschicken. Deutlich besser wäre mail(1) oder curl(1) oder rsync(1) mit einem kleinen Shellskript diese Arbeit verrichten zu lassen. Auf einem Server hat eine GUI Applikation nichts verloren.
Gruß Pepi
 

martino15

Idared
Registriert
04.12.06
Beiträge
24
Worauf läuft denn der mySQL Server? Grundsätzlich ist es unsinnig sowas mit einem Mail Client zu verschicken. Deutlich besser wäre mail(1) oder curl(1) oder rsync(1) mit einem kleinen Shellskript diese Arbeit verrichten zu lassen. Auf einem Server hat eine GUI Applikation nichts verloren.
Gruß Pepi

Hallo Pepi,

ich habe mich vielleicht nicht klar genug ausgedrückt. Die mySQL-DB befindet sich auf einem normalen iMac (nicht mehr ganz neu mit MAC OS 10.3.9), nicht auf einem separaten Server, zusammen mit allen anderen Anwendungen.
Professioneller muß es auch nicht sein. Aber trotzdem handelt es sich bei den Daten um geschäftskritische Dinge, die täglich gesichert werden müssen.

Gruss Martin
 

odins

Finkenwerder Herbstprinz
Registriert
19.12.05
Beiträge
470
hmm, dazu fällt mit ordneraktion bzw. automator ein
 

Andy001

Gast
also ich hab nicht ganz verstanden was du sichern willst. eine e-mail einfach versenden oder ein ganzes verzeichniss abspeichern?
am einfachsen öffnest du den skript editor und gehst unter "Ablage" - "Funktionsverzeichniss öffnen" und klickst Mail an vllt findest du was.

mfg andy
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
In der Shell bzw. in einem Crontab kann man das recht bequem und automatisiert lösen.

Damit bekommst Du einen Dump Deiner Datenbank in eine (komprimierte) Datei an einem Ort Deiner Wahl. Was Du nachher mit der Datei machst ist ein anderes Thema.
Code:
$ [b]mysqldump --add-drop-table --host=[i]mysqlhostserver[/i] --user=[i]mysqlusername[/i] --password=[i]meinSuperGeheimesPasswort[/i] [i]databasename[/i] | bzip2 -c9 > [i]/pfad/zur/Datei/[/i]Meine_wichtige_Datenbank_$(date "+%F_%H-%M-%S").sql.bz2[/b]
Bitte zu beachten, daß das Passwort für den Benutzer der auf diese Datenbank zugreifen darf hier im Klartext eingetragen wird! Dies ist grundsätzlich eine unsichere Vorgehensweise, ist aber für Dich mit Deinem Setup wohl eine ausreichende Lösung.
Du bekommst dann für jeden Aufruf des Kommandos eine Datei deren Name ungefähr aussieht wie Meine_wichtige_Datenbank_2007-05-05_13-26-01.sql.bz2.

An das bisherige Command kann man beispielsweise einfach noch ein curl -T anhängen um die Datei per http oder ftp auf einen anderen Rechner zu senden. (Ein simpler FTP Server wie ihn Mac OS X zur Verfügung stellt reicht bereits.)
Alternativ auf beliebig viele angeschlossene Volumes kopieren. (zB mit cp, oder rsync) Ob Du so Deinen Dump auch mittels mail -s "Datenbank Dump" [email protected] versenden kannst kann ich Dir nicht sagen da dazu der Mailserver (postfix) auf dem Serverrechner konfiguriert sein müßte. Daher mein Vorschlag das per ftp/rsync/scp auf einen anderen Rechner zu laden.

Ich würde, wie schon erwähnt, dringend zu einer Lösung raten die ohne GUI Applikationen auskommt. Nur so ist gewährleistet, daß alles trotzdem ablaufen kann auch wenn zB mal der Benutzer dort nicht angemeldet ist. (Oder ein anderer, dessen Mailprogramm nicht konfiguriert ist und so weiter...)
Gruß Pepi

PS: Grundsätzlich solltest Du Dich auch im Zusammenhang mit dem Backup darüber informieren wie Du es im Bedarfsfalle wieder einspielen kannst!
 

martino15

Idared
Registriert
04.12.06
Beiträge
24
also ich hab nicht ganz verstanden was du sichern willst. eine e-mail einfach versenden oder ein ganzes verzeichniss abspeichern?
am einfachsen öffnest du den skript editor und gehst unter "Ablage" - "Funktionsverzeichniss öffnen" und klickst Mail an vllt findest du was.

mfg andy

Danke Andy,
ich schau mal in den Verzeichnissen, die du genannt hast.
Ich versuche jetzt nochmal zu erklären, was ich eigentlich will. Die mySQL-DB speichert Daten einer kleinen Ladenanwendung mit einem vergleichsweise geringen Datenmenge (< 1 MB), die aber trotzdem geschäftskritisch ist, und täglich auf einem externen Medium gesichert werden sollte. Anwendung und Datenbank befinden sich auf demselben Rechner. Ich habe mit dem Tool MySQLAdministrator eine tägliche Sicherung der Datenbank (ergibt ein File mit jeweils neuem Timestamp) eingerichtet. Das klappt auch wunderbar.
Mein Ziel ist nun, genau die jeweils neu erzeugte Datei zu sichern. Eine Lösung mit Streamer u.ä. erscheint mir etwas überdimensioniert, und das tägliche Brennen einer CD ist auf die Dauer etwas zeitaufwändig und irgendwie auch Quatsch, da einem dann nur die CD's um die Ohren fliegen.
Daher meine Idee, die Sicherungsdatei an einen anderen Computer (auch einen Mac)zu mailen, und dort zu archivieren. Problem ist nun, die jeweils aktuelle Datei zu identifizieren und Mail dazu zu bringen, diese Datei zu einem bestimmten Zeitpunkt zu versenden.
Klar genug?
Grüsse Martin
 

martino15

Idared
Registriert
04.12.06
Beiträge
24
Hallo Pepi,

ok, jetzt komme ich der Lösung zumindest gedanklich näher.
Den Crown-Job zum Dumpen der Datenbank habe ich per mySQLAdministrator eingerichtet. Der Backup klappt auch. Kannst du das Versenden per FTP/HTTP vielleicht noch etwas präzisieren. Dann hätte ich alles zusammen!

Danke und Grüsse nach Wien!
Martin
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
curl -T ist alles was Du brauchst, siehe man curl. Für simples lokales kopieren auf ein eigenes Volume (auch gut, hilft im Brandfall aber meist wenig) genügt unter 10.4 ein simples cp. (Wobei das Dump File sicher nicht anderes als eine Daten Fork hat, ergo auch unter 10.0 schon korrekt funktinieren wird.)

Wenn Du den Rest schon per Terminal bzw. Shell Skript machen willst, was Du solltest, ist es explizit sinnvoll auch den Datenbank Dump gelich dort machen zu lassen. So bekommst Du keine Probleme mit den Zeitabläufen falls mal was unerwartet länger dauert und Du weist genau wie die Datei heißt, weil Du deren Namen selbst vergeben hast.
Gruß Pepi
 

martino15

Idared
Registriert
04.12.06
Beiträge
24
Curl scheint nicht passend

Hallo Pepi,

ich habe nach dem Studium des Manuals und ein paar Versuchen, daß Curl wohl für meine anforderung nicht passend ist. Wenn ich es richtig verstanden habe, lädt Curl Inhalte per FTP auf bestimmte Domains. Ich möchte jedoch ein email versenden. Kann es sein, daß ich dann doch wieder Apple-Skript brauche?

Gruss Martin
 

Hobbes_

Gast
Kann es sein, daß ich dann doch wieder Apple-Skript brauche?

Unabhängig davon, ob Du das Problem auch ohne AppleScript lösen kannst anbei eine Info, wie Mail via AppleScript angesprochen wird. Habe mit Google einen früheren AT-Artikel gefunden, der Dir evtl weitere Infos gibt:

Link

Viel Erfolg!
psc

Ach ja: Und hier noch einen Link auf Apples Original-Dokumentation (wobei schon "etwas" alt).

Nebenbei: pepi hat natürlich recht. Den ganzen Ablauf in einem geschlossenen Shell-Script laufen zu lassen ist natürlich das beste.
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Hab ich mich schlecht ausgedrückt?

[...]Wenn ich es richtig verstanden habe, lädt Curl Inhalte per FTP auf bestimmte Domains. Ich möchte jedoch ein email versenden.[...]

Ja, curl kann Dateien per FTP oder auch HTTP (WebDAV) auf einen Server schicken. Ob dies über das Internet ist oder im eigenen LAN ist vollkommen egal. Ein anderer Mac bei dem man den Mac OS X eigenen FTP Server aufdreht ist dafür absolut ausreichend. Web WebDAV (HTTP) kommt man auch bequem an eine iDisk oder ein anderes WebDAV Volume dran.

Ich habe schon verstanden, daß Du ein eMail versenden möchtest habe es aber offenbar nicht entsprechend rübergebracht, daß Dein Vorhaben eine GUI Applikation zu diesem Zweck skripten zu wollen sehr unsinnig und unzuverlässig ist.

zB: Mail kann auf das Passwort des SMTP Servers zum Versand nicht zugreifen und wird daher kein eMail senden können. Mail läuft noch nicht, und braucht aus irgendeinem Grund länger um zu starten, daher bekommt Dein Skript einen Timeout und das Mail wird nicht verschickt. Mail nimmt wegen einer Störung Deines Providers den Mailaccount offline und wird das Mail nicht versenden. Wenn Mail eine Dialogbox zeigt ist niemand da der sie bestätigt und somit wird bis dahin garkein Mail mehr versandt werden. Wenn Dein Benutzer ausgelogged ist wird grundsätzlich dahingehend mal überhaupt garnichts passieren.

All das sind Dinge die sehr leicht mal eintreten können wo Dein Ansatz nicht mehr funktioniert. Deswegen ist es unsinnig das so machen zu wollen. Es ist einfach extrem unsicher, daß es funktionieren wird und somit ist es gefährlich für Dein Backup welches dann nicht passiert.

Wenn Du hingegen mittels curl Deine Datei per FTP an einen anderen Rechner sendest ist es egal ob auf dem Server ein Benutzer eingelogged ist, oder ein Schlüsselbund nutzbar ist oder ob gerade eine Dialogbox angezeigt wird. Das läuft vollkommen transparent im Hintergrund ab. Kein normaler Benutzer des Rechners wird das einfach so mal versehentlich unterbinden.

Es gibt natürlich auch die Möglichkeit per mail so eine Datei per commandline Skript zu versenden. Dazu mußt Du allerdings den postfix auf Deinem "Server" erst konfigurieren. Es würde mich wundern wenn das ohne einfach so klappte.
Auch eine simple Kopie auf ein externes Volume, wie eine 2. Festplatte oder ein USB-Stick läßt sich mittels cp wunderbar erledigen. Mit Launchd kann man sogar erwirken, daß die Kopie erstellt wird sobald man den Stick einfach nur ansteckt.

Ich hoffe, daß meine Erklärungen nun ausreichend Ausführlich waren um klar zu machen, daß Du per Skripting von Mail.app Dein Ziel nicht sinnvoll erreichen wirst. (Horrorvision, jemand stellt Dein Standardmailprogramm auf ein anderes um. zB Thunderbird oder Entourage.)
Gruß Pepi
 
  • Like
Reaktionen: 1 Person

Hobbes_

Gast
Auch eine simple Kopie auf ein externes Volume, wie eine 2. Festplatte oder ein USB-Stick läßt sich mittels cp wunderbar erledigen. Mit Launchd kann man sogar erwirken, daß die Kopie erstellt wird sobald man den Stick einfach nur ansteckt.

Hej pepi,

Megacoole Idee. Wäre wirklich ein superpraktisches Backup, das automatisch startet, sobald ich ein bestimmtes Drive am USB oder Firewire Port anschliesse. Wie macht man das?

Vielen Dank!
psc