#host #ssh #networking #detection #connecting #automatic #world

nightly bin+lib bodo_connect

一个用于连接到整个全球网络中的主机的库

7 个版本

0.6.9 2024 年 2 月 23 日
0.6.6 2023 年 4 月 27 日

#4 in #connecting

Download history 5/week @ 2024-04-03

72 每月下载量

GPL-3.0 许可证

48KB
1K SLoC

bodo_connect

  • 一个用于映射全球网络中主机的库。
  • 一个用于使用 ssh 连接到您映射中的任何主机的工具

它支持

  • 在连接之前唤醒主机。
  • 在 ssh 返回 0 之前重试连接
  • 自动子网检测,以避免不必要的跳转主机

安装

使用 cargo install bodo_connect 安装它。或者简单地使用 cargo 克隆此仓库来构建它

git clone https://github.com/topongo/bodo_connect
cd bodo_connect
cargo build --release
target/release/bodoConnect

注意

由于历史原因,此 crate 的二进制文件名为 bodoConnect 而不是 bodo_connect

特性

  • cmd: (二进制所需的) 实际运行的二进制文件
  • serde: (二进制所需的) 从 json 文件解析网络图
  • log: 启用日志记录(它不会自动设置为 Debug 级别,如果 cmd 特性未开启,则必须手动完成)
  • wake: 通过向目标网络的 master 主机发出 GET 请求或执行 wol 命令来唤醒主机

命令用法

Usage: bodoConnect [OPTIONS] <HOST> [EXTRA]...

Arguments:
  <HOST>      Host to connect to
  [EXTRA]...  Extra argument(s), if no -S or -R is used, it will be passed to the remote machine as command

Options:
      --networkmap <NETWORKMAP>  Select different networkmap.json file
  -w, --wake                     Wake host before connecting
  -t, --tty                      Pass -t parameter to ssh (force tty allocation)
  -d...                          Set verbosity level
  -q, --quiet                    Don't log anything
  -n, --dry                      Send to stdout the generated command without executing it
  -R, --rsync                    [WIP] Creates rsync commands
  -S, --sshfs                    [WIP] Creates sshfs commands
  -l, --loop                     Retry connection until ssh returns 0
  -h, --help                     Print help
  -V, --version                  Print version

网络图

关于网络图结构的简要说明

  • NetworkMap: 一系列 Subnets
  • 子网:
    • 一个物理/抽象的本地网络。它由其 subdomain 标识,并包含一个 hosts 列表(可选地,还有一个静态外部 IP 地址,eip)。
  • 主机:
    • 通过其 name 标识,该名称必须在整个网络图中是唯一的,它必须包含
      • 一个 ip 地址
      • 一个 port
      • 一个 user
    • 它可以包含一个 eport
      • 如果设置,主机将成为子网的 master,因此被认为是始终开启并对外暴露,以便接受来自外部主机的SSH连接
      • 每个子网只能有一个主主机
  • Waker:一个可选的结构体,定义了如何唤醒主机。它支持
    • http(s)
      • GET方法
      • POST方法(即将推出)
    • 网络唤醒(WOL)

网络映射示例

依赖项

~7-19MB
~281K SLoC