Wie binde ich ein Script ein, damit es beim ausschalten der Box aufgerufen wird

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Wie binde ich ein Script ein, damit es beim ausschalten der Box aufgerufen wird

      Hallo,
      ich versuche jetzt schon seit Stunden ein Script aufzurufen, welches beim Herunterfahren der Box aufgerufen wird. Es handelt sich dabei um ein Script das über ssh meine NAS ausschaltet. Das Script funktioniert Standalone.
      Ich habe schon versucht es in rc0.d bzw. rc6.d zu verlinken. Leider ohne Erfolg.

      Ich hab zwar schon viel gegoogelt, aber bisher hat nichts funktionieren wollen. Geht das überhaupt?

      Gruss
      Henning
    • RE: Wie binde ich ein Script ein, damit es beim ausschalten der Box aufgerufen wird

      Use the source, Luke!

      Schau Dir das Script /usr/bin/enigma2.sh mal an. Du kommst da nicht wirklich gut dazwischen, und ich würde sagen rc6.d war schon das, was dem Dazwischenkommen am Dichtesten kommt; ich glaube aber, da kommst Du nur rein, wenn das System einen Reboot macht. Wenn überhaupt.

      Das /usr/bin/enigma2.sh kannst Du aber anpassen. Wird halt von Zeit zu Zeit durch Updates überschrieben...
    • rc0.d ist schon die sauberste Lösung und sollte auf jedenfall funktionieren!

      Einfach im ordner /etc/rc0.d ein symlink mit dem namen z.B. K20nasshutdown (Wobei die 20 die Stelle angibt wann es ausgeführt wird)
      auf dein Skript in /etc/init.d/namedesskript anlegen!

      Dieses Skript sollte so anfangen:

      Quellcode

      1. case "$1" in
      2. 'stop')
      3. *****DEIN Skript****
      4. ;;
      5. esac

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von RoooNY ()

    • Hallo RoooNY,

      danke für Deine Hilfe! Hab das script abgeändert und bei K20 in rc0.d eingehängt. Leider funktionieret es nicht. Die Box bleibet jetz beim Herunterfahren hängen und das NAS bleibt an. Habe das Script auch nochmal manuell mit dem Aufruf "PowerOffNAS stop" getestet. Das geht und NAS fährt herunter.

      Hier ist das Script:

      Quellcode

      1. case "$1" in
      2. 'stop')
      3. ssh -l root -i /.ssh/private 192.168.2.152 -f poweroff
      4. ;;
      5. esac

      Es befindet sich in /etc/init.d und nennt sich PowerOffNAS
      ls -al Listing:
      -rwxr-xr-x 1 root root 96 Feb 4 20:25 PowerOffNAS

      Der link ist im Verzeichniss /etc/rc0.d. Das ls -al listing lautet:
      lrwxrwxrwx 1 root root 23 Feb 4 21:01 K20PowerOffNas -> /etc/init.d/PowerOffNAS

      Woran kann es liegen, gibt es vielleicht eine Möglichkeit das Herunterfahren zu debuggen oder zu loggen? Vielleicht ist es ja auch nur eine Kleinigkeit, die du gleich siehst. Ich habe noch Hoffnung :)

      Danke
      Gruss Henning
    • Mal so versucht(mit &)?:

      Quellcode

      1. case "$1" in
      2. 'stop')
      3. ssh -l root -i /.ssh/private 192.168.2.152 -f poweroff &
      4. ;;
      5. esac


      Bist du sicher dass der Ordner .ssh im Stammverzeichnis ist und nicht unter /home/root/.ssh?

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von RoooNY ()

    • Box bleibt hängen beim runterfahren, ansonsten keine Reaktion beim NAS. Ist K20 die richtige Position für das Script?
      Hier mal der Inhalt von rc0.d

      K01showith
      K10dropbear
      K19autofs
      K19avahi-daemon
      K20PowerOffNAS
      K20busybox-cron
      K20dbus-1
      K20hostapd
      K20inetd
      K20syslog
      K20usbtunerhelper
      K20vsftpd
      K39umountnfs
      K40networking
      S20sendsigs
      S40umountfs
      S90halt

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Henning ()

    • Hi,
      ich würde eher K18 nehmen. Ich weiß nicht in welcher Reihenfolge die ganzen K20er genommen werden. Wenn Du Pech hast ist dein Netzwerk weg und deswegen hängt sich Box dann auf und NAS zeigt keine Reaktion.

      ciao
    • Netzwerk ist K40, also später; K20 müsste eigentlich passen. Ich vermute eher, dass das nicht klappt, weil's nicht interaktiv, d.h. aus einer Shell heraus gestartet wird. Ich würde vor allem die Option -f weglassen und vielleicht mal -T als Option versuchen. Keine Ahnung, ob es einen Unterschied macht. Teste das aber separat, damit Du anschließend weißt, wo der Fehler liegt.
    • Original von RoooNY
      Bist du sicher dass der Ordner .ssh im Stammverzeichnis ist und nicht unter /home/root/.ssh?


      Genau. Verzeichniss prüfen. /.ssh/... ist ein ungewöhnlicher Ort.
      ssh hängt, wenn das Keyfile nicht gefunden wird.

      Ansonsten mal ein Logfile anlegen:

      Quellcode

      1. case "$1" in
      2. 'stop')
      3. ssh -l root -i /.ssh/private 192.168.2.152 -f poweroff >/tmp/logfile.txt 2>&1
      4. ;;
      5. esac
    • wie schon gesagt, das Script funktioniert ja wenn ich es von der shell selber Aufrufe. Die Box fährt herunter.

      Mein private key liegt in dem angegebenen Verzeichniss!

      Ich probiere mal das log und berichte dann.

      Danke und Gruss
      Henning
    • So habe nun probiert zu loggen beim Herunterfahren der BOX. Box bleibt wie gewohnt hängen, NAS fährt nicht herunter. Nach einem Neustart existiert jedoch das log file nicht.

      Bei einem manuellen Aufruf des Scripts wird das log file zwar angelegt, ist aber leer. Klar der Befehl funktionierte ja auch. NAS fährt herunter.
    • puuuhhh. Also:

      Die Box hängt immer noch, keine Veränderung, aber...

      Während die Box hing, ist mir aufgefallen das ich immer noch Zugang zur shell habe. Im Verzeichniss /tmp war dann wirklich ein logfile vorhanden. Inhalt:

      Host '192.168.2.152' is not in the trusted hosts file.
      (fingerprint md5 ee:e2:c0:5a:5b:fe:39:d6:03:fc:b2:87:30:f8:b3:65)
      Do you want to continue connecting? (y/n)

      Nach dem Hard Power Off der Box und dem erfolgten Neustart ist jedoch das Logfile verschwunden. Wird wohl automatisch entfernt!

      nachdem ich das gesehen habe, habe ich nochmal alle Keys auf der NAS und der BOX gelöscht.
      Danach habe ich ein neues Key Pair angelegt mit:

      Quellcode

      1. dropbearkey -t rsa -f /home/root/.ssh/private


      Den ausgegebenen public key auf der shell habe ich dann per copy und paste mit einer telnet session auf die NAS kopiert. Der Key liegt dort in /root/.ssh/authorized_keys . Das ist das Standard Verzeichniss für meine Synology DS 213+.

      Auf der Box im Verzeichniss /home/root/.ssh liegt jetzt mein private key, jedoch noch keine known_hosts.
      Also schnell ein manuelles einloggen mit dem Befehl:

      Quellcode

      1. ssh root@192.168.2.152


      Danach gibt es auch die Datei known_hosts.

      Nun geht auch das einloggen mit dem private key ohne weitere Fragen nach trusted hosts. Befehl:

      Quellcode

      1. ssh -l root -i /home/root/.ssh/private 192.168.2.152


      So nun dachte ich das ganze hat etwas gebracht. Falsch! Das Verhalten ist immer noch wie zuvor, mit dem kleinen Unterschied das wir jetzt wissen warum :)

      Was soll diese Meldung und wie bekomme ich den Host in die trusted list?

      Host '192.168.2.152' is not in the trusted hosts file.
      (fingerprint md5 ee:e2:c0:5a:5b:fe:39:d6:03:fc:b2:87:30:f8:b3:65)
      Do you want to continue connecting? (y/n)

      Achso, mein script sieht jetzt so aus:

      Shell-Script

      1. #!/bin/sh
      2. case "$1" in
      3. 'stop')
      4. ssh -l root -i /home/root/.ssh/private 192.168.2.152 -f poweroff >/tmp/logfile.txt 2>&1
      5. ;;
      6. esac
      7. exit 0

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Henning ()

    • Hi,
      hast Du den Befehl mal von Hand ausgeführt? Wirst Du da auch gefragt? Hast Du dann ja gesagt?

      Putty stellt mir bei einem neuen Image auch immer die Frage und nach Ja dann nicht wieder.

      ciao
    • Original von Henning
      Also schnell ein manuelles einloggen mit dem Befehl:

      Quellcode

      1. ssh root@192.168.2.152


      Danach gibt es auch die Datei known_hosts.


      Idee! Kopiere mal die known hosts nach
      /etc/ssh/ssh_known_hosts

      Laut ssh manual page wird hier immer gesucht, auch wenn keine Umgebung (Pfade, Variablen usw) vorhanden sind.
    • meintest du ssh oder .ssh?
      Naja jedenfalls liegt die Datei jetzt in

      root@vuultimo:/etc/.ssh# ls
      known_hosts

      und es geht immer noch nicht.

      Kann es vielleicht an den Rechten liegen:

      root@vuultimo:~# cd /home/root
      root@vuultimo:~# cd .ssh
      root@vuultimo:~/.ssh# ls -al
      drwxr-xr-x 2 root root 296 Feb 6 20:17 .
      drwxr-xr-x 4 root root 440 Feb 6 20:13 ..
      -rw-r--r-- 1 root root 395 Feb 6 20:18 known_hosts
      -rw------- 1 root root 427 Feb 6 20:16 private

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Henning ()