基本上,我想做的是运行一个我创建的Bash脚本,该脚本在开始SSH连接之前和在SSH连接关闭之后切换WiFi SSID。
我通过将ProxyCommand设置为~/.ssh/config
将其添加到./run-script; ssh %h:%p
中,但是这样做,我感觉它会忽略我在运行ssh命令时传递的任何参数。另外,我不知道如何在SSH连接关闭时使脚本再次运行。
答案 0 :(得分:1)
假设无法实现“ 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
您不想在代理脚本中使用简单的ssh,因为这将转换为对“运行脚本”的另一个调用。还要注意,提供给原始ssh的所有选项将由初始的“ ssh”会话处理,该会话将利用代理“ nc”隧道。
答案 1 :(得分:1)
对于OpenSSH,您可以在ssh配置(LocalCommand
)中指定一个~/.ssh/config
。
但是要使其正常工作,您还需要系统范围的选项(在/etc/ssh/ssh_config
中)PermitLocalCommand
至yes
。 (默认情况下,它设置为no
。)
它在身份验证之后但在启动远程外壳程序之前在本地计算机上执行。
不过,在关闭连接后似乎没有(简单)的执行方法。