7 个版本
0.6.9 | 2024 年 2 月 23 日 |
---|---|
0.6.6 | 2023 年 4 月 27 日 |
#4 in #connecting
72 每月下载量
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)
- http(s)
依赖项
~7-19MB
~281K SLoC