Это мой тест. Надеюсь, он будет полезен.
# $COMMAND is the command used to create the reverse ssh tunnel
COMMAND="ssh -p $SSH_PORT -q -N -R $REMOTE_HOST:$REMOTE_HTTP_PORT:localhost:80 $USER_NAME@$REMOTE_HOST"
# Is the tunnel up? Perform two tests:
# 1. Check for relevant process ($COMMAND)
pgrep -f -x "$COMMAND" > /dev/null 2>&1 || $COMMAND
# 2. Test tunnel by looking at "netstat" output on $REMOTE_HOST
ssh -p $SSH_PORT $USER_NAME@$REMOTE_HOST netstat -an | egrep "tcp.*:$REMOTE_HTTP_PORT.*LISTEN" \
> /dev/null 2>&1
if [ $? -ne 0 ] ; then
pkill -f -x "$COMMAND"
$COMMAND
fi
Это больше похоже на вопрос типа сервера, но вы можете использовать netstat.
что-то вроде:
# netstat -lpnt | grep 6000 | grep ssh
Это скажет вам, есть ли ssh-процесс, прослушивающий указанный порт. он также скажет вам PID этого процесса.
Если вы действительно хотите перепроверить, что процесс ssh был запущен с правильными опциями, вы можете просмотреть процесс по PID в чем-то вроде
# ps aux | grep PID
Используйте autossh . Это инструмент, предназначенный для мониторинга ssh-соединения.