pid vom ssh client

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
Twilo
Beiträge: 255
Registriert: 21.04.2006 00:59:40
Wohnort: Berlin

pid vom ssh client

Beitrag von Twilo » 06.08.2009 18:39:30

Hallo,

ich möchte in ein init.d Skript ein SSH-Tunnel aufbauen

Code: Alles auswählen

[...]
    start)
        log_daemon_msg "Creating ssh tunnel for hudson"

        start-stop-daemon --start --oknodo --quiet --make-pidfile \
                          --pidfile ${PIDFILE} --chuid ${USER} \
                          --exec /usr/bin/ssh -- -f -N ${TUNNELS} \
                          ${SSH_USER}@example.org
        if [ $? != 0 ]; then
            log_end_msg 1
            exit 1
        fi

        log_end_msg 0
        ;;
    stop)
        log_daemon_msg "Stopping ssh tunnel for hudson"

        start-stop-daemon --stop --quiet --pidfile ${PIDFILE}

        log_end_msg 0
        ;;
[...]
in der Datei ${PIDFILE} wird jedoch die falsche pid geschrieben.

Warum erhält der Daemon die falsche pid zurück?
Gibt es eine Möglichkeit die pid des ssh Prozesses abzufragen?
Gibt es andere Möglichkeiten den ssh-Prozess eindeutig zu identifizieren?

mfg
Twilo

cosmac
Beiträge: 4579
Registriert: 28.03.2005 22:24:30

Re: pid vom ssh client

Beitrag von cosmac » 06.08.2009 21:34:25

hi,
Twilo hat geschrieben:Warum erhält der Daemon die falsche pid zurück?
start-stop-daemon startet einen ssh-Prozess und merkt sich dessen pid. Mit "-f" sagst du dem ssh aber, dass er im Hintergrund laufen soll. Dazu wird per fork ein neuer Prozess mit neuer pid erzeugt und der ursprüngliche beendet.

Mit "start-stop-daemon --background" und ohne "-f" beim ssh würde der fork statt im ssh schon im start-stop-daemon passieren. Damit könnte der die richtige pid ermitteln.
Twilo hat geschrieben:Gibt es eine Möglichkeit die pid des ssh Prozesses abzufragen?
Gibt es andere Möglichkeiten den ssh-Prozess eindeutig zu identifizieren?
durchaus, z.B. mit "pidof ssh", aber das ist nicht eindeutig weil ja durchaus mehrere ssh-clients gleichzeitig laufen können. Man könnte dafür sorgen, dass von $USER nur ein Prozess läuft, dann geht sowas wie "ps --user=$USER". Oder man benutzt lsof und gibt mit der "-i"-Option den hostnamen und port des Tunnels an. Das sollte ja wirklich eindeutig sein, ungefähr so:

Code: Alles auswählen

PID=$(lsof -i4@example.org:1234 | cut -d' ' -f2)
Beware of programmers who carry screwdrivers.

Benutzeravatar
Twilo
Beiträge: 255
Registriert: 21.04.2006 00:59:40
Wohnort: Berlin

Re: pid vom ssh client

Beitrag von Twilo » 06.08.2009 22:48:20

Hallo,

ich hab es mit "--background" und ohne "-f" gelößt.

Danke!

mfg
Twilo

Antworten