您可以执行以下操作,而不是使用ps检查ssh进程
创建脚本,执行以下操作并通过crontab -e将其添加到crontab
#!/bin/sh
REMOTEUSER=username
REMOTEHOST=remotehost
SSH_REMOTEPORT=22
SSH_LOCALPORT=10022
TUNNEL_REMOTEPORT=8080
TUNNEL_LOCALPORT=8080
createTunnel() {
/usr/bin/ssh -f -N -L$SSH_LOCALPORT:$REMOTEHOST:SSH_REMOTEPORT -L$TUNNEL_LOCALPORT:$REMOTEHOST:TUNNEL_REMOTEPORT $REMOTEUSER@$REMOTEHOST
if [[ $? -eq 0 ]]; then
echo Tunnel to $REMOTEHOST created successfully
else
echo An error occurred creating a tunnel to $REMOTEHOST RC was $?
fi
}
## Run the 'ls' command remotely. If it returns non-zero,then create a new connection
/usr/bin/ssh -p $SSH_LOCALPORT $REMOTEUSER@localhost ls >/dev/null 2>&1
if [[ $? -ne 0 ]]; then
echo Creating new tunnel connection
createTunnel
fi
实际上,这个脚本将打开两个端口
>端口22,用于检查隧道是否仍然存在
>端口8080,这是您可能想要使用的端口
请通过评论检查并向我发送更多问题
该脚本旨在通过SSH建立隧道,并自动检查其状态。当远程执行的`ls`命令失败时,脚本会创建新的SSH连接。它定义了远程主机、端口和隧道端口,并使用`crontab`进行定时任务。脚本适用于系统监控和保持SSH连接的稳定性。

878

被折叠的 条评论
为什么被折叠?



