linux - 完成使用后如何终止端口转发

标签 linux bash ssh unison

为了同步我的家庭和工作文件系统,我需要通过一台中间计算机并使用端口转发。让我们称家庭计算机 A、中间计算机 B 和工作计算机 C。我从命令行执行此操作

ssh -N -f -L 2025:C:22 me_B@B && unison foo ssh://me_C@localhost:2025/foo
  • 我想将这个单行代码放入 bash 脚本中。我怎样才能让它在最后优雅地退出并且不留下任何端口转发仍然设置?

最佳答案

ssh -N -f -L 2025:C:22 me_B@B &
pid=$! # ssh PID
rc=$? # ssh return code

# set up to kill ssh when this script finishes
function finish {
  kill $pid
}
trap finish EXIT

[ $rc -eq 0 ] && unison foo ssh://me_C@localhost:2025/foo

关于linux - 完成使用后如何终止端口转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26505294/

相关文章:

bash - 使用 GNU Parallel 并行化嵌套 for 循环

arrays - 对 bash 脚本中的每个文件使用 exec

java - Jenkins 中算法协商失败

PHP Sendmail 队列优先级

linux - 连接每四个文件,Linux

linux - 使用 shell 脚本合并最近 7 天的日志文件

git - 具有 ssh 访问 bitbucket : Permission denied (publickey). fatal error 的 Jenkins git 插件:无法从远程存储库读取

linux - 多跳 ssh 隧道后 ssh 进入远程主机

java - 如何使用runtime.getruntime().exec知道天气服务器已经启动

python - 如何从搜索中排除可能正在使用或被复制到 python 中的文件?