Mailinglist Archive: opensuse-de (825 mails)

< Previous Next >
Hilfe bei Skript
  • From: "Alex Winzer" <alex.e-mail@xxxxxx>
  • Date: Wed, 6 Jul 2011 23:05:45 +0200
  • Message-id: <EE63BC10085A44338BEF7E583FEAD934@V5535>
Hallo,

ich hatte Mitte Mai 2011 mit Interesse das Thema "PID eines ssh-Tunnels ermitteln" hier auf der Liste mitverfolgt. Ich bin zu dem Ergebnis gekommen, dass mir der Befehl

netstat -p | awk '$NF ~ /ssh/ { sub("/ssh","", $NF); print $NF; }'

genau und immer die PID liefert, die ich brauche. Jetzt stehe ich aber vor dem Problem, dass ich diese Ausgabe in einem Skript gern in eine Variable umleiten würde, um damit zu arbeiten. Ich würde mich unheimlich freuen, wenn mir jemand einen Tipp geben kann. Bei der Gelegenheit würde ich mich auch freuen, wenn mir jemand sagen kann, wie ich das Enter-Zeichen ebenfalls weggefiltert bekomme. Im Moment bleibt $MY_PID de facte leer, enthält aber das Zeichen Hexadezimal 0A, was #13 bzw. Enter entspricht.

Mein Skript sieht im Moment so aus:

#!/bin/bash

VAL_USER=alex
PID_FILE="/var/run/tunnel.pid"

case "$1" in
open)
if test -e ${PID_FILE}; then
echo "Error: Tunnel is already opened."
exit 2
fi
echo "Tunnel will be opened ..."
su -c "ssh -fN -L 3307:127.0.0.1:3306 ssh-xxxxxx-alex@xxxxxxxxxxxx" $VAL_USER
MY_PID= netstat -p | awk '$NF ~ /ssh/ { sub("/ssh","", $NF); print $NF; }'
if test -n ${MY_PID}; then
echo ${MY_PID} > ${PID_FILE}
else
echo "Error: Tunnel not established."
exit 4
fi
;;
close)
if ! test -e ${PID_FILE}; then
echo "Error: No tunnel is opened."
exit 3
fi
echo "Tunnel will be closed ..."
rm ${PID_FILE}
;;
status)
if test -e ${PID_FILE}; then
echo "Tunnel is open (PID "$(< ${PID_FILE})")."
else
echo "Tunnel is closed."
fi
;;
*)
echo "Usage: $0 {open|close|status}"
exit 1
;;
esac

Gruß, Alex
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+unsubscribe@xxxxxxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+help@xxxxxxxxxxxx

< Previous Next >