19 个版本
0.9.2 | 2024年4月14日 |
---|---|
0.9.0 | 2022年11月19日 |
0.8.0 | 2022年5月24日 |
0.7.7 | 2021年12月14日 |
0.3.0 | 2020年11月22日 |
#605 in 命令行工具
18KB
136 行
connchk
关于
connchk
是一个用 Rust 编写的命令行网络验证工具。它旨在提供一个跨平台的工具,可以验证您的宿主是否能够访问在 TOML 文档中定义的目标。以下是对这些宿主的检查方式:
- 对于纯 TCP 宿主,打开 TcpStream 或返回相关错误
- 对于 HTTP(S) 宿主,有以下两种情况:
- 基本检查如果返回状态码 200 则声明成功
- 自定义检查基于用户定义的状态码,针对表单编码数据的 POST 进行声明
- 或
- JSON 主体
- 在任意情况下,都会将错误返回给用户
应用程序期望正好一个参数,即定义目标宿主的 TOML 文档。
从版本 0.5.0 开始,也可以将 connchk
作为 Rust 库使用。文档可在 此处 查找。
安装
要获取 connchk
,请在已安装 Cargo 的系统上运行 cargo install connchk
。
示例 TOML 配置
# example.toml
[[target]]
kind = "Tcp"
desc = "GitLab SSH"
addr = "gitlab.com:22"
[[target]]
kind = "Tcp"
desc = "Freenode IRC"
addr = "irc.freenode.net:6667"
[[target]]
kind = "Tcp"
desc = "httpbin IP endpoint"
addr = "https://httpbin.org/ip"
# Posts as a form and reports success if the status code returned is 400
# which it will be for this bad request to this particular endpoint
[[target]]
kind = "Http"
desc = "httpbin POST endpoint (form)"
addr = "https://httpbin.org/status/undefined"
custom = { params = { someKey = "SpecialValue" }, ok = 400 }
# Posts as JSON and reports success if the status code returned is 400
# as it will be for this particular endpoint
[[target]]
kind = "Http"
desc = "httpbin JSON endpoint"
addr = "https://httpbin.org/status/400"
custom = { json = { someKey = "SpecialValue" }, ok = 400 }
# An example failure - this endpoing will return a 502 status code,
# but our configuration expects a 400
[[target]]
kind = "Http"
desc = "httpbin JSON endpoint - Error"
addr = "https://httpbin.org/status/502"
custom = { json = { someKey = [3, "AnotherValue", false], anotherKey = { nested = "value", count = [1, 2, 3] } }, ok = 400 }
示例用法
$ ./connchk example.toml
Successfully connected to GitLab SSH in 72ms
Successfully connected to Freenode IRC in 176ms
Successfully connected to httpbin IP endpoint in 648ms
Successfully connected to httpbin POST endpoint (form) in 666ms
Successfully connected to httpbin JSON endpoint in 647ms
Failed to connect to httpbin JSON endpoint - Error with:
Status: 502
Details:
JSON 主体
配置文件的 TOML 结构与 JSON 之间的映射非常干净。定义 JSON 主体应该与以下类似:custom = { json = <Your JSON Here> }
。虽然已经对这种情况进行了合理的测试,但不太可能探索所有可能性,所以如果在使用过程中遇到问题,请告知。
主要变更
- v0.9.0 将参数解析升级到
clap
v4.x。 - v0.8.0 将参数解析升级到
clap
v3.x。 - v0.7.0
- 将项目改为 Apache 2.0 / MIT 双重许可。
- 为clap添加了依赖项以进行参数解析。
- v0.6.0
- 重构了
TcpResource
和HttpResource
结构体,使用ResType
枚举区分不同的Resource
类型。 - 添加了
Resource.kind
来存储ResType
变体。 - 修改了
NetworkResources
,使其在NetworkResources.target
中持有Vec<Resources>
- 以上更改与所有现有配置文件都是不兼容的。用户应
- 将所有
[[http]]
或[[tcp]]
行替换为[[target]]
- 在之前以
[[http]]
开始的任何块中添加kind = "Http"
- 在之前以
[[tcp]]
开始的任何块中添加kind = "Tcp"
- 将所有
- 更新了Cargo.toml和Cargo.lock中的依赖项
- 将调用延迟添加到成功输出
- 更新逻辑以在打印结果时保持资源顺序
- 重构了
- v0.5.0
- 重构以生成二进制和库crate
- 创建了一个通用的
Resource
结构体,将TcpResource
和HttpResources
映射到由rayon
的par_iter()
消费 - 成功或失败消息的显示顺序可能与TOML输入文件中定义的顺序不一致
- v0.4.0
- 添加了对
rayon
的使用以支持并行连接执行
- 添加了对
- v0.3.0
- 添加了对JSON请求体的支持。
- 删除了“不良”状态码的声明。自定义测试仅定义预期的良好状态码。
- v0.2.1修复了错误处理,使测试不会在第一次失败时终止
- v0.2.0禁用了默认的
reqwest
功能,以将包移动到使用rustls
而不是native-tls
许可协议
根据您的选择,许可协议为以下之一
- Apache License,版本2.0,(LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可协议(LICENSE-MIT或http://opensource.org/licenses/MIT)
。
贡献
除非您明确声明,否则根据Apache-2.0许可协议定义,您提交的任何旨在包含在作品中的贡献,都将按上述方式双重许可,无需任何附加条款或条件。
版权所有(C) 2020-2024 安东尼·马丁内斯
依赖项
~6–18MB
~271K SLoC