1 个不稳定版本
0.6.0 | 2023 年 7 月 13 日 |
---|
#55 在 #监视
27KB
659 行
jsonwatch — 类似 watch -d 但用于 JSON
jsonwatch
是一个命令行实用程序,您可以使用它来跟踪通过 shell 命令或网络(HTTP/HTTPS)API 提供的 JSON 数据的变化。 jsonwatch
会以设定的时间间隔反复从指定源请求数据,并在数据变化时显示差异。它在行为上类似于 watch(1) 与 -d
开关在纯文本数据上的工作方式,但并非同构。
已在 Debian 10、Ubuntu 18.04 和 Windows 7 上进行测试。
jsonwatch
的前两个版本保存在分支 python
和 haskell
中。
安装
预构建的 Linux 和 Windows 二进制文件可用。它们附在 发行版 页面上。
使用 Cargo 安装
cargo install jsonwatch
在 Debian 和 Ubuntu 上构建
按照说明,从源代码在最近的 Debian 和 Ubuntu 上构建 jsonwatch
的静态 Linux 二进制文件。
1. 安装 Rustup。通过 Rustup 为您的 CPU 添加稳定的 MUSL 目标。
rustup target add x86_64-unknown-linux-musl
2. 安装构建和测试依赖项。
sudo apt install build-essential expect musl-tools
3. 克隆此仓库。构建二进制文件。
git clone https://github.com/dbohdan/jsonwatch
cd jsonwatch
make test
make release-linux
为 Windows 进行交叉编译
按照说明,在最近的 Debian 和 Ubuntu 上构建 jsonwatch
的 32 位 Windows 二进制文件。
1. 安装 Rustup。通过 Rustup 添加 i686 GNU ABI Windows 目标。
rustup target add i686-pc-windows-gnu
2. 安装构建依赖项。
sudo apt install build-essential mingw-w64
3. 为交叉编译配置 Cargo。将以下内容放入 ~/.cargo/config
。
[target.i686-pc-windows-gnu]
linker = "/usr/bin/i686-w64-mingw32-gcc"
4. 克隆此仓库。构建二进制文件。
git clone https://github.com/dbohdan/jsonwatch
cd jsonwatch
make release-windows
使用示例
命令
*nix
测试 jsonwatch
。
$ jsonwatch -n 1 -c "echo '{ \"filename\": \"'\$(mktemp -u)'\"}'"
{
"filename": "/tmp/tmp.dh3Y7LJTaK"
}
2020-01-19T18:52:19+0000 .filename: "/tmp/tmp.dh3Y7LJTaK" -> "/tmp/tmp.i4s56VENEJ"
2020-01-19T18:52:20+0000 .filename: "/tmp/tmp.i4s56VENEJ" -> "/tmp/tmp.zzMUSn45Fc"
2020-01-19T18:52:21+0000 .filename: "/tmp/tmp.zzMUSn45Fc" -> "/tmp/tmp.Jj1cKt6VLr"
2020-01-19T18:52:22+0000 .filename: "/tmp/tmp.Jj1cKt6VLr" -> "/tmp/tmp.1LGk4ok8O2"
2020-01-19T18:52:23+0000 .filename: "/tmp/tmp.1LGk4ok8O2" -> "/tmp/tmp.wWulyho8Qj"
Docker 进程信息。
$ jsonwatch -c 'docker ps -a "--format={{json .}}"' -n 1
2020-01-19T18:57:20+0000
+ .Command: "\"bash\""
+ .CreatedAt: "2020-01-19 18:57:20 +0000 UTC"
+ .ID: "dce7fb2194ed"
+ .Image: "i386/ubuntu:latest"
+ .Labels: ""
+ .LocalVolumes: "0"
+ .Mounts: ""
+ .Names: "dreamy_edison"
+ .Networks: "bridge"
+ .Ports: ""
+ .RunningFor: "Less than a second ago"
+ .Size: "0B"
+ .Status: "Created"
2020-01-19T18:57:21+0000 .RunningFor: "Less than a second ago" -> "1 second ago"
2020-01-19T18:57:23+0000
.RunningFor: "1 second ago" -> "3 seconds ago"
.Status: "Created" -> "Up 1 second"
2020-01-19T18:57:24+0000
.RunningFor: "3 seconds ago" -> "4 seconds ago"
.Status: "Up 1 second" -> "Up 2 seconds"
2020-01-19T18:57:25+0000
.RunningFor: "4 seconds ago" -> "5 seconds ago"
.Status: "Up 2 seconds" -> "Up 3 seconds"
Windows
在 Windows 上 -c
执行 cmd.exe
命令。
> jsonwatch -c "type tests\weather1.json"
{
"clouds": {
"all": 92
},
"name": "Kiev",
"coord": {
"lat": 50.43,
"lon": 30.52
},
"sys": {
"country": "UA",
"message": 0.0051,
"sunset": 1394985874,
"sunrise": 1394942901
},
"weather": [
{
"main": "Snow",
"id": 612,
"icon": "13d",
"description": "light shower sleet"
},
{
"main": "Rain",
"id": 520,
"icon": "09d",
"description": "light intensity shower rain"
}
],
"rain": {
"3h": 2
},
"base": "cmc stations",
"dt": 1394979003,
"main": {
"pressure": 974.8229,
"humidity": 91,
"temp_max": 277.45,
"temp": 276.45,
"temp_min": 276.15
},
"id": 703448,
"wind": {
"speed": 10.27,
"deg": 245.507
},
"cod": 200
}
2020-01-19T18:51:04+0000 + .test: true
2020-01-19T18:51:10+0000 .test: true -> false
2020-01-19T18:51:23+0000 - .test: false
URLs
在*nix和Windows上观察URL的工作方式相同。
天气追踪。
$ jsonwatch -u http://api.openweathermap.org/data/2.5/weather\?q\=Kiev,ua --no-initial-values -n 300
2014-03-17T23:06:19.073790
+ .rain.1h: 0.76
- .rain.3h: 0.5
.dt: 1395086402 -> 1395089402
.main.temp: 279.07 -> 278.66
.main.temp_max: 279.82 -> 280.15
.main.temp_min: 277.95 -> 276.05
.sys.message: 0.0353 -> 0.0083
地理位置。(在移动设备上尝试此操作。)
$ jsonwatch -u https://ipinfo.io/ --no-initial-values -n 300
许可证
jsonwatch
遵循MIT许可证分发。有关详细信息,请参阅文件LICENSE
。 Wapp版权(c)2017 D. Richard Hipp,并遵循简化版BSD许可证分发。
依赖项
~6MB
~119K SLoC