4 个版本
0.1.3 | 2024 年 6 月 14 日 |
---|---|
0.1.2 | 2024 年 6 月 13 日 |
0.1.1 | 2024 年 6 月 13 日 |
0.1.0 | 2024 年 6 月 13 日 |
#202 在 文本处理
42KB
811 代码行
SSH ping
基于 SSH 的 ping 工具,用于测量交互式字符回声延迟和文件传输吞吐量。发音为 "shipping"。
是原始 ssh-ping 在 Rust 中的延续和改进。
安装
Cargo
sshping
已发布在 crates.io,您可以使用 cargo 安装它(首先需要安装 Rust 工具链)
cargo install sshping
您也可以选择启用 include-openssl
功能,以便将 OpenSSL 打包到二进制文件中,以应对系统 OpenSSL 不可用的情况
cargo install sshping -F include-openssl
预构建的二进制文件
预构建的二进制文件可在 版本页面 上找到。您可以为您的平台下载二进制文件,并将其放入您的 $PATH
中。
请注意,所有预构建的二进制文件都是启用 include-openssl
功能构建的,因此它们是自包含的,不需要在系统上安装 OpenSSL。
从源代码安装
要从源代码安装,您首先可以克隆存储库
git clone [email protected]:TeddyHuang-00/sshping.git
# Or
git clone https://github.com/TeddyHuang-00/sshping.git
# Then
cd sshping
然后使用 cargo 构建和安装它
cargo install --path .
与 include-openssl
功能一样,您也可以在从源代码安装时启用它
cargo install --path . -F include-openssl
用法
Usage: sshping [OPTIONS] <TARGET>
Arguments:
<TARGET> [user@]host[:port]
Options:
-f, --config <FILE> Read the ssh config file FILE for options [default:
~/.ssh/config]
-i, --identity <FILE> Use identity FILE, i.e., ssh private key file
-p, --password <PWD> Use password PWD for authentication (not recommended)
-T, --ssh-timeout <SECONDS> Time limit for ssh connection in seconds [default: 10]
-r, --run-tests <TEST> Run TEST [default: both] [possible values: echo, speed,
both]
-c, --char-count <COUNT> Number of characters to echo [default: 1000]
-e, --echo-cmd <CMD> Use CMD for echo command [default: "cat > /dev/null"]
-t, --echo-timeout <SECONDS> Time limit for echo test in seconds
-s, --size <SIZE> File SIZE for speed test [default: 8.0MB]
-u, --chunk-size <CHUNK_SIZE> Chunk SIZE for splitting file in speed test [default: 1.0MB]
-z, --remote-file <FILE> Remote FILE path for speed tests [default:
/tmp/sshping-test.tmp]
-b, --table-style <STYLE> Table style for output [default: ascii] [possible values:
empty, blank, ascii, psql, markdown, modern, sharp,
extended, dots, rst, rounded, ascii-rounded, modern-rounded]
-d, --delimiter <DELIMITER> Specify delimiters to use (or None for not using) in big
numbers [default: ,]
-H, --human-readable Use human-friendly units
-k, --key-wait Wait for keyboard input before exiting
-v, --verbose... Show verbose output, use multiple for more noise
-h, --help Print help (see more with '--help')
-V, --version Print version
示例
以人类可读的输出和现代表格风格(圆角)ping SSH 配置中的主机
$ sshping OverLAN -H -b modern-rounded
╭─────────┬───────────────┬─────────────╮
│ Test │ Metric │ Result │
├─────────┼───────────────┼─────────────┤
│ SSH │ Connect time │ 49ms 775us │
├─────────┼───────────────┼─────────────┤
│ │ Average │ 177us 731ns │
│ ├───────────────┼─────────────┤
│ │ Std deviation │ 59us 706ns │
│ ├───────────────┼─────────────┤
│ Latency │ Median │ 203us 263ns │
│ ├───────────────┼─────────────┤
│ │ Minimum │ 11us 387ns │
│ ├───────────────┼─────────────┤
│ │ Maximum │ 270us 20ns │
├─────────┼───────────────┼─────────────┤
│ │ Upload │ 153 MB/s │
│ Speed ├───────────────┼─────────────┤
│ │ Download │ 89.2 MB/s │
╰─────────┴───────────────┴─────────────╯
以用户名和端口 ping 某个主机,使用 _
作为分隔符并指定特定的身份文件
$ sshping user@host:7890 -i ~/.ssh/id_rsa -d _
+---------+---------------+-----------------+
| Test | Metric | Result |
+---------+---------------+-----------------+
| SSH | Connect time | 49_725_720ns |
+---------+---------------+-----------------+
| | Average | 10_268ns |
| +---------------+-----------------+
| | Std deviation | 3_055ns |
| +---------------+-----------------+
| Latency | Median | 9_773ns |
| +---------------+-----------------+
| | Minimum | 8_075ns |
| +---------------+-----------------+
| | Maximum | 40_603ns |
+---------+---------------+-----------------+
| | Upload | 127_897_360 B/s |
| Speed +---------------+-----------------+
| | Download | 94_500_777 B/s |
+---------+---------------+-----------------+
贡献
欢迎贡献!请随意打开一个问题或拉取请求。从错误报告到功能请求到代码贡献,我们都很感激。
目前,还有一些可以添加但尚未添加的功能。如果您想帮忙但不知道从何开始,您可以查看以下列表
- 表格样式定制
- 单元测试
- 手册页生成
- Shell 自动完成脚本生成
- 针对各种平台的打包
- 更多 SSH 测试
- 更好的错误处理
- 代码优化
常见问题解答
如何使用公私钥对进行身份验证?
建议使用公私钥对,您可以通过 -i
参数提供身份文件(私钥)路径,或者通过将身份文件添加到您的 ssh agent 来使用代理认证
# Start SSH agent if you haven't already
eval `ssh-agent -s`
# Add identity to agent (assuming it is `~/.ssh/id_rsa`)
ssh-add ~/.ssh/id_rsa
为什么 SSH 不支持 XXX 功能?
由于上游库的限制,许多功能(如 ProxyJump
和 BindAddress
)目前不支持。
如果它们在上游库中得到了实现,它们也将被添加到这个项目中。或者您也可以打开一个 pull request 来自己添加它们!
为什么我的 SSH 配置文件中的所有身份文件都没有被使用?
如果配置文件中提供了多个身份文件,只有第一个将被使用。这是一个为了保持实现简单而做出的有偏见的设计选择。
依赖项
~9-20MB
~290K SLoC