基本上我想要做的是运行我创建的 Bash 脚本,该脚本在开始 SSH 连接之前和 SSH 连接关闭之后切换 WiFi SSID。
我已将此添加到 ~/.ssh/config
通过将 ProxyCommand 设置为 ./run-script; ssh %h:%p
但是通过这样做,我觉得它会忽略我在运行 ssh 命令时传递的任何参数。另外,我不知道如何在 SSH 连接关闭时让脚本再次运行。
最佳答案
假设不可能实现“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 的所有选项都将由利用代理 'nc' 隧道的初始 'ssh' session 处理。
关于bash - 如何在开始 SSH 连接之前和 SSH 连接关闭之后运行本地命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58187257/