如何在启动 SSH 连接之前和关闭 SSH 连接之后运行本地命令?

sil*_*oid 7 ssh bash

本质上,我想要做的是运行我创建的 Bash 脚本,该脚本在启动 SSH 连接之前和 SSH 连接关闭之后切换 WiFi SSID。

~/.ssh/config通过将 ProxyCommand 设置为 添加了此./run-script; ssh %h:%p功能,但通过这样做,我觉得它会忽略我运行 ssh 命令时传递的任何参数。另外,我不知道如何在 SSH 连接关闭时让脚本再次运行。

das*_*h-o 2

假设不可能实现“ssh”的包装器(使用别名或其他方法),则可以在 proxyCommand 中实现以下内容。

需要注意的是,没有针对多次调用“ssh”的保护 - 可能在特定调用期间 WIFI 已连接。此外,当特定的 ssh 终止时,由于其他未决条件,WIFI 可能必须保持活动状态。

代理脚本的可能实现是 ProxyCommand /path/to/run-script %h %p

#! /bin/sh
pre-command      # connect to WIFI
nc -N "$1" "$2"     # Tunnel, '%h' and '%p' are passed in
post-command     # Disconnect WIFI
Run Code Online (Sandbox Code Playgroud)

您不想在代理脚本中使用简单的 ssh,因为这将转换为对“运行脚本”的另一次调用。另请注意,提供给原始 ssh 的所有选项都将由利用代理“nc”隧道的初始“ssh”会话处理。