Autorun für ext. Datenträger

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
1
Punkte
84
Nachfolgend zu http://www.synology-forum.de/showthread.html?p=126856#post126856 hab ich doch noch weitergemacht. Das funktioniert jetzt soweit bei mir mit DS1010+ DSM 3.0 für USB und eSATA. Wäre schön wenn das noch jemand auf anderer Hardware testen könnte.

/usr/syno/hotplug.d/default/99autorun.hotplug (chmod 700)
Rich (BBCode):
#!/bin/sh

if [ "$1" != "block" ]
then
        return
fi
if [ "$ACTION" != "add" ]
then
        return
fi
if [ "$DEVTYPE" != "disk" ]
then
        return
fi
if [ -z "$DEVNAME" ]
then
        return
fi

/usr/syno/hotplug.d/default/autorun $DEVNAME &

/usr/syno/hotplug.d/default/autorun (chmod 700)
Rich (BBCode):
#!/bin/sh

if [ -z "$1" ]
then
        return
fi

TRIES=20
LOGFILE="/volume1/backup/autorun.txt"
MOUNTPATH=""
COUNT=0

echo "device '$1' inserted, trying to find mount path" >> $LOGFILE

while ([ -z "$MOUNTPATH" ] && [ $COUNT -lt $TRIES ])
do
        MOUNTPATH=`/bin/mount 2>&1 | /bin/grep "/dev/$1" | /usr/bin/cut -d ' ' -f3`
        COUNT=$(($COUNT+1))
        /bin/sleep 1s
done

if [ -z "$MOUNTPATH" ]
then
        echo "unable to find mount point for device '$1'" >> $LOGFILE
        return
fi

echo "mount point '$MOUNTPATH' found" >> $LOGFILE

Schreib im Moment erst mal nur ein Log. Das würde ich dann so erweitern, dass auf der Disk ein Skript aufgerufen wird. Da drin kann man dann machen was man will (Backup starten, ....) und dann über den Rückgabewert steuern, ob die Disk anschließend ausgeworfen wird.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
@Merthos
Bent u een daarbij ;)
Werde es auf jeden Fall mal testen und berichten. Wenn es das macht was ich mir vorstelle, dann ist das ein Topptool :)

Gruss

tobi
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
1
Punkte
84
Hab mal ein spk draus gemacht, wollte ich schon immer mal probieren. :D

Macht weiterhin noch nichts sinnvolles außer loggen. Mit Start / Stop des Paketes wird das Ganze an- / ausgeschaltet. Die Logs stehen im Protokoll (Info abrufen).
 

Anhänge

  • autorun-0.1.spk
    10,5 KB · Aufrufe: 200

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
1
Punkte
84
So, nächste Version. Die macht jetzt auch schon was sinnvolles.

Nach erfolgreichem Mounten wird geschaut, ob ein Skript namens "autorun" dort existiert. Wenn ja, wird es aufgerufen. Als Parameter werden der Mount Point ($1) und der Gerätename ($2) übergeben. Nach Abschluss des Skripts wird der Rückgabewert ausgewertet. Bei 0 passiert nichts weiter, alle anderen Werte mach ein umount und werfen den Datenträger aus.

Zur Kontrolle gibt es einen Pieps am Anfang und Ende und die Status-LED wird auf orange geschaltet, solange das Skript läuft.
 

Anhänge

  • autorun-0.2.spk
    9,5 KB · Aufrufe: 94

Matthieu

Benutzer
Mitglied seit
03. Nov 2008
Beiträge
13.222
Punkte für Reaktionen
88
Punkte
344

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
1
Punkte
84
Version 0.3 hat jetzt Optionen (eigentlich nur, weil ich das mal probieren wollte). Ansonsten hab ich den Auswerftrigger auf den Wert 100 beschränkt.

Lizenz: BSD
Abhängigkeiten: DSM 3.0+
Getestet mit: DS1010+ DSM 1337
 

Anhänge

  • autorun-0.3.spk
    27 KB · Aufrufe: 76
  • options.png
    options.png
    121,1 KB · Aufrufe: 4.404

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
1
Punkte
84
Version 0.4 erlaubt das Erstellen eines passenden Skripts für für das lokale Backup (für die Leute, die sich nicht mit der Kommandozeile rumschlagen wollen). Damit kann man dann ein im DSM konfiguriertes lokales Backup beim Anschluss der Platte starten und (optional) die Platte nach Abschluss wieder aushängen.
 

Anhänge

  • autorun-0.4.spk
    30 KB · Aufrufe: 205
  • options.png
    options.png
    108,1 KB · Aufrufe: 4.448
  • backup.png
    backup.png
    82,6 KB · Aufrufe: 4.395
  • log.png
    log.png
    145,8 KB · Aufrufe: 4.384

Matthieu

Benutzer
Mitglied seit
03. Nov 2008
Beiträge
13.222
Punkte für Reaktionen
88
Punkte
344
Uhhhh :D
Das probier ich demnächst mal aus, sieht sehr interessant aus. Darauf haben so einige gewartet!

MfG Matthieu
 

Super-Grobi

Benutzer
Mitglied seit
28. Sep 2010
Beiträge
1.913
Punkte für Reaktionen
0
Punkte
62
Gooill !! :D:D

wat 'n Glück, dass der Merthos sowat kann.

Grüße
 

jan_gagel

Benutzer
Mitglied seit
05. Apr 2010
Beiträge
1.890
Punkte für Reaktionen
1
Punkte
0
Hallo,

per Zufall beim einem Streifzug im Forum hab ich diesen Thread gefunden. Darüber bin ich total begeistert, daß es ein solches Modul gibt, wenngleich ich wenig Ahnung von Shellscript-Programmierung hab, DOS-Batch-Skripte erstelle ich ganz gerne, aber C ist für mich einfach zu viel.

Gäbe es auch die Möglichkeit, einen TimeBackup-Job mit diesem Autostart-Mechanismus zu starten? Oder schnell mal einen bestimmten Ordner auf den USB-Stick ziehen?

Ciao Jan
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
1
Punkte
84
TimeBackup habe ich nicht installiert, von daher kann ich das nicht genau sagen. Geht das denn überhaupt mit wechselnden externen Platten?

Ordner kopieren ist relativ simpel, dafür ein Skript zu schreiben.
 

jan_gagel

Benutzer
Mitglied seit
05. Apr 2010
Beiträge
1.890
Punkte für Reaktionen
1
Punkte
0
ja, TimeBackup kann mit verschiedenen Platten umgehen. So habe ich zwei verschiedene USB-Platten mit zwei verschiedenen Jobs. Je nach Geräte-Größe (vielmehr RAM-Größe) können mehrere TimeBackup-Jobs angelegt werden.
 

randfee

Benutzer
Mitglied seit
08. Apr 2010
Beiträge
1.070
Punkte für Reaktionen
3
Punkte
64
sehr cool... werde ich testen - genau das habe ich beim DSM zu bemängeln. Wenn ich damit die Backups auf externe Platten einfach per Anstöpseln erledigen kann ... SUPER.
 

wizjos

Benutzer
Mitglied seit
03. Sep 2008
Beiträge
30
Punkte für Reaktionen
0
Punkte
0
Cool!'

Im text gibt's ein Typo: 'You can savely remove the...' etc. sollte sein: 'You can safely remove the...

Grüße

Wizjos
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
1
Punkte
84
Via PN, aber vielleicht betrifft es ja auch andere:
ich hab dein Paket Autorun auf meiner DS210j (DSM3.1) installiert. Den Gedanken alleine finde ich schon super, ich verwende allerdings nicht das interne Backup-System, sondern Time-Backup. Kann man TimeBackup auch mit einem autorun-Skript starten?

TimeBackup hab ich nicht installiert. Da ich nur eine Produktiv-DS habe, will ich auf der eigentlich nichts (für mich) unnötiges installieren. Wenn dies aber wie das normale Backup über ein Kommando gestartet wird, dann sollte dafür auch ein Skript möglich sein.

3.1 habe ich auch noch nicht installiert, von daher kann ich nicht ausschließen, dass es dort Probleme gibt. Vielleicht hat es ja schon jemand damit probiert.

Ich hab mal zum "Aufwärmen" erst mal ein mini-Skript gemacht und auf einem USB-Stick abgelegt. Der Stick ist ext3 formatiert und das Skript ist ausführbar für root. Im Skript selbst ist lediglich ein Kopier-Kommando, welches manuell aufgerufen auch funktioniert. Allerdings findet der Dienst, der auf der DS läuft, das autorun-Skript nicht, steht zumindest so im Protokoll. Das Skript liegt in /volumeUSB1/volumeusb/autorun, genau dort sucht er das Skript, findet es allerdings nicht.

Hat sich der Mount-Point für ext. Geräte schon wieder geändert? Weil mit 3.0 ist das /volumeUSB1/usbshare.

Ich bin zwar Informatiker, schreibe selbst sehr gerne DOS / Windows-Batch-Dateien, Linux-Skripte sind für mich allerdings viel zu kompliziert, da in C geschrieben.
Also C ist das nicht. Wenn es Dich genauer interessiert kannst Du das spk auspacken, ist nur ein tar. Alternativ, wenn installiert, auf der DS unter /var/packages/autorun/target. "hotplug" ist das Shell-Skript, das vom Hot-Plug-Daemon gestartet wird, "autorun" sucht den Mount-Point und übernimmt die Ausführung. Sollte man prinzipiell lesen können.
 

Gvou6

Benutzer
Mitglied seit
03. Mrz 2011
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
Hallo Merthos,

ich habe mir Dein Paket einmal runtergeladen und ausprobiert. Ich möchte es für ein Backup auf eine externe Platte nutzen. Soweit funktioniert es auch alles. Vielen Dank schon mal dafür.

Was nicht funktioniert ist das automatische Auswerfen der USB Platte nach dem Backup.

In der Logdatei sehe ich folgende Meldung:

2011-04-08 13:35:53: local backup 'Backup' started
2011-04-08 13:35:54: local backup 'Backup' finished
2011-04-08 13:35:54: device 'sdq' - script '/volumeUSB1/usbshare/autorun' finished, starting unmount
2011-04-08 13:36:00: device 'sdq' - error while unmounting '/volumeUSB1/usbshare', aborting

Was natürlich nicht funktioniern kann, weil das backup doch länger als 1 Sekunde braucht. Es es irgendwie möglich das Script zu erweitern damit er mit dem unmout wartet, bis das Backup wirklich fertig ist?

Gruß
Andreas
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
1
Punkte
84
Eigentlich sollte es warten. Welche DSM-Version hast Du?
 

maze128

Benutzer
Mitglied seit
03. Jan 2010
Beiträge
227
Punkte für Reaktionen
0
Punkte
16
Hi,

hab das Ding mal getestet, prinzipiell auch eine sehr coole Idee.
Funktioniert so weit auch auf der DS410J, mit Version 3.1_1605.
Allerdings mit einem Problem:

Es geht nur wenn ich mich vorher auf der DS einlogge und das Paket manuell starte/ausführe.
So macht das natürlich wenig Sinn, dann kann ich auch direkt das Script manuell starten, wäre sehr schön wenn das zu ändern wäre.

Die nächste Frage wäre ob es normal ist, dass die 99autorun.hotplug bei mir nicht existiert, die autorun ebenfalls nicht, also in /usr/syno/hotplug.d/default/ Ich habe nur die spk installiert. Sonst nichts. Fehlt da eventuell noch was?
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
1
Punkte
84
Du musst das Paket einmal starten, das ist bei allen spk so. Wenn es dann läuft, werden auch die entsprechenden Skripte im hotplug hinterlegt. Und dann läuft es auch solange, bis das Paket wieder beendet wird. Darüber kannst man dann steuern, ob man den autorun haben will oder nicht, wenn ein Datenträger angeschlossen wird.
 

maze128

Benutzer
Mitglied seit
03. Jan 2010
Beiträge
227
Punkte für Reaktionen
0
Punkte
16
Ja, das ist schon klar.
Ich hab das Paket installiert, einmal gestartet und getestet, das klappte wunderbar.
Nach einem Neustart ging dann plötzlich nichts mehr, ich muss das Paket erst wieder manuell starten.

Ist das so gewollt? Das macht für mich dann wenig sinn oder gibt es eine Möglichkeit das Paket immer direkt starten zu lassen?
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat