我从 BASH 脚本启动 ssh 会话。因此,根本不需要控制台。(这是反向 SSH 所必需的)。
我需要 SSH 会话:
- 脚本完成后保持活动;
- 从另一个脚本终止它(当然是在某些条件下);
正在考虑虚拟终端会话(可能使用 cat...),但不知道如何操作,或者可能有另一种“正确”的方法来做到这一点。
TNX(提前)!
答案1
我假设您正在尝试维护 SSH 隧道。有很多方法可以做到这一点,但我不知道是否有“正确”的方法,因为这在很大程度上取决于您实际要实现的目标。
一种方法(较简单的方法之一)是在屏幕中启动 SSH 会话,为其指定一个唯一名称,然后使用屏幕的命令终止它。以下是执行此操作的示例脚本:
#!/bin/bash
SCREENNAME="the_great_ssh_tunnel"
SSHCOMMAND="ssh -N -R ...."
case "$1" in
start)
if screen -ls|grep -q "$SCREENNAME"; then
echo "Already running."
else
screen -m -d -S "$SCREENNAME" $SSHCOMMAND
echo "Started."
fi
;;
stop)
if screen -ls|grep -q "$SCREENNAME"; then
echo "Stopping"
screen -S "$SCREENNAME" -X kill
else
echo "Not running"
fi
;;
isrunning)
if screen -ls|grep -q "$SCREENNAME"; then
echo "Running."
else
echo "Not running."
fi
;;
esac
如果您具有 root 访问权限,您可能希望将其转换为 systemd 单元。