Dav*_*ser 7 networking linux ssh tunneling daemon
我想使用ssh的ControlMaster功能来共享连接以提高速度。我正在尝试编写脚本,以便我可以启动/重新启动/停止与不同主机的多个连接。
如何确定这些连接中的任何一个是否正在使用中?如果我在 ssh 会话打开时杀死它们,它就会关闭
理想情况下,我的重启脚本看起来像(伪脚本)——停止脚本在底部没有 ssh 命令的情况下是等效的:
for HOST in $HOST_LIST
do
MASTER_PID=`find_master_pid $HOST`
if $MASTER_PID
then
if `find_child_pid`
echo Connection to $HOST in use: not terminating
else
kill -SIGHUP $MASTER_PID
fi
ssh -TMNf $HOST
Run Code Online (Sandbox Code Playgroud)
小智 8
你可以简单地使用
ssh -o ControlPath=$socket -O check
Run Code Online (Sandbox Code Playgroud)
对于您打开的每个 $socket (如果将它们保存在单个目录中,则很容易)。
如果检查失败(连接不再活动),则返回 255,如果通过则返回另一个值。您可能还需要指定主机名,但是 $socket 上的 awk 不会给您任何东西:)