Remote Script mit Puuty/Plink

GrooveXT

Commander
🎅Rätsel-Elite ’24
Registriert
Jan. 2007
Beiträge
2.565
Remote Script mit Putty/Plink

Hallo Leute,

ich habe hier nen Raspberry Pi den ich für eine Diashow benutze. Jetzt habe ich mir ein init.d Script geschrieben, dass die Diashow startet und anhält

Das Script
Code:
#! /bin/bash
PHOTODIR=/home/pi/presentation/
INTERVAL=5
RE='^[0-9]+$'
case "$1" in
        start)
                # Anweisungen zum Starten hier eingeben
                if [[ "$2" =~ $RE ]]
                then
                        INTERVAL="$2"
                fi
                fbi -T 1 -noonce -noverbose -a -t $INTERVAL -u `find $PHOTODIR -                                                                                                                                                             iname "*.*"` &
                echo $!
                ;;
        stop)
                # Anweisungen zum Stoppen hier eingeben
                killall fbi
                ;;
        restart)
                $0 stop
                $0 start
                ;;
esac

Verbinde ich mich nun mit Putty mit dem Raspberry Pi und starte das Script, funktioniert alles perfekt.
Jetzt möchte ich das ganze aber gerne per Commandozeile und plink ansteuern. Führe ich darüber das Script aus, bekomme ich zwar eine Prozess-ID zurück, aber es passiert nichts. Das Script startet nicht und es werden keine Bilder angezeigt.


Was mache ich falsch?


Danke
 
Zuletzt bearbeitet:
Das könnte eventuell daran liegen, dass plink den Befehl ausführt, danach aber sofort die Verbindung schließt. In dem Fall werden auch alle Prozesse beendet, die du über plink gestartet hast. Mit einem dem "&" startest du dein Skript nur im Hintergrund, es ist aber immer noch mit deiner Shell "verbunden".

Um das zu verhindern, kannst du einen "double-fork" machen:
Code:
(Befehl & ) &
oder du verwendest nohup, welches das SIGHUP-Signal unterdrückt, das beim Beenden der Shell gesendet wird:
Code:
nohup BEFEHL &

Oder du kannst dein Skript in einer screen-Session (https://de.wikipedia.org/wiki/GNU_Screen) starten und dann detachen. Weiß aber nicht, wie gut man screen in Skripten verwenden kann.
 
Danke für deine Antwort.

Also ich bin das Problem nicht losgeworden. Es scheint irgendwie damit zusammen zu hängen, dass plink kein Terminal öffnet, sondern nur den Befehl injiziert, fbi aber ein Terminal erwartet. Verstanden habe ich das Problem bis jetzt jeden Falls nicht. Ich habe jetzt einen Workaround geschrieben, in dem ich mittels inotify auf eine Datei lausche. Jetzt kann ich per plink die Datei verändern, dass Script bekommt das mit und läuft los. Ist nicht der Königsweg, da ich aber sowieso jedesmal diese Datei verändern muss, ist es ein akzeptables Vorgehen.
 
Hast du mal plink mit "-t" gestartet?
Code:
  -t -T     enable / disable pty allocation
 
Zurück
Oben