#json #命令行 #数据 #监视 #跟踪 #命令行工具 #间隔

bin+lib jsonwatch

通过命令行跟踪 JSON 数据的变化

1 个不稳定版本

0.6.0 2023 年 7 月 13 日

#55#监视

MIT 许可证

27KB
659

jsonwatch — 类似 watch -d 但用于 JSON

jsonwatch 是一个命令行实用程序,您可以使用它来跟踪通过 shell 命令或网络(HTTP/HTTPS)API 提供的 JSON 数据的变化。 jsonwatch 会以设定的时间间隔反复从指定源请求数据,并在数据变化时显示差异。它在行为上类似于 watch(1)-d 开关在纯文本数据上的工作方式,但并非同构。

已在 Debian 10、Ubuntu 18.04 和 Windows 7 上进行测试。

jsonwatch 的前两个版本保存在分支 pythonhaskell 中。

安装

预构建的 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许可证分发。有关详细信息,请参阅文件LICENSEWapp版权(c)2017 D. Richard Hipp,并遵循简化版BSD许可证分发。

依赖项

~6MB
~119K SLoC