Upgrade DSM 3.0 Problem Start/Stop scripte

Status
Für weitere Antworten geschlossen.

Derxylakant

Benutzer
Mitglied seit
21. Jan 2010
Beiträge
80
Punkte für Reaktionen
0
Punkte
0
Hallo Ihr,

hab seit dem Upgrade auf DSM 3.0 (ds110j) ein Problem mit meinen start/stop scripten. Nach einer Anleitung von dude binde ich damit via mount bind Ordner einer externen HD in den Systemordner /volume1/video ein.

Das Skript liegt bei mir in /usr/local/etc/rc.d und heisst S99mount.sh

Hat bisher immer funktioniert, nur seit dem update nicht mehr. Das Skript beinhaltet mount bzw. umount Anweisungen, wenn es mit den Parametern start bzw. stop aufgerufen wird.

Während der Fehlereingrenzung fiel mir auf, dass die einzubindenden Ordner auf der externen HD nicht mehr unter /volumeUSB1/usbshare/ORDNER sondern unter /volumeUSB1/usbshare/usbshare/ORDNER liegen. Ich habe das Skript dementsprechend geändert.

Wenn es nun manuell mit "sh S99mount.sh start" ausführe, funktioniert es auch. Allerdings nicht bei einem Neustart, was definitiv eine Änderung mit der neuen Firmware ist. Vorher hatte ich eine 2.3 Version.

Hat jemand eine Idee, wie ich mein Start/Stop Skript mit der neuen firmware automatisch ausführen kann, wenn die DS runter/hochfährt?

Schöne Grüße,
DerXylakant
 

blackfir3

Benutzer
Mitglied seit
04. Mai 2008
Beiträge
294
Punkte für Reaktionen
0
Punkte
16
Ah gut dann bin ich nichts der einzigste. Hatte vorhin auch schon hin und her probiert mit dem mount script aber es wollte einfach nicht automatisch.
Hoffe dann auch mal das sich hier schnell eine Lösung findet.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Wenn es nun manuell mit "sh S99mount.sh start" ausführe...
Kannst du es denn auch ohne Shell manuell starten?
Code:
./S99mount.sh start
Wenn nein, dann ist die Datei wohl nicht ausführbar und wird darum beim Start ignoriert.
Mach in diesem Fall ein chmod +x S99mount.sh und probiers nochmal
 

blackfir3

Benutzer
Mitglied seit
04. Mai 2008
Beiträge
294
Punkte für Reaktionen
0
Punkte
16
Rich (BBCode):
DS410> chmod +x S99mount.sh
DS410> ./S99mount.sh start
-ash: ./S99mount.sh: not found
Rich (BBCode):
139957    4 -rwxr-xr-x    1 root     root           403 Sep 26 23:01 S99mount.sh
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0

Derxylakant

Benutzer
Mitglied seit
21. Jan 2010
Beiträge
80
Punkte für Reaktionen
0
Punkte
0
Guten Morgen jahlives,

danke für die schnelle Antwort. Die Rechte des scripts stimmen (siehe blackfir3's posting).

Tatsächlich war die erste Zeile falsch, ich hatte sie bei der Fehlersuche geändert, bevor ich gesehen habe, dass die Ordner nach dem update unter /volumeUSB1/usbshare/usbshare/ORDNER liegen.

Mit #!/bin/sh/ kann man das script auch wieder über

./S99mount.sh start

starten. Allerdings wird es beim Neustarten des DSM immer noch nicht automatisch ausgeführt.

Noch eine andere Idee? Ich bin mir sicher, dass es irgendwas mit dem firmware update zu tun hat.
 
Zuletzt bearbeitet:

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Noch eine andere Idee? Ich bin mir sicher, dass es irgendwas mit dem firmware update zu tun hat.
Ich habe mittlerweile 2 DS auf die neue Firmware gebracht und kein solches Problem gehabt.
Bist du auch ganz sicher, dass das File in /usr/syno/etc.defaults/rc.d/ liegt und nicht etwa in /opt/etc/init.d/?
 

Derxylakant

Benutzer
Mitglied seit
21. Jan 2010
Beiträge
80
Punkte für Reaktionen
0
Punkte
0
Hallo jahlives,

wie ich im ersten post geschrieben hab, liegt das script bei mir in /usr/local/etc/rc.d

hat bisher immer wunderbar funktioniert. habs jetzt aber auch mal in den von dir angegebenen ordner kopiert und einen neustart des servers gemacht.

hat leider auch nicht funktioniert..
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Hast du den Pfad zum mount-Kommando komplett angegeben oder nur mount verwendet?
Kannst du sonst mal noch den Quellcode deines Script posten und ebenfalls das Ergebnis eines
Code:
ls -al /usr/syno/etc.defaults/rc.d/S99mount.sh
 

Derxylakant

Benutzer
Mitglied seit
21. Jan 2010
Beiträge
80
Punkte für Reaktionen
0
Punkte
0
ich habe den link zum mount kommando absolut angegeben.

das skript hab ich mal hochgeladen:
http://pastebin.de/10311

aber wie gesagt, manuell funktionierts ja. ich denke eher, dass bei der neuen firmware was am boot / shutdown vorgang geändert wurde.

die rechte lauten:
HackbartServer> ls -al /usr/syno/etc.defaults/rc.d/S99mount.sh
-rwxr-xr-x 1 root root 2560 Sep 27 09:48 /usr/syno/etc.defaults/
rc.d/S99mount.sh
HackbartServer>

(der zeilenumbruch kommt nur durchs kopieren zustande, arbeite gerade über telnet unter windows; bin beim arbeiten ;)
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
aber wie gesagt, manuell funktionierts ja. ich denke eher, dass bei der neuen firmware was am boot / shutdown vorgang geändert wurde.
Der Code schaut imho gut aus und auch die Rechte sollten stimmen. Wenn wirklich etwas am Bootvorgang geändert worden wäre, dann wäre es mir unerklärlich warum alle Scripte funzen und nur deins ned
Kannst du mal ein Testscript anlegen (unbedingt mit einer Zahl im Namen, die noch nicht vorkommt)
Code:
#!/bin/sh
if [ "$*" = 'start' ] ; then
 touch /tmp/bootcheck
fi
ausführbar machen und rebooten. Ist /tmp/bootcheck vorhanden nach dem Neustart?
Alternativ könntest du zum Testen auchmal
Code:
if [ "$*" = 'start' ] ; then
 touch /tmp/bootcheck
 exit
fi
in dein mount Script vor dem switch-Statement einbauen und dann rebooten. Ist dann /tmp/bootcheck vorhanden.

Btw: Wie genau hast du diese Datei erstellt? Direkt auf der Konsole oder mittels eines Windows Editors und dann auf die DS geschoben? Hast du mal mittels vi geprüft ob du ggf komische Zeilenendzeichen in der Datei hast (meist steht in diesem Fällen ein ^M am Ende der Zeilen)
 

Derxylakant

Benutzer
Mitglied seit
21. Jan 2010
Beiträge
80
Punkte für Reaktionen
0
Punkte
0
hmm, scheint irgendwie der Wurm drin zu sein.

Hab jetzt mal zwei Dateien erstellt:

Rich (BBCode):
HackbartServer> ls -al /usr/local/etc/rc.d/ | grep S98
-rwxr-xr-x    1 root     root            66 Sep 27 12:22 S98test.sh

mit dem Inhalt:
Rich (BBCode):
#!/bin/sh
if [ "$*" = 'start' ] ; then
 touch /tmp/bootcheck
fi


und die Datei:
Rich (BBCode):
HackbartServer> ls -al /usr/syno/etc.defaults/rc.d/ | grep S94
-rwxr-xr-x    1 root     root            67 Sep 27 12:26 S94test.sh

mit dem Inhalt:
Rich (BBCode):
#!/bin/sh
if [ "$*" = 'start' ] ; then
 touch /tmp/bootcheck2
fi

Die Scripte hab ich mit Notepad++ erstellt und das Format auf Unix geändert. Zeilenumbrüche sollten also die korrekte Formatierung haben. Früher kann das auch nicht das Problem gewesen sein, weil ich daheim mit linux arbeite.

Nach einem Neustart existiert weder der Ordner /tmp/bootcheck noch der Ordner /tmp/bootcheck2

Rich (BBCode):
HackbartServer> cd tmp/
HackbartServer> ls
boot_seq.tmp             locking.tdb              standbytime
brlock.tdb               mDNSResponder.conf       synoaudiod.sock
browse.dat               messages.tdb             synoctrl
connections.tdb          mplayer.sock             synologd
current.users.lock       perfmon                  usbdebug
ddns.status              postgresql.pid           usbdiskapplying
dms                      postmaster.pid           usbguidtab
ftp_cur_con.log          sessionid.tdb            usbtab
gencache.tdb             snap-origin-module-init
lock                     space
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Und wenn du diese Testdateien manuell mit start aufrufst, sind die Dateien aber vorhanden, oder? Das ist echt strange.
Hast du ipkg installiert? Falls ja ggf mal probiert die Scripte nach /opt/etc/init.d/ zu verschieben und afaik muss dann die .sh Endung weg
 

Derxylakant

Benutzer
Mitglied seit
21. Jan 2010
Beiträge
80
Punkte für Reaktionen
0
Punkte
0
funktioniert auch manuell nicht, scheint ein Fehler im script zu sein:

Rich (BBCode):
HackbartServer> sh S98test.sh
S98test.sh: line 4: syntax error: unexpected "fi" (expecting "then")
HackbartServer> sh S98test.sh start
S98test.sh: line 4: syntax error: unexpected "fi" (expecting "then")

Ohne sh gehts gar nicht:
Rich (BBCode):
HackbartServer> ./S98test.sh start
-ash: ./S98test.sh: not found
HackbartServer> S98test.sh start
-ash: S98test.sh: not found

Mein mount script funktioniert manuell schon:
Rich (BBCode):
HackbartServer> ./S99mount.sh start
 

Derxylakant

Benutzer
Mitglied seit
21. Jan 2010
Beiträge
80
Punkte für Reaktionen
0
Punkte
0
ipkg scheint installiert zu sein:

Rich (BBCode):
HackbartServer> ipkg --help
ipkg: unrecognized option `--help'
ipkg: ipkg must have one sub-command argument
ipkg version 0.99.163
usage: ipkg [options...] sub-command [arguments...]
where sub-command is one of:
.
.
.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Bist du sicher, dass du die Testscripte komplett kopiert hast? In meinem Code steht klar ein ; then
Wenn es ohne sh ned geht, dann liegt das meist daran, dass das Script selber nicht ausführbar ist
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Nen Tipp: Prüfe nicht auf den Leerstring und mach mal den Schalter -x für die Shell an, damit du siehst, was da passiert.

Rich (BBCode):
#!/bin/sh
if [ "x$*" = 'xstart' ] ; then
 touch /tmp/bootcheck
fi

Itari
 

Derxylakant

Benutzer
Mitglied seit
21. Jan 2010
Beiträge
80
Punkte für Reaktionen
0
Punkte
0
@n jahlives:

dass script lässt sich auch manuell immer noch nicht starten. Strichpunkt ist drin und Zeilenumbruch scheint im Unix Format zu sein:

Rich (BBCode):
HackbartServer> vi S98test.sh

liefert

Rich (BBCode):
#!/bin/sh/
if [ "$*" = 'start' ] ; then
 touch /tmp/bootcheck
fi

@n itari:
kann es sein, dass irgendwas mit diesem code-schnipsel grundsätzlich schon nicht stimmt?
habe den code direkt über telnet mit dem vi editor erstellt:
Rich (BBCode):
#!/bin/sh/
if [ "x$*" = 'xstart' ] ; then
touch /tmp/bootcheck
fi

und ausführbar gemacht
Rich (BBCode):
HackbartServer> chmod +x S97test2.sh
HackbartServer> ls -al
drwxr-xr-x    2 root     root          4096 Sep 27 16:15 .
drwxr-xr-x    3 root     root          4096 Jan 19  2010 ..
-rwxr-xr-x    1 root     root            66 Sep 27 16:15 S97test2.sh

und trotzdem bekomm ich
Rich (BBCode):
HackbartServer> ./S97test2.sh
-ash: ./S97test2.sh: not found
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Die erste Zeile (Shebang) ist: ohne '/' am Ende zu schreiben. Guck meinen Post davor an.

Itari
 

blackfir3

Benutzer
Mitglied seit
04. Mai 2008
Beiträge
294
Punkte für Reaktionen
0
Punkte
16
Kann leider nicht sagen ob das Script bei mir mit DSM 2.3 ging. Hatte nur einige Videodateien in einen verschlüsselten Ordner kopiert und den in "video" gemountet.
Hatte einmal rebooted ohne unmount, aber war anscheint nich schlimm. Dann habe ich noch paar Tage auf DSM 3.0 gewartet und wollte das nun mal richtig fertig machen.
Script liegt in /usr/syno/etc.defaults/rc.d/ mit "chmod 755 S94mount.sh" und "chmod +x S94mount.sh"
Achso und die Datei wurde mit Notepad++ erstellt als .sh script file. Hochgeladen in den Videoordner und in den richtigen Pfad rüberkopiert. Denn vi komme ich nicht mit klar, und nano ist leider nicht drauf. :(
Rich (BBCode):
#!/bin/sh
# S94mount.sh
# mount/bind some folders on startup
# and umount them on shutdown/reboot

case $1 in
start)
        /bin/mount -o bind /volume1/video/michael/ /volume1/music/test/
        ;;
stop)
        /bin/umount /volume1/music/test/
		/bin/umount /volume1/video/share/
		/bin/umount /volume1/music/share/
        ;;
*)
        echo "Usage: $0 [start|stop]"
        ;;
esac
Die beiden unteren Reihen bei "stop" sind die verschlüsselten Ordner (wieso die nach rechts versetzt sind weiß ich nicht, in Notepad++ ist das nicht so). Bei denen gebe ich das Passwort nach dem booten über DSM ein und mounte dann manuell.
 
Status
Für weitere Antworten geschlossen.
 

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