bash - 如何在开始 SSH 连接之前和 SSH 连接关闭之后运行本地命令?

标签 bash ssh

基本上我想要做的是运行我创建的 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/

相关文章:

python - 如何使用 ssh 为 bitbucket/github 从私有(private)仓库下载文件?

linux - 根据另一列从 .csv 文件中提取特定列

linux - 使 awk 打印单行的特定段

linux - 当我用管道酸化运行时,如何退出 bash

java - 使用 SSH 从 Java 应用程序连接到 Hadoop

ruby-on-rails - ssh 终止后如何保持服务器在 EC2 上运行

bash - 如何将 sshpass 命令放入 bash 脚本中?

c++ - 使用 sshlib 连接时为 "Kex error : did not find one of algos diffie-hellman-group1-sha1- in list"

python - strace输出处理

linux - Guess_number 脚本将 WHILE 添加到 guess_number 中并运行它