mirror of
https://github.com/kellyjonbrazil/jc.git
synced 2026-04-03 17:44:07 +02:00
Compare commits
211 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e05be3f08b | ||
|
|
789f0735df | ||
|
|
34bc775317 | ||
|
|
38de059a1b | ||
|
|
304ae6268f | ||
|
|
978caf4522 | ||
|
|
17df5bfcfc | ||
|
|
5e6a5068cf | ||
|
|
619de68a61 | ||
|
|
6748c3cc91 | ||
|
|
0a462978b7 | ||
|
|
e66a82ff49 | ||
|
|
f3aa797d96 | ||
|
|
e5b478218c | ||
|
|
35e0e9c32a | ||
|
|
17c3c2f029 | ||
|
|
cf83e6398b | ||
|
|
94e061b881 | ||
|
|
720480e39c | ||
|
|
82a63fe159 | ||
|
|
9c1ec9940e | ||
|
|
f23f19da45 | ||
|
|
aea2e1b0a9 | ||
|
|
7d95d679bf | ||
|
|
b3b140066b | ||
|
|
b204c423c1 | ||
|
|
d451c309bb | ||
|
|
01d53da68e | ||
|
|
53dd05e52c | ||
|
|
ab564f5be8 | ||
|
|
00c39450f9 | ||
|
|
f611d08b50 | ||
|
|
90e79b7df3 | ||
|
|
4eb2d725d5 | ||
|
|
51ae5ebcac | ||
|
|
9ecbdb0916 | ||
|
|
b3a2886fd0 | ||
|
|
ceacec0f46 | ||
|
|
ff0f794b01 | ||
|
|
70fafbf3f8 | ||
|
|
5a248a8fc5 | ||
|
|
4a3a4e10df | ||
|
|
c27bd5ff39 | ||
|
|
f804c9627f | ||
|
|
3ab25d02f9 | ||
|
|
9e80fd2b97 | ||
|
|
ff9527a098 | ||
|
|
7dac2f8dc3 | ||
|
|
32e4d55e86 | ||
|
|
f9a9062147 | ||
|
|
89e5919796 | ||
|
|
e5f5b2591d | ||
|
|
77c667eec0 | ||
|
|
b257ce8c2f | ||
|
|
c693c868ca | ||
|
|
6f98b27a05 | ||
|
|
d7efd25d88 | ||
|
|
2cddb1f0bb | ||
|
|
ae1c331595 | ||
|
|
bc97052ed4 | ||
|
|
6c3e0e2aa0 | ||
|
|
dd052e0146 | ||
|
|
54e8f58145 | ||
|
|
def7aa5764 | ||
|
|
6986c74f6d | ||
|
|
b784db404d | ||
|
|
8aee4517bb | ||
|
|
a5fb8fbf94 | ||
|
|
b9365e2ac2 | ||
|
|
696338c1a3 | ||
|
|
4f0616190b | ||
|
|
3278cb0de3 | ||
|
|
4fc04256a5 | ||
|
|
e4ae0fea63 | ||
|
|
d3727ea090 | ||
|
|
0d13909cf6 | ||
|
|
c52ca20e28 | ||
|
|
21f27f26c8 | ||
|
|
5e7a87f397 | ||
|
|
845d763829 | ||
|
|
f5c7d52ec7 | ||
|
|
c3198a5874 | ||
|
|
bbd4afa735 | ||
|
|
ae754a84bf | ||
|
|
3389eb5deb | ||
|
|
01f2c1e71f | ||
|
|
8bfbf8f1bc | ||
|
|
f4242669ba | ||
|
|
bebd9331f1 | ||
|
|
ac61e9ad2c | ||
|
|
648ef4d8a9 | ||
|
|
727fc9a701 | ||
|
|
306512d6bb | ||
|
|
6afb1d389c | ||
|
|
9861983481 | ||
|
|
ca79053db0 | ||
|
|
29c263f878 | ||
|
|
128c3c170a | ||
|
|
a531ab8864 | ||
|
|
0c1be7cc11 | ||
|
|
e4222b45f5 | ||
|
|
ac32c69c31 | ||
|
|
cb2dfeac8d | ||
|
|
9a3602e70b | ||
|
|
a9f53ee258 | ||
|
|
6be3d3d982 | ||
|
|
e49df72083 | ||
|
|
7ede7be7bf | ||
|
|
4758e28a36 | ||
|
|
4a1ee151b3 | ||
|
|
8c8afc1a92 | ||
|
|
ed205f7720 | ||
|
|
d65f7ae992 | ||
|
|
e2ffef57b9 | ||
|
|
002caa9fb3 | ||
|
|
b7c6faf3da | ||
|
|
554ca61d17 | ||
|
|
7b9722d255 | ||
|
|
5505bde8ef | ||
|
|
dbcd9a4060 | ||
|
|
4bdeb2b3aa | ||
|
|
6ae1d03187 | ||
|
|
f75b06abe4 | ||
|
|
1923925710 | ||
|
|
2c5c57ae04 | ||
|
|
f4d11d697e | ||
|
|
7f409b7082 | ||
|
|
937fa5aad2 | ||
|
|
19dcef5135 | ||
|
|
3d01356461 | ||
|
|
2d6f666fa4 | ||
|
|
4dda895f12 | ||
|
|
52617b1722 | ||
|
|
961968a0fc | ||
|
|
f026a788e5 | ||
|
|
2f7c03eb35 | ||
|
|
3afaa48eee | ||
|
|
3201452564 | ||
|
|
7ee1e34fc7 | ||
|
|
67dbf05016 | ||
|
|
4ac9f2e3da | ||
|
|
3f5f6e39a7 | ||
|
|
4723db8e3c | ||
|
|
ca914ec77d | ||
|
|
dcc7f3f357 | ||
|
|
cbdc666236 | ||
|
|
184ef3a1fa | ||
|
|
c732f75944 | ||
|
|
7a1ae4f5fc | ||
|
|
d04bc3757c | ||
|
|
73e8391653 | ||
|
|
f6c1463c15 | ||
|
|
d392c7f901 | ||
|
|
d0387f5820 | ||
|
|
76f92908a3 | ||
|
|
1a115da67b | ||
|
|
f0a37ccf30 | ||
|
|
f331f53a53 | ||
|
|
8611aff06b | ||
|
|
2f3f78e8d3 | ||
|
|
d1e0ee6123 | ||
|
|
45314c9808 | ||
|
|
df00945b46 | ||
|
|
fda0050d86 | ||
|
|
a76d46f9ec | ||
|
|
6b069a82d0 | ||
|
|
6b793d0521 | ||
|
|
ce9103f7cc | ||
|
|
671d6dee36 | ||
|
|
49929c714c | ||
|
|
2986771f07 | ||
|
|
520082d963 | ||
|
|
021e296d45 | ||
|
|
42e56fbcea | ||
|
|
a5b62a4055 | ||
|
|
be98c9b7f6 | ||
|
|
aceeb84507 | ||
|
|
1391063217 | ||
|
|
52157addd0 | ||
|
|
ec0bc6615e | ||
|
|
2f80800e38 | ||
|
|
3959d3347c | ||
|
|
b57d25c69a | ||
|
|
63e43a7cab | ||
|
|
21719f9a26 | ||
|
|
96ec70de4f | ||
|
|
a15a1967dc | ||
|
|
a10d756629 | ||
|
|
0700dc7a64 | ||
|
|
ca654b2140 | ||
|
|
4ff3b87c1c | ||
|
|
ea244fb7a9 | ||
|
|
8061f30e6f | ||
|
|
8f3b12e81e | ||
|
|
d0694ce0db | ||
|
|
0cd4c4bc7f | ||
|
|
12f90c349c | ||
|
|
26b8a1f167 | ||
|
|
3abe382c06 | ||
|
|
1e2edc2c7b | ||
|
|
5fe032a674 | ||
|
|
e825c02df1 | ||
|
|
a4a4d170b5 | ||
|
|
d0fcd523cb | ||
|
|
f72b7dc75d | ||
|
|
4101dc6bf7 | ||
|
|
ea5011b616 | ||
|
|
d6de81747f | ||
|
|
38f04b1c96 | ||
|
|
84169e1a91 | ||
|
|
1f96586a5e |
26
CHANGELOG
26
CHANGELOG
@@ -1,5 +1,31 @@
|
||||
jc changelog
|
||||
|
||||
20220325 v1.18.6
|
||||
- Add pidstat command parser tested on linux
|
||||
- Add pidstat command streaming parser tested on linux
|
||||
- Add mpstat command parser tested on linux
|
||||
- Add mpstat command streaming parser tested on linux
|
||||
- Add single-line ASCII and Unicode table parser
|
||||
- Add multi-line ASCII and Unicode table parser
|
||||
- Add documentation option to parser_info() and all_parser_info()
|
||||
|
||||
20220305 v1.18.5
|
||||
- Fix date parser to ensure AM/PM period string is always uppercase
|
||||
|
||||
20220304 v1.18.4
|
||||
- Add nmcli command parser tested on linux
|
||||
- Enhance parse error messages at the cli
|
||||
- Add standard and streaming parser list functions to the public API
|
||||
- Enhance python developer documentation formatting
|
||||
|
||||
20220214 v1.18.3
|
||||
- Add rsync command and log file parser tested on linux and macOS
|
||||
- Add rsync command and log file streaming parser tested on linux and macOS
|
||||
- Add xrandr command parser tested on linux
|
||||
- Enhance timestamp performance with caching and format hints
|
||||
- Refactor ignore_exceptions functionality in streaming parsers
|
||||
- Fix man page in packages
|
||||
|
||||
20220127 v1.18.2
|
||||
- Fix for plugin parsers with underscores in the name
|
||||
- Add type hints to public API functions
|
||||
|
||||
200
EXAMPLES.md
200
EXAMPLES.md
@@ -2149,6 +2149,29 @@ mount | jc --mount -p # or: jc -p mount
|
||||
}
|
||||
]
|
||||
```
|
||||
### mpstat
|
||||
```bash
|
||||
mpstat | jc --mpstat -p # or jc -p mpstat
|
||||
```
|
||||
```json
|
||||
[
|
||||
{
|
||||
"cpu": "all",
|
||||
"percent_usr": 12.94,
|
||||
"percent_nice": 0.0,
|
||||
"percent_sys": 26.42,
|
||||
"percent_iowait": 0.43,
|
||||
"percent_irq": 0.0,
|
||||
"percent_soft": 0.16,
|
||||
"percent_steal": 0.0,
|
||||
"percent_guest": 0.0,
|
||||
"percent_gnice": 0.0,
|
||||
"percent_idle": 60.05,
|
||||
"type": "cpu",
|
||||
"time": "01:58:14 PM"
|
||||
}
|
||||
]
|
||||
```
|
||||
### netstat
|
||||
```bash
|
||||
netstat -apee | jc --netstat -p # or: jc -p netstat -apee
|
||||
@@ -2387,6 +2410,47 @@ netstat -i | jc --netstat -p # or: jc -p netstat -i
|
||||
}
|
||||
]
|
||||
```
|
||||
### nmcli
|
||||
```bash
|
||||
nmcli connection show ens33 | jc --nmcli -p # or jc -p nmcli connection show ens33
|
||||
```
|
||||
```json
|
||||
[
|
||||
{
|
||||
"connection_id": "ens33",
|
||||
"connection_uuid": "d92ece08-9e02-47d5-b2d2-92c80e155744",
|
||||
"connection_stable_id": null,
|
||||
"connection_type": "802-3-ethernet",
|
||||
"connection_interface_name": "ens33",
|
||||
"connection_autoconnect": "yes",
|
||||
"ip4_address_1": "192.168.71.180/24",
|
||||
"ip4_gateway": "192.168.71.2",
|
||||
"ip4_route_1": {
|
||||
"dst": "0.0.0.0/0",
|
||||
"nh": "192.168.71.2",
|
||||
"mt": 100
|
||||
},
|
||||
"ip4_route_2": {
|
||||
"dst": "192.168.71.0/24",
|
||||
"nh": "0.0.0.0",
|
||||
"mt": 100
|
||||
},
|
||||
"ip4_dns_1": "192.168.71.2",
|
||||
"ip4_domain_1": "localdomain",
|
||||
"dhcp4_option_1": {
|
||||
"name": "broadcast_address",
|
||||
"value": "192.168.71.255"
|
||||
},
|
||||
"ip6_address_1": "fe80::c1cb:715d:bc3e:b8a0/64",
|
||||
"ip6_gateway": null,
|
||||
"ip6_route_1": {
|
||||
"dst": "fe80::/64",
|
||||
"nh": "::",
|
||||
"mt": 100
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
### ntpq
|
||||
```bash
|
||||
ntpq -p | jc --ntpq -p # or: jc -p ntpq -p
|
||||
@@ -2456,6 +2520,47 @@ cat /etc/passwd | jc --passwd -p
|
||||
}
|
||||
]
|
||||
```
|
||||
### pidstat
|
||||
```bash
|
||||
pidstat -hl | jc --pidstat -p # or jc -p pidstat -hl
|
||||
```
|
||||
```json
|
||||
[
|
||||
{
|
||||
"time": 1646859134,
|
||||
"uid": 0,
|
||||
"pid": 1,
|
||||
"percent_usr": 0.0,
|
||||
"percent_system": 0.03,
|
||||
"percent_guest": 0.0,
|
||||
"percent_cpu": 0.03,
|
||||
"cpu": 0,
|
||||
"command": "/usr/lib/systemd/systemd --switched-root --system..."
|
||||
},
|
||||
{
|
||||
"time": 1646859134,
|
||||
"uid": 0,
|
||||
"pid": 6,
|
||||
"percent_usr": 0.0,
|
||||
"percent_system": 0.0,
|
||||
"percent_guest": 0.0,
|
||||
"percent_cpu": 0.0,
|
||||
"cpu": 0,
|
||||
"command": "ksoftirqd/0"
|
||||
},
|
||||
{
|
||||
"time": 1646859134,
|
||||
"uid": 0,
|
||||
"pid": 2263,
|
||||
"percent_usr": 0.0,
|
||||
"percent_system": 0.0,
|
||||
"percent_guest": 0.0,
|
||||
"percent_cpu": 0.0,
|
||||
"cpu": 0,
|
||||
"command": "kworker/0:0"
|
||||
}
|
||||
]
|
||||
```
|
||||
### ping
|
||||
```bash
|
||||
ping 8.8.8.8 -c 3 | jc --ping -p # or: jc -p ping 8.8.8.8 -c 3
|
||||
@@ -2743,6 +2848,39 @@ rpm_qia | jc --rpm_qi -p # or: jc -p rpm -qia
|
||||
}
|
||||
]
|
||||
```
|
||||
### rsync
|
||||
```bash
|
||||
rsync -i -a source/ dest | jc --rsync -p # or jc -p rsync -i -a source/ dest
|
||||
```
|
||||
```json
|
||||
[
|
||||
{
|
||||
"summary": {
|
||||
"sent": 1708,
|
||||
"received": 8209,
|
||||
"bytes_sec": 19834.0,
|
||||
"total_size": 235,
|
||||
"speedup": 0.02
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"filename": "./",
|
||||
"metadata": ".d..t......",
|
||||
"update_type": "not updated",
|
||||
"file_type": "directory",
|
||||
"checksum_or_value_different": false,
|
||||
"size_different": false,
|
||||
"modification_time_different": true,
|
||||
"permissions_different": false,
|
||||
"owner_different": false,
|
||||
"group_different": false,
|
||||
"acl_different": false,
|
||||
"extended_attribute_different": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
```
|
||||
### sfdisk
|
||||
```bash
|
||||
sfdisk -l | jc --sfdisk -p # or jc -p sfdisk -l
|
||||
@@ -3751,6 +3889,68 @@ cat cd_catalog.xml | jc --xml -p
|
||||
}
|
||||
}
|
||||
```
|
||||
### xrandr
|
||||
```bash
|
||||
$ xrandr | jc --xrandr -p # or jc -p xrandr
|
||||
```
|
||||
```json
|
||||
{
|
||||
"screens": [
|
||||
{
|
||||
"screen_number": 0,
|
||||
"minimum_width": 8,
|
||||
"minimum_height": 8,
|
||||
"current_width": 1920,
|
||||
"current_height": 1080,
|
||||
"maximum_width": 32767,
|
||||
"maximum_height": 32767,
|
||||
"associated_device": {
|
||||
"associated_modes": [
|
||||
{
|
||||
"resolution_width": 1920,
|
||||
"resolution_height": 1080,
|
||||
"is_high_resolution": false,
|
||||
"frequencies": [
|
||||
{
|
||||
"frequency": 60.03,
|
||||
"is_current": true,
|
||||
"is_preferred": true
|
||||
},
|
||||
{
|
||||
"frequency": 59.93,
|
||||
"is_current": false,
|
||||
"is_preferred": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"resolution_width": 1680,
|
||||
"resolution_height": 1050,
|
||||
"is_high_resolution": false,
|
||||
"frequencies": [
|
||||
{
|
||||
"frequency": 59.88,
|
||||
"is_current": false,
|
||||
"is_preferred": false
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"is_connected": true,
|
||||
"is_primary": true,
|
||||
"device_name": "eDP1",
|
||||
"resolution_width": 1920,
|
||||
"resolution_height": 1080,
|
||||
"offset_width": 0,
|
||||
"offset_height": 0,
|
||||
"dimension_width": 310,
|
||||
"dimension_height": 170
|
||||
}
|
||||
}
|
||||
],
|
||||
"unassociated_devices": []
|
||||
}
|
||||
```
|
||||
### YAML files
|
||||
```bash
|
||||
cat istio.yaml
|
||||
|
||||
32
README.md
32
README.md
@@ -1,7 +1,5 @@
|
||||

|
||||

|
||||
|
||||
> `jc` was recently featured in the [Console Open Source Newsletter](https://console.substack.com/p/console-89)
|
||||
[](https://github.com/kellyjonbrazil/jc/actions)
|
||||
[](https://pypi.org/project/jc/)
|
||||
|
||||
> Check out the `jc` Python [package documentation](https://github.com/kellyjonbrazil/jc/tree/master/docs) for developers
|
||||
|
||||
@@ -13,7 +11,7 @@ Ansible filter plugin in the `community.general` collection. See this
|
||||
for an example.
|
||||
|
||||
# JC
|
||||
JSON CLI output utility
|
||||
JSON Convert
|
||||
|
||||
`jc` JSONifies the output of many CLI tools and file-types for easier parsing in
|
||||
scripts. See the [**Parsers**](#parsers) section for supported commands and
|
||||
@@ -55,16 +53,9 @@ will be a python dictionary, or list of dictionaries, instead of JSON:
|
||||
>>> cmd_output = subprocess.check_output(['dig', 'example.com'], text=True)
|
||||
>>> data = jc.parse('dig', cmd_output)
|
||||
>>>
|
||||
>>> data
|
||||
[{'id': 64612, 'opcode': 'QUERY', 'status': 'NOERROR', 'flags': ['qr', 'rd',
|
||||
'ra'], 'query_num': 1, 'answer_num': 1, 'authority_num': 0, 'additional_num':
|
||||
1, 'opt_pseudosection': {'edns': {'version': 0, 'flags': [], 'udp': 4096}},
|
||||
'question': {'name': 'example.com.', 'class': 'IN', 'type': 'A'}, 'answer':
|
||||
>>> data[0]['answer']
|
||||
[{'name': 'example.com.', 'class': 'IN', 'type': 'A', 'ttl': 29658, 'data':
|
||||
'93.184.216.34'}], 'query_time': 52, 'server':
|
||||
'2600:1700:bab0:d40::1#53(2600:1700:bab0:d40::1)', 'when':
|
||||
'Fri Apr 16 16:13:00 PDT 2021', 'rcvd': 56, 'when_epoch': 1618614780,
|
||||
'when_epoch_utc': None}]
|
||||
'93.184.216.34'}]
|
||||
```
|
||||
|
||||
> For `jc` Python package documentation, use `help('jc')`, `help('jc.lib')`, or
|
||||
@@ -108,6 +99,7 @@ correct [binary](https://github.com/kellyjonbrazil/jc/releases) for your
|
||||
architecture and running it anywhere on your filesystem.
|
||||
|
||||
### Pip (macOS, linux, unix, Windows)
|
||||
[](https://pypi.org/project/jc/)
|
||||
```bash
|
||||
pip3 install jc
|
||||
```
|
||||
@@ -128,7 +120,7 @@ pip3 install jc
|
||||
|
||||
> For more OS Packages, see https://repology.org/project/jc/versions.
|
||||
|
||||
### Binaries and Packages
|
||||
### Binaries
|
||||
For precompiled binaries, see [Releases](https://github.com/kellyjonbrazil/jc/releases)
|
||||
on Github.
|
||||
|
||||
@@ -155,6 +147,8 @@ option.
|
||||
- `--airport` enables the `airport -I` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/airport))
|
||||
- `--airport-s` enables the `airport -s` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/airport_s))
|
||||
- `--arp` enables the `arp` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/arp))
|
||||
- `--asciitable` enables the ASCII and Unicode table parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/asciitable))
|
||||
- `--asciitable-m` enables the multi-line ASCII and Unicode table parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/asciitable_m))
|
||||
- `--blkid` enables the `blkid` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/blkid))
|
||||
- `--cksum` enables the `cksum` and `sum` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/cksum))
|
||||
- `--crontab` enables the `crontab` command and file parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/crontab))
|
||||
@@ -198,9 +192,14 @@ option.
|
||||
- `--lsof` enables the `lsof` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/lsof))
|
||||
- `--lsusb` enables the `lsusb` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/lsusb))
|
||||
- `--mount` enables the `mount` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/mount))
|
||||
- `--mpstat` enables the `mpstat` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/mpstat))
|
||||
- `--mpstat-s` enables the `mpstat` command streaming parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/mpstat_s))
|
||||
- `--netstat` enables the `netstat` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/netstat))
|
||||
- `--nmcli` enables the `nmcli` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/nmcli))
|
||||
- `--ntpq` enables the `ntpq -p` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/ntpq))
|
||||
- `--passwd` enables the `/etc/passwd` file parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/passwd))
|
||||
- `--pidstat` enables the `pidstat` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/pidstat))
|
||||
- `--pidstat-s` enables the `pidstat` command streaming parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/pidstat_s))
|
||||
- `--ping` enables the `ping` and `ping6` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/ping))
|
||||
- `--ping-s` enables the `ping` and `ping6` command streaming parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/ping_s))
|
||||
- `--pip-list` enables the `pip list` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_list))
|
||||
@@ -208,6 +207,8 @@ option.
|
||||
- `--ps` enables the `ps` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/ps))
|
||||
- `--route` enables the `route` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/route))
|
||||
- `--rpm-qi` enables the `rpm -qi` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/rpm_qi))
|
||||
- `--rsync` enables the `rsync` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/rsync))
|
||||
- `--rsync-s` enables the `rsync` command streaming parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/rsync_s))
|
||||
- `--sfdisk` enables the `sfdisk` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/sfdisk))
|
||||
- `--shadow` enables the `/etc/shadow` file parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/shadow))
|
||||
- `--ss` enables the `ss` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/ss))
|
||||
@@ -234,6 +235,7 @@ option.
|
||||
- `--wc` enables the `wc` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/wc))
|
||||
- `--who` enables the `who` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/who))
|
||||
- `--xml` enables the XML file parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/xml))
|
||||
- `--xrandr` enables the `xrandr` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/xrandr))
|
||||
- `--yaml` enables the YAML file parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/yaml))
|
||||
- `--zipinfo` enables the `zipinfo` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/zipinfo))
|
||||
|
||||
|
||||
11
docgen.sh
11
docgen.sh
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
# Generate docs.md
|
||||
# requires pydoc-markdown 4.5.0
|
||||
# requires pydoc-markdown 4.6.1
|
||||
readme_config=$(cat <<'EOF'
|
||||
{
|
||||
"processors": [
|
||||
@@ -18,7 +18,7 @@ readme_config=$(cat <<'EOF'
|
||||
"Class": 3,
|
||||
"Method": 3,
|
||||
"Function": 3,
|
||||
"Data": 3
|
||||
"Variable": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -43,7 +43,7 @@ toc_config=$(cat <<'EOF'
|
||||
"Class": 3,
|
||||
"Method": 3,
|
||||
"Function": 3,
|
||||
"Data": 3
|
||||
"Variable": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -68,7 +68,7 @@ parser_config=$(cat <<'EOF'
|
||||
"Class": 3,
|
||||
"Method": 3,
|
||||
"Function": 3,
|
||||
"Data": 3
|
||||
"Variable": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -85,6 +85,9 @@ pydoc-markdown -m jc.lib "${toc_config}" > ../docs/lib.md
|
||||
echo Building docs for: utils
|
||||
pydoc-markdown -m jc.utils "${toc_config}" > ../docs/utils.md
|
||||
|
||||
echo Building docs for: streaming
|
||||
pydoc-markdown -m jc.streaming "${toc_config}" > ../docs/streaming.md
|
||||
|
||||
echo Building docs for: universal parser
|
||||
pydoc-markdown -m jc.parsers.universal "${toc_config}" > ../docs/parsers/universal.md
|
||||
|
||||
|
||||
62
docs/lib.md
62
docs/lib.md
@@ -4,6 +4,8 @@
|
||||
* [parse](#jc.lib.parse)
|
||||
* [parser\_mod\_list](#jc.lib.parser_mod_list)
|
||||
* [plugin\_parser\_mod\_list](#jc.lib.plugin_parser_mod_list)
|
||||
* [standard\_parser\_mod\_list](#jc.lib.standard_parser_mod_list)
|
||||
* [streaming\_parser\_mod\_list](#jc.lib.streaming_parser_mod_list)
|
||||
* [parser\_info](#jc.lib.parser_info)
|
||||
* [all\_parser\_info](#jc.lib.all_parser_info)
|
||||
* [get\_help](#jc.lib.get_help)
|
||||
@@ -12,15 +14,19 @@
|
||||
|
||||
# jc.lib
|
||||
|
||||
jc - JSON CLI output utility
|
||||
JC lib module
|
||||
jc - JSON Convert lib module
|
||||
|
||||
<a id="jc.lib.parse"></a>
|
||||
|
||||
### parse
|
||||
|
||||
```python
|
||||
def parse(parser_mod_name: str, data: Union[str, Iterable[str]], quiet: bool = False, raw: bool = False, ignore_exceptions: bool = None, **kwargs) -> Union[Dict, List[Dict], Iterator[Dict]]
|
||||
def parse(parser_mod_name: str,
|
||||
data: Union[str, Iterable[str]],
|
||||
quiet: bool = False,
|
||||
raw: bool = False,
|
||||
ignore_exceptions: bool = None,
|
||||
**kwargs) -> Union[Dict, List[Dict], Iterator[Dict]]
|
||||
```
|
||||
|
||||
Parse the string data using the supplied parser module.
|
||||
@@ -34,9 +40,7 @@ Example:
|
||||
>>> jc.parse('date', 'Tue Jan 18 10:23:07 PST 2022')
|
||||
{'year': 2022, 'month': 'Jan', 'month_num': 1, 'day'...}
|
||||
|
||||
To get a list of available parser module names, use `parser_mod_list()`
|
||||
or `plugin_parser_mod_list()`. `plugin_parser_mod_list()` is a subset
|
||||
of `parser_mod_list()`.
|
||||
To get a list of available parser module names, use `parser_mod_list()`.
|
||||
|
||||
You can also use the lower-level parser modules directly:
|
||||
|
||||
@@ -100,28 +104,62 @@ def plugin_parser_mod_list() -> List[str]
|
||||
Returns a list of plugin parser module names. This function is a
|
||||
subset of `parser_mod_list()`.
|
||||
|
||||
<a id="jc.lib.standard_parser_mod_list"></a>
|
||||
|
||||
### standard\_parser\_mod\_list
|
||||
|
||||
```python
|
||||
def standard_parser_mod_list() -> List[str]
|
||||
```
|
||||
|
||||
Returns a list of standard parser module names. This function is a
|
||||
subset of `parser_mod_list()` and does not contain any streaming
|
||||
parsers.
|
||||
|
||||
<a id="jc.lib.streaming_parser_mod_list"></a>
|
||||
|
||||
### streaming\_parser\_mod\_list
|
||||
|
||||
```python
|
||||
def streaming_parser_mod_list() -> List[str]
|
||||
```
|
||||
|
||||
Returns a list of streaming parser module names. This function is a
|
||||
subset of `parser_mod_list()`.
|
||||
|
||||
<a id="jc.lib.parser_info"></a>
|
||||
|
||||
### parser\_info
|
||||
|
||||
```python
|
||||
def parser_info(parser_mod_name: str) -> Union[Dict, None]
|
||||
def parser_info(parser_mod_name: str, documentation: bool = False) -> Dict
|
||||
```
|
||||
|
||||
Returns a dictionary that includes the module metadata.
|
||||
Returns a dictionary that includes the parser module metadata.
|
||||
|
||||
This function will accept **module_name**, **cli-name**, and
|
||||
**--argument-name** variants of the module name string.
|
||||
Parameters:
|
||||
|
||||
parser_mod_name: (string) name of the parser module. This
|
||||
function will accept module_name,
|
||||
cli-name, and --argument-name
|
||||
variants of the module name.
|
||||
|
||||
documentation: (boolean) include parser docstring if True
|
||||
|
||||
<a id="jc.lib.all_parser_info"></a>
|
||||
|
||||
### all\_parser\_info
|
||||
|
||||
```python
|
||||
def all_parser_info() -> List[Optional[Dict]]
|
||||
def all_parser_info(documentation: bool = False) -> List[Dict]
|
||||
```
|
||||
|
||||
Returns a list of dictionaris that includes metadata for all modules.
|
||||
Returns a list of dictionaries that includes metadata for all parser
|
||||
modules.
|
||||
|
||||
Parameters:
|
||||
|
||||
documentation: (boolean) include parser docstrings if True
|
||||
|
||||
<a id="jc.lib.get_help"></a>
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.acpi
|
||||
|
||||
jc - JSON CLI output utility `acpi` command output parser
|
||||
jc - JSON Convert `acpi` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('acpi', acpi_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.acpi
|
||||
result = jc.parsers.acpi.parse(acpi_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.airport
|
||||
|
||||
jc - JSON CLI output utility `airport -I` command output parser
|
||||
jc - JSON Convert `airport -I` command output parser
|
||||
|
||||
The `airport` program can be found at `/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport`.
|
||||
|
||||
@@ -20,11 +20,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('airport', airport_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.airport
|
||||
result = jc.parsers.airport.parse(airport_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.airport\_s
|
||||
|
||||
jc - JSON CLI output utility `airport -s` command output parser
|
||||
jc - JSON Convert `airport -s` command output parser
|
||||
|
||||
The `airport` program can be found at `/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport`.
|
||||
|
||||
@@ -20,11 +20,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('airport_s', airport_s_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.airport_s
|
||||
result = jc.parsers.airport_s.parse(airport_s_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.arp
|
||||
|
||||
jc - JSON CLI output utility `arp` command output parser
|
||||
jc - JSON Convert `arp` command output parser
|
||||
|
||||
Supports `arp` and `arp -a` output.
|
||||
|
||||
@@ -20,11 +20,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('arp', arp_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.arp
|
||||
result = jc.parsers.arp.parse(arp_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
@@ -127,7 +122,7 @@ Examples:
|
||||
### parse
|
||||
|
||||
```python
|
||||
def parse(data, raw=False, quiet=False)
|
||||
def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict]
|
||||
```
|
||||
|
||||
Main text parsing function
|
||||
@@ -145,4 +140,4 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, aix, freebsd, darwin
|
||||
|
||||
Version 1.8 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 1.9 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
139
docs/parsers/asciitable.md
Normal file
139
docs/parsers/asciitable.md
Normal file
@@ -0,0 +1,139 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.asciitable"></a>
|
||||
|
||||
# jc.parsers.asciitable
|
||||
|
||||
jc - JSON Convert `asciitable` parser
|
||||
|
||||
This parser converts ASCII and Unicode text tables with single-line rows.
|
||||
|
||||
Column headers must be at least two spaces apart from each other and must
|
||||
be unique.
|
||||
|
||||
For example:
|
||||
|
||||
╒══════════╤═════════╤════════╕
|
||||
│ foo │ bar │ baz │
|
||||
╞══════════╪═════════╪════════╡
|
||||
│ good day │ │ 12345 │
|
||||
├──────────┼─────────┼────────┤
|
||||
│ hi there │ abc def │ 3.14 │
|
||||
╘══════════╧═════════╧════════╛
|
||||
|
||||
or
|
||||
|
||||
+-----------------------------+
|
||||
| foo bar baz |
|
||||
+-----------------------------+
|
||||
| good day 12345 |
|
||||
| hi there abc def 3.14 |
|
||||
+-----------------------------+
|
||||
|
||||
or
|
||||
|
||||
| foo | bar | baz |
|
||||
|----------|---------|--------|
|
||||
| good day | | 12345 |
|
||||
| hi there | abc def | 3.14 |
|
||||
|
||||
or
|
||||
|
||||
foo bar baz
|
||||
--------- -------- ------
|
||||
good day 12345
|
||||
hi there abc def 3.14
|
||||
|
||||
or
|
||||
|
||||
foo bar baz
|
||||
good day 12345
|
||||
hi there abc def 3.14
|
||||
|
||||
etc...
|
||||
|
||||
Headers (keys) are converted to snake-case. All values are returned as
|
||||
strings, except empty strings, which are converted to None/null.
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat table.txt | jc --asciitable
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('asciitable', asciitable_string)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"column_name1": string, # empty string is null
|
||||
"column_name2": string # empty string is null
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ echo '
|
||||
> ╒══════════╤═════════╤════════╕
|
||||
> │ foo │ bar │ baz │
|
||||
> ╞══════════╪═════════╪════════╡
|
||||
> │ good day │ │ 12345 │
|
||||
> ├──────────┼─────────┼────────┤
|
||||
> │ hi there │ abc def │ 3.14 │
|
||||
> ╘══════════╧═════════╧════════╛' | jc --asciitable -p
|
||||
[
|
||||
{
|
||||
"foo": "good day",
|
||||
"bar": null,
|
||||
"baz": "12345"
|
||||
},
|
||||
{
|
||||
"foo": "hi there",
|
||||
"bar": "abc def",
|
||||
"baz": "3.14"
|
||||
}
|
||||
]
|
||||
|
||||
$ echo '
|
||||
> foo bar baz
|
||||
> --------- -------- ------
|
||||
> good day 12345
|
||||
> hi there abc def 3.14' | jc --asciitable -p
|
||||
[
|
||||
{
|
||||
"foo": "good day",
|
||||
"bar": null,
|
||||
"baz": "12345"
|
||||
},
|
||||
{
|
||||
"foo": "hi there",
|
||||
"bar": "abc def",
|
||||
"baz": "3.14"
|
||||
}
|
||||
]
|
||||
|
||||
<a id="jc.parsers.asciitable.parse"></a>
|
||||
|
||||
### parse
|
||||
|
||||
```python
|
||||
def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict]
|
||||
```
|
||||
|
||||
Main text parsing function
|
||||
|
||||
Parameters:
|
||||
|
||||
data: (string) text data to parse
|
||||
raw: (boolean) unprocessed output if True
|
||||
quiet: (boolean) suppress warning messages if True
|
||||
|
||||
Returns:
|
||||
|
||||
List of Dictionaries. Raw or processed structured data.
|
||||
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
123
docs/parsers/asciitable_m.md
Normal file
123
docs/parsers/asciitable_m.md
Normal file
@@ -0,0 +1,123 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.asciitable_m"></a>
|
||||
|
||||
# jc.parsers.asciitable\_m
|
||||
|
||||
jc - JSON Convert `asciitable-m` parser
|
||||
|
||||
This parser converts various styles of ASCII and Unicode text tables with
|
||||
multi-line rows. Tables must have a header row and separator line between
|
||||
rows.
|
||||
|
||||
For example:
|
||||
|
||||
╒══════════╤═════════╤════════╕
|
||||
│ foo │ bar baz │ fiz │
|
||||
│ │ │ buz │
|
||||
╞══════════╪═════════╪════════╡
|
||||
│ good day │ 12345 │ │
|
||||
│ mate │ │ │
|
||||
├──────────┼─────────┼────────┤
|
||||
│ hi there │ abc def │ 3.14 │
|
||||
│ │ │ │
|
||||
╘══════════╧═════════╧════════╛
|
||||
|
||||
Cells with multiple lines within rows will be joined with a newline
|
||||
character ('\n').
|
||||
|
||||
Headers (keys) are converted to snake-case and newlines between multi-line
|
||||
headers are joined with an underscore. All values are returned as strings,
|
||||
except empty strings, which are converted to None/null.
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat table.txt | jc --asciitable-m
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('asciitable_m', asciitable-string)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"column_name1": string, # empty string is null
|
||||
"column_name2": string # empty string is null
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ echo '
|
||||
> +----------+---------+--------+
|
||||
> | foo | bar | baz |
|
||||
> | | | buz |
|
||||
> +==========+=========+========+
|
||||
> | good day | 12345 | |
|
||||
> | mate | | |
|
||||
> +----------+---------+--------+
|
||||
> | hi there | abc def | 3.14 |
|
||||
> | | | |
|
||||
> +==========+=========+========+' | jc --asciitable-m -p
|
||||
[
|
||||
{
|
||||
"foo": "good day\nmate",
|
||||
"bar": "12345",
|
||||
"baz_buz": null
|
||||
},
|
||||
{
|
||||
"foo": "hi there",
|
||||
"bar": "abc def",
|
||||
"baz_buz": "3.14"
|
||||
}
|
||||
]
|
||||
|
||||
$ echo '
|
||||
> ╒══════════╤═════════╤════════╕
|
||||
> │ foo │ bar │ baz │
|
||||
> │ │ │ buz │
|
||||
> ╞══════════╪═════════╪════════╡
|
||||
> │ good day │ 12345 │ │
|
||||
> │ mate │ │ │
|
||||
> ├──────────┼─────────┼────────┤
|
||||
> │ hi there │ abc def │ 3.14 │
|
||||
> │ │ │ │
|
||||
> ╘══════════╧═════════╧════════╛' | jc --asciitable-m -p
|
||||
[
|
||||
{
|
||||
"foo": "good day\nmate",
|
||||
"bar": "12345",
|
||||
"baz_buz": null
|
||||
},
|
||||
{
|
||||
"foo": "hi there",
|
||||
"bar": "abc def",
|
||||
"baz_buz": "3.14"
|
||||
}
|
||||
]
|
||||
|
||||
<a id="jc.parsers.asciitable_m.parse"></a>
|
||||
|
||||
### parse
|
||||
|
||||
```python
|
||||
def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict]
|
||||
```
|
||||
|
||||
Main text parsing function
|
||||
|
||||
Parameters:
|
||||
|
||||
data: (string) text data to parse
|
||||
raw: (boolean) unprocessed output if True
|
||||
quiet: (boolean) suppress warning messages if True
|
||||
|
||||
Returns:
|
||||
|
||||
List of Dictionaries. Raw or processed structured data.
|
||||
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.blkid
|
||||
|
||||
jc - JSON CLI output utility `blkid` command output parser
|
||||
jc - JSON Convert `blkid` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('blkid', blkid_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.blkid
|
||||
result = jc.parsers.blkid.parse(blkid_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.cksum
|
||||
|
||||
jc - JSON CLI output utility `cksum` command output parser
|
||||
jc - JSON Convert `cksum` command output parser
|
||||
|
||||
This parser works with the following checksum calculation utilities:
|
||||
- `sum`
|
||||
@@ -22,11 +22,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('cksum', cksum_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.cksum
|
||||
result = jc.parsers.cksum.parse(cksum_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.crontab
|
||||
|
||||
jc - JSON CLI output utility `crontab -l` command output and crontab
|
||||
jc - JSON Convert `crontab -l` command output and crontab
|
||||
file parser
|
||||
|
||||
Supports `crontab -l` command output and crontab files.
|
||||
@@ -21,11 +21,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('crontab', crontab_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.crontab
|
||||
result = jc.parsers.crontab.parse(crontab_output)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.crontab\_u
|
||||
|
||||
jc - JSON CLI output utility `crontab -l` command output and crontab
|
||||
jc - JSON Convert `crontab -l` command output and crontab
|
||||
file parser
|
||||
|
||||
This version of the `crontab -l` parser supports output that contains user
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('crontab_u', crontab_u_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.crontab_u
|
||||
result = jc.parsers.crontab_u.parse(crontab_u_output)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.csv
|
||||
|
||||
jc - JSON CLI output utility `csv` file parser
|
||||
jc - JSON Convert `csv` file parser
|
||||
|
||||
The `csv` parser will attempt to automatically detect the delimiter
|
||||
character. If the delimiter cannot be detected it will default to comma.
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('csv', csv_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.csv
|
||||
result = jc.parsers.csv.parse(csv_output)
|
||||
|
||||
Schema:
|
||||
|
||||
csv file converted to a Dictionary:
|
||||
|
||||
@@ -3,9 +3,10 @@
|
||||
|
||||
# jc.parsers.csv\_s
|
||||
|
||||
jc - JSON CLI output utility `csv` file streaming parser
|
||||
jc - JSON Convert `csv` file streaming parser
|
||||
|
||||
> This streaming parser outputs JSON Lines
|
||||
> This streaming parser outputs JSON Lines (cli) or returns a Generator
|
||||
iterator of Dictionaries (module)
|
||||
|
||||
The `csv` streaming parser will attempt to automatically detect the
|
||||
delimiter character. If the delimiter cannot be detected it will default
|
||||
@@ -21,19 +22,11 @@ Usage (cli):
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
# result is an iterable object (generator)
|
||||
|
||||
result = jc.parse('csv_s', csv_output.splitlines())
|
||||
for item in result:
|
||||
# do something
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.csv_s
|
||||
# result is an iterable object (generator)
|
||||
result = jc.parsers.csv_s.parse(csv_output.splitlines())
|
||||
for item in result:
|
||||
# do something
|
||||
|
||||
Schema:
|
||||
|
||||
csv file converted to a Dictionary:
|
||||
@@ -44,13 +37,11 @@ Schema:
|
||||
"column_name2": string,
|
||||
|
||||
# below object only exists if using -qq or ignore_exceptions=True
|
||||
|
||||
"_jc_meta":
|
||||
{
|
||||
"success": boolean, # false if error parsing
|
||||
"error": string, # exists if "success" is false
|
||||
"line": string # exists if "success" is false
|
||||
}
|
||||
"_jc_meta": {
|
||||
"success": boolean, # false if error parsing
|
||||
"error": string, # exists if "success" is false
|
||||
"line": string # exists if "success" is false
|
||||
}
|
||||
}
|
||||
|
||||
Examples:
|
||||
@@ -73,6 +64,7 @@ Examples:
|
||||
### parse
|
||||
|
||||
```python
|
||||
@add_jc_meta
|
||||
def parse(data, raw=False, quiet=False, ignore_exceptions=False)
|
||||
```
|
||||
|
||||
@@ -93,9 +85,9 @@ Yields:
|
||||
|
||||
Returns:
|
||||
|
||||
Iterator object
|
||||
Iterator object (generator)
|
||||
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
|
||||
|
||||
Version 1.2 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 1.3 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.date
|
||||
|
||||
jc - JSON CLI output utility `date` command output parser
|
||||
jc - JSON Convert `date` command output parser
|
||||
|
||||
The `epoch` calculated timestamp field is naive. (i.e. based on the local
|
||||
time of the system the parser is run on)
|
||||
@@ -24,11 +24,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('date', date_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.date
|
||||
result = jc.parsers.date.parse(date_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
@@ -105,4 +100,4 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, freebsd
|
||||
|
||||
Version 2.2 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 2.4 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.df
|
||||
|
||||
jc - JSON CLI output utility `df` command output parser
|
||||
jc - JSON Convert `df` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('df', df_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.df
|
||||
result = jc.parsers.df.parse(df_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.dig
|
||||
|
||||
jc - JSON CLI output utility `dig` command output parser
|
||||
jc - JSON Convert `dig` command output parser
|
||||
|
||||
Options supported:
|
||||
- `+noall +answer` options are supported in cases where only the answer
|
||||
@@ -29,11 +29,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('dig', dig_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.dig
|
||||
result = jc.parsers.dig.parse(dig_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
@@ -350,4 +345,4 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, aix, freebsd, darwin, win32, cygwin
|
||||
|
||||
Version 2.2 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 2.3 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.dir
|
||||
|
||||
jc - JSON CLI output utility `dir` command output parser
|
||||
jc - JSON Convert `dir` command output parser
|
||||
|
||||
Options supported:
|
||||
- `/T timefield`
|
||||
@@ -26,11 +26,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('dir', dir_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.dir
|
||||
result = jc.parsers.dir.parse(dir_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
@@ -148,4 +143,4 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: win32
|
||||
|
||||
Version 1.4 by Rasheed Elsaleh (rasheed@rebelliondefense.com)
|
||||
Version 1.5 by Rasheed Elsaleh (rasheed@rebelliondefense.com)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.dmidecode
|
||||
|
||||
jc - JSON CLI output utility `dmidecode` command output parser
|
||||
jc - JSON Convert `dmidecode` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('dmidecode', dmidecode_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.dmidecode
|
||||
result = jc.parsers.dmidecode.parse(dmidecode_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.dpkg\_l
|
||||
|
||||
jc - JSON CLI output utility `dpkg -l` command output parser
|
||||
jc - JSON Convert `dpkg -l` command output parser
|
||||
|
||||
Set the `COLUMNS` environment variable to a large value to avoid field
|
||||
truncation. For example:
|
||||
@@ -23,11 +23,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('dpkg_l', dpkg_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.dpkg_l
|
||||
result = jc.parsers.dpkg_l.parse(dpkg_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.du
|
||||
|
||||
jc - JSON CLI output utility `du` command output parser
|
||||
jc - JSON Convert `du` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('du', du_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.du
|
||||
result = jc.parsers.du.parse(du_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.env
|
||||
|
||||
jc - JSON CLI output utility `env` and `printenv` command output parser
|
||||
jc - JSON Convert `env` and `printenv` command output parser
|
||||
|
||||
This parser will output a list of dictionaries each containing `name` and
|
||||
`value` keys. If you would like a simple dictionary output, then use the
|
||||
@@ -23,11 +23,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('env', env_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.env
|
||||
result = jc.parsers.env.parse(env_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.file
|
||||
|
||||
jc - JSON CLI output utility `file` command output parser
|
||||
jc - JSON Convert `file` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('file', file_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.file
|
||||
result = jc.parsers.file.parse(file_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.finger
|
||||
|
||||
jc - JSON CLI output utility `finger` command output parser
|
||||
jc - JSON Convert `finger` command output parser
|
||||
|
||||
Supports `-s` output option. Does not support the `-l` detail option.
|
||||
|
||||
@@ -20,11 +20,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('finger', finger_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.finger
|
||||
result = jc.parsers.finger.parse(finger_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.free
|
||||
|
||||
jc - JSON CLI output utility `free` command output parser
|
||||
jc - JSON Convert `free` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('free', free_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.free
|
||||
result = jc.parsers.free.parse(free_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.fstab
|
||||
|
||||
jc - JSON CLI output utility `fstab` file parser
|
||||
jc - JSON Convert `fstab` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -14,11 +14,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('fstab', fstab_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.fstab
|
||||
result = jc.parsers.fstab.parse(fstab_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.group
|
||||
|
||||
jc - JSON CLI output utility `/etc/group` file parser
|
||||
jc - JSON Convert `/etc/group` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -14,11 +14,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('group', group_file_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.group
|
||||
result = jc.parsers.group.parse(group_file_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.gshadow
|
||||
|
||||
jc - JSON CLI output utility `/etc/gshadow` file parser
|
||||
jc - JSON Convert `/etc/gshadow` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -14,11 +14,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('gshadow', gshadow_file_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.gshadow
|
||||
result = jc.parsers.gshadow.parse(gshadow_file_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.hash
|
||||
|
||||
jc - JSON CLI output utility `hash` command output parser
|
||||
jc - JSON Convert `hash` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -14,11 +14,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('hash', hash_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.hash
|
||||
result = jc.parsers.hash.parse(hash_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.hashsum
|
||||
|
||||
jc - JSON CLI output utility `hash sum` command output parser
|
||||
jc - JSON Convert `hash sum` command output parser
|
||||
|
||||
This parser works with the following hash calculation utilities:
|
||||
- `md5`
|
||||
@@ -28,11 +28,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('hashsum', md5sum_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.hashsum
|
||||
result = jc.parsers.hashsum.parse(md5sum_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.hciconfig
|
||||
|
||||
jc - JSON CLI output utility `hciconfig` command output parser
|
||||
jc - JSON Convert `hciconfig` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('hciconfig', hciconfig_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.hciconfig
|
||||
result = jc.parsers.hciconfig.parse(hciconfig_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.history
|
||||
|
||||
jc - JSON CLI output utility `history` command output parser
|
||||
jc - JSON Convert `history` command output parser
|
||||
|
||||
This parser will output a list of dictionaries each containing `line` and
|
||||
`command` keys. If you would like a simple dictionary output, then use the
|
||||
@@ -22,11 +22,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('history', history_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.history
|
||||
result = jc.parsers.history.parse(history_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.hosts
|
||||
|
||||
jc - JSON CLI output utility `/etc/hosts` file parser
|
||||
jc - JSON Convert `/etc/hosts` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -14,11 +14,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('hosts', hosts_file_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.hosts
|
||||
result = jc.parsers.hosts.parse(hosts_file_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.id
|
||||
|
||||
jc - JSON CLI output utility `id` command output parser
|
||||
jc - JSON Convert `id` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('id', id_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.id
|
||||
result = jc.parsers.id.parse(id_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.ifconfig
|
||||
|
||||
jc - JSON CLI output utility `ifconfig` command output parser
|
||||
jc - JSON Convert `ifconfig` command output parser
|
||||
|
||||
Note: No `ifconfig` options are supported.
|
||||
|
||||
@@ -20,11 +20,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('ifconfig', ifconfig_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.ifconfig
|
||||
result = jc.parsers.ifconfig.parse(ifconfig_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.ini
|
||||
|
||||
jc - JSON CLI output utility `INI` file parser
|
||||
jc - JSON Convert `INI` file parser
|
||||
|
||||
Parses standard `INI` files and files containing simple key/value pairs.
|
||||
Delimiter can be `=` or `:`. Missing values are supported. Comment prefix
|
||||
@@ -22,11 +22,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('ini', ini_file_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.ini
|
||||
result = jc.parsers.ini.parse(ini_file_output)
|
||||
|
||||
Schema:
|
||||
|
||||
ini or key/value document converted to a dictionary - see the
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.iostat
|
||||
|
||||
jc - JSON CLI output utility `iostat` command output parser
|
||||
jc - JSON Convert `iostat` command output parser
|
||||
|
||||
Note: `iostat` version 11 and higher include a JSON output option
|
||||
|
||||
@@ -20,11 +20,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('iostat', iostat_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.iostat
|
||||
result = jc.parsers.iostat.parse(iostat_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,9 +3,10 @@
|
||||
|
||||
# jc.parsers.iostat\_s
|
||||
|
||||
jc - JSON CLI output utility `iostat` command output streaming parser
|
||||
jc - JSON Convert `iostat` command output streaming parser
|
||||
|
||||
> This streaming parser outputs JSON Lines
|
||||
> This streaming parser outputs JSON Lines (cli) or returns a Generator
|
||||
iterator of Dictionaries (module)
|
||||
|
||||
Note: `iostat` version 11 and higher include a JSON output option
|
||||
|
||||
@@ -13,22 +14,21 @@ Usage (cli):
|
||||
|
||||
$ iostat | jc --iostat-s
|
||||
|
||||
> Note: When piping `jc` converted `iostat` output to other processes it may
|
||||
appear the output is hanging due to the OS pipe buffers. This is because
|
||||
`iostat` output is too small to quickly fill up the buffer. Use the `-u`
|
||||
option to unbuffer the `jc` output if you would like immediate output. See
|
||||
the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output)
|
||||
for more information.
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
# result is an iterable object (generator)
|
||||
|
||||
result = jc.parse('iostat_s', iostat_command_output.splitlines())
|
||||
for item in result:
|
||||
# do something
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.iostat_s
|
||||
# result is an iterable object (generator)
|
||||
result = jc.parsers.iostat_s.parse(iostat_command_output.splitlines())
|
||||
for item in result:
|
||||
# do something
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
@@ -83,14 +83,12 @@ Schema:
|
||||
"percent_rrqm": float,
|
||||
"percent_wrqm": float,
|
||||
|
||||
# Below object only exists if using -qq or ignore_exceptions=True
|
||||
|
||||
"_jc_meta":
|
||||
{
|
||||
"success": boolean, # false if error parsing
|
||||
"error": string, # exists if "success" is false
|
||||
"line": string # exists if "success" is false
|
||||
}
|
||||
# below object only exists if using -qq or ignore_exceptions=True
|
||||
"_jc_meta": {
|
||||
"success": boolean, # false if error parsing
|
||||
"error": string, # exists if "success" is false
|
||||
"line": string # exists if "success" is false
|
||||
}
|
||||
}
|
||||
|
||||
Examples:
|
||||
@@ -110,6 +108,7 @@ Examples:
|
||||
### parse
|
||||
|
||||
```python
|
||||
@add_jc_meta
|
||||
def parse(data, raw=False, quiet=False, ignore_exceptions=False)
|
||||
```
|
||||
|
||||
@@ -130,9 +129,9 @@ Yields:
|
||||
|
||||
Returns:
|
||||
|
||||
Iterator object
|
||||
Iterator object (generator)
|
||||
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 1.1 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.iptables
|
||||
|
||||
jc - JSON CLI output utility `iptables` command output parser
|
||||
jc - JSON Convert `iptables` command output parser
|
||||
|
||||
Supports `-vLn` and `--line-numbers` for all tables.
|
||||
|
||||
@@ -20,11 +20,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('iptables', iptables_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.iptables
|
||||
result = jc.parsers.iptables.parse(iptables_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.iw\_scan
|
||||
|
||||
jc - JSON CLI output utility `iw dev <device> scan` command output parser
|
||||
jc - JSON Convert `iw dev <device> scan` command output parser
|
||||
|
||||
This parser is considered beta quality. Not all fields are parsed and there
|
||||
are not enough samples to test.
|
||||
@@ -21,11 +21,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('iw_scan', iw_scan_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.iw_scan
|
||||
result = jc.parsers.iw_scan.parse(iw_scan_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.jar\_manifest
|
||||
|
||||
jc - JSON CLI output utility `MANIFEST.MF` file parser
|
||||
jc - JSON Convert `MANIFEST.MF` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -14,11 +14,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('jar_manifest', jar_manifest_file_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.jar_manifest
|
||||
result = jc.parsers.jar_manifest.parse(jar_manifest_file_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.jobs
|
||||
|
||||
jc - JSON CLI output utility `jobs` command output parser
|
||||
jc - JSON Convert `jobs` command output parser
|
||||
|
||||
Also supports the `-l` option.
|
||||
|
||||
@@ -19,11 +19,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('jobs', jobs_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.jobs
|
||||
result = jc.parsers.jobs.parse(jobs_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.kv
|
||||
|
||||
jc - JSON CLI output utility `Key/Value` file parser
|
||||
jc - JSON Convert `Key/Value` file parser
|
||||
|
||||
Supports files containing simple key/value pairs. Delimiter can be `=` or
|
||||
`:`. Missing values are supported. Comment prefix can be `#` or `;`.
|
||||
@@ -22,11 +22,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('kv', kv_file_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.kv
|
||||
result = jc.parsers.kv.parse(kv_file_output)
|
||||
|
||||
Schema:
|
||||
|
||||
key/value document converted to a dictionary - see the
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.last
|
||||
|
||||
jc - JSON CLI output utility `last` and `lastb` command output parser
|
||||
jc - JSON Convert `last` and `lastb` command output parser
|
||||
|
||||
Supports `-w` and `-F` options.
|
||||
|
||||
@@ -24,11 +24,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('last', last_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.last
|
||||
result = jc.parsers.last.parse(last_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.ls
|
||||
|
||||
jc - JSON CLI output utility `ls` and `vdir` command output parser
|
||||
jc - JSON Convert `ls` and `vdir` command output parser
|
||||
|
||||
Options supported:
|
||||
- `lbaR1`
|
||||
@@ -34,11 +34,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('ls', ls_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.ls
|
||||
result = jc.parsers.ls.parse(ls_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
@@ -144,4 +139,4 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, cygwin, aix, freebsd
|
||||
|
||||
Version 1.10 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 1.11 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
|
||||
# jc.parsers.ls\_s
|
||||
|
||||
jc - JSON CLI output utility `ls` and `vdir` command output streaming
|
||||
parser
|
||||
jc - JSON Convert `ls` and `vdir` command output streaming parser
|
||||
|
||||
> This streaming parser outputs JSON Lines
|
||||
> This streaming parser outputs JSON Lines (cli) or returns a Generator
|
||||
iterator of Dictionaries (module)
|
||||
|
||||
Requires the `-l` option to be used on `ls`. If there are newline characters
|
||||
in the filename, then make sure to use the `-b` option on `ls`.
|
||||
@@ -27,19 +27,11 @@ Usage (cli):
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
# result is an iterable object (generator)
|
||||
|
||||
result = jc.parse('ls_s', ls_command_output.splitlines())
|
||||
for item in result:
|
||||
# do something
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.ls_s
|
||||
# result is an iterable object (generator)
|
||||
result = jc.parsers.ls_s.parse(ls_command_output.splitlines())
|
||||
for item in result:
|
||||
# do something
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
@@ -54,14 +46,12 @@ Schema:
|
||||
"epoch": integer, # [0]
|
||||
"epoch_utc": integer, # [1]
|
||||
|
||||
# Below object only exists if using -qq or ignore_exceptions=True
|
||||
|
||||
"_jc_meta":
|
||||
{
|
||||
"success": boolean, # false if error parsing
|
||||
"error": string, # exists if "success" is false
|
||||
"line": string # exists if "success" is false
|
||||
}
|
||||
# below object only exists if using -qq or ignore_exceptions=True
|
||||
"_jc_meta": {
|
||||
"success": boolean, # false if error parsing
|
||||
"error": string, # exists if "success" is false
|
||||
"line": string # exists if "success" is false
|
||||
}
|
||||
}
|
||||
|
||||
[0] naive timestamp if date field exists and can be converted.
|
||||
@@ -87,6 +77,7 @@ Examples:
|
||||
### parse
|
||||
|
||||
```python
|
||||
@add_jc_meta
|
||||
def parse(data, raw=False, quiet=False, ignore_exceptions=False)
|
||||
```
|
||||
|
||||
@@ -107,9 +98,9 @@ Yields:
|
||||
|
||||
Returns:
|
||||
|
||||
Iterator object
|
||||
Iterator object (generator)
|
||||
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, cygwin, aix, freebsd
|
||||
|
||||
Version 0.6 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.lsblk
|
||||
|
||||
jc - JSON CLI output utility `lsblk` command output parser
|
||||
jc - JSON Convert `lsblk` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('lsblk', lsblk_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.lsblk
|
||||
result = jc.parsers.lsblk.parse(lsblk_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.lsmod
|
||||
|
||||
jc - JSON CLI output utility `lsmod` command output parser
|
||||
jc - JSON Convert `lsmod` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('lsmod', lsmod_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.lsmod
|
||||
result = jc.parsers.lsmod.parse(lsmod_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.lsof
|
||||
|
||||
jc - JSON CLI output utility `lsof` command output parser
|
||||
jc - JSON Convert `lsof` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('lsof', lsof_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.lsof
|
||||
result = jc.parsers.lsof.parse(lsof_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.lsusb
|
||||
|
||||
jc - JSON CLI output utility `lsusb` command output parser
|
||||
jc - JSON Convert `lsusb` command output parser
|
||||
|
||||
Supports the `-v` option or no options.
|
||||
|
||||
@@ -20,11 +20,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('lsusb', lsusb_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.lsusb
|
||||
result = jc.parsers.lsusb.parse(lsusb_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
Note: <item> object keynames are assigned directly from the lsusb
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.mount
|
||||
|
||||
jc - JSON CLI output utility `mount` command output parser
|
||||
jc - JSON Convert `mount` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('mount', mount_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.mount
|
||||
result = jc.parsers.mount.parse(mount_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
140
docs/parsers/mpstat.md
Normal file
140
docs/parsers/mpstat.md
Normal file
@@ -0,0 +1,140 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.mpstat"></a>
|
||||
|
||||
# jc.parsers.mpstat
|
||||
|
||||
jc - JSON Convert `mpstat` command output parser
|
||||
|
||||
Note: Latest versions of `mpstat` support JSON output (v11.5.1+)
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ mpstat | jc --mpstat
|
||||
|
||||
or
|
||||
|
||||
$ jc mpstat
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('mpstat', mpstat_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"type": string,
|
||||
"time": string,
|
||||
"cpu": string,
|
||||
"node": string,
|
||||
"average": boolean,
|
||||
"percent_usr": float,
|
||||
"percent_nice": float,
|
||||
"percent_sys": float,
|
||||
"percent_iowait": float,
|
||||
"percent_irq": float,
|
||||
"percent_soft": float,
|
||||
"percent_steal": float,
|
||||
"percent_guest": float,
|
||||
"percent_gnice": float,
|
||||
"percent_idle": float,
|
||||
"intr_s": float,
|
||||
"<x>_s": float, # <x> is an integer
|
||||
"nmi_s": float,
|
||||
"loc_s": float,
|
||||
"spu_s": float,
|
||||
"pmi_s": float,
|
||||
"iwi_s": float,
|
||||
"rtr_s": float,
|
||||
"res_s": float,
|
||||
"cal_s": float,
|
||||
"tlb_s": float,
|
||||
"trm_s": float,
|
||||
"thr_s": float,
|
||||
"dfr_s": float,
|
||||
"mce_s": float,
|
||||
"mcp_s": float,
|
||||
"err_s": float,
|
||||
"mis_s": float,
|
||||
"pin_s": float,
|
||||
"npi_s": float,
|
||||
"piw_s": float,
|
||||
"hi_s": float,
|
||||
"timer_s": float,
|
||||
"net_tx_s": float,
|
||||
"net_rx_s": float,
|
||||
"block_s": float,
|
||||
"irq_poll_s": float,
|
||||
"block_iopoll_s": float,
|
||||
"tasklet_s": float,
|
||||
"sched_s": float,
|
||||
"hrtimer_s": float,
|
||||
"rcu_s": float
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ mpstat | jc --mpstat -p
|
||||
[
|
||||
{
|
||||
"cpu": "all",
|
||||
"percent_usr": 12.94,
|
||||
"percent_nice": 0.0,
|
||||
"percent_sys": 26.42,
|
||||
"percent_iowait": 0.43,
|
||||
"percent_irq": 0.0,
|
||||
"percent_soft": 0.16,
|
||||
"percent_steal": 0.0,
|
||||
"percent_guest": 0.0,
|
||||
"percent_gnice": 0.0,
|
||||
"percent_idle": 60.05,
|
||||
"type": "cpu",
|
||||
"time": "01:58:14 PM"
|
||||
}
|
||||
]
|
||||
|
||||
$ mpstat | jc --mpstat -p -r
|
||||
[
|
||||
{
|
||||
"cpu": "all",
|
||||
"percent_usr": "12.94",
|
||||
"percent_nice": "0.00",
|
||||
"percent_sys": "26.42",
|
||||
"percent_iowait": "0.43",
|
||||
"percent_irq": "0.00",
|
||||
"percent_soft": "0.16",
|
||||
"percent_steal": "0.00",
|
||||
"percent_guest": "0.00",
|
||||
"percent_gnice": "0.00",
|
||||
"percent_idle": "60.05",
|
||||
"type": "cpu",
|
||||
"time": "01:58:14 PM"
|
||||
}
|
||||
]
|
||||
|
||||
<a id="jc.parsers.mpstat.parse"></a>
|
||||
|
||||
### parse
|
||||
|
||||
```python
|
||||
def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict]
|
||||
```
|
||||
|
||||
Main text parsing function
|
||||
|
||||
Parameters:
|
||||
|
||||
data: (string) text data to parse
|
||||
raw: (boolean) unprocessed output if True
|
||||
quiet: (boolean) suppress warning messages if True
|
||||
|
||||
Returns:
|
||||
|
||||
List of Dictionaries. Raw or processed structured data.
|
||||
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
134
docs/parsers/mpstat_s.md
Normal file
134
docs/parsers/mpstat_s.md
Normal file
@@ -0,0 +1,134 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.mpstat_s"></a>
|
||||
|
||||
# jc.parsers.mpstat\_s
|
||||
|
||||
jc - JSON Convert `mpstat` command output streaming parser
|
||||
|
||||
> This streaming parser outputs JSON Lines (cli) or returns a Generator
|
||||
iterator of Dictionaries (module)
|
||||
|
||||
Note: Latest versions of `mpstat` support JSON output (v11.5.1+)
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ mpstat | jc --mpstat-s
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
|
||||
result = jc.parse('mpstat_s', mpstat_command_output.splitlines())
|
||||
for item in result:
|
||||
# do something
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
"type": string,
|
||||
"time": string,
|
||||
"cpu": string,
|
||||
"node": string,
|
||||
"average": boolean,
|
||||
"percent_usr": float,
|
||||
"percent_nice": float,
|
||||
"percent_sys": float,
|
||||
"percent_iowait": float,
|
||||
"percent_irq": float,
|
||||
"percent_soft": float,
|
||||
"percent_steal": float,
|
||||
"percent_guest": float,
|
||||
"percent_gnice": float,
|
||||
"percent_idle": float,
|
||||
"intr_s": float,
|
||||
"<x>_s": float, # <x> is an integer
|
||||
"nmi_s": float,
|
||||
"loc_s": float,
|
||||
"spu_s": float,
|
||||
"pmi_s": float,
|
||||
"iwi_s": float,
|
||||
"rtr_s": float,
|
||||
"res_s": float,
|
||||
"cal_s": float,
|
||||
"tlb_s": float,
|
||||
"trm_s": float,
|
||||
"thr_s": float,
|
||||
"dfr_s": float,
|
||||
"mce_s": float,
|
||||
"mcp_s": float,
|
||||
"err_s": float,
|
||||
"mis_s": float,
|
||||
"pin_s": float,
|
||||
"npi_s": float,
|
||||
"piw_s": float,
|
||||
"hi_s": float,
|
||||
"timer_s": float,
|
||||
"net_tx_s": float,
|
||||
"net_rx_s": float,
|
||||
"block_s": float,
|
||||
"irq_poll_s": float,
|
||||
"block_iopoll_s": float,
|
||||
"tasklet_s": float,
|
||||
"sched_s": float,
|
||||
"hrtimer_s": float,
|
||||
"rcu_s": float,
|
||||
|
||||
# below object only exists if using -qq or ignore_exceptions=True
|
||||
"_jc_meta": {
|
||||
"success": boolean, # false if error parsing
|
||||
"error": string, # exists if "success" is false
|
||||
"line": string # exists if "success" is false
|
||||
}
|
||||
}
|
||||
|
||||
Examples:
|
||||
|
||||
$ mpstat -A | jc --mpstat-s
|
||||
{"cpu":"all","percent_usr":0.22,"percent_nice":0.0,"percent_sys":...}
|
||||
{"cpu":"0","percent_usr":0.22,"percent_nice":0.0,"percent_sys":0....}
|
||||
{"cpu":"all","intr_s":37.61,"type":"interrupts","time":"03:15:06 PM"}
|
||||
...
|
||||
|
||||
$ mpstat -A | jc --mpstat-s -r
|
||||
{"cpu":"all","percent_usr":"0.22","percent_nice":"0.00","percent_...}
|
||||
{"cpu":"0","percent_usr":"0.22","percent_nice":"0.00","percent_sy...}
|
||||
{"cpu":"all","intr_s":"37.61","type":"interrupts","time":"03:15:06 PM"}
|
||||
...
|
||||
|
||||
<a id="jc.parsers.mpstat_s.parse"></a>
|
||||
|
||||
### parse
|
||||
|
||||
```python
|
||||
@add_jc_meta
|
||||
def parse(
|
||||
data: Iterable[str],
|
||||
raw: bool = False,
|
||||
quiet: bool = False,
|
||||
ignore_exceptions: bool = False
|
||||
) -> Union[Generator[Dict, None, None], tuple]
|
||||
```
|
||||
|
||||
Main text parsing generator function. Returns an iterator object.
|
||||
|
||||
Parameters:
|
||||
|
||||
data: (iterable) line-based text data to parse
|
||||
(e.g. sys.stdin or str.splitlines())
|
||||
|
||||
raw: (boolean) unprocessed output if True
|
||||
quiet: (boolean) suppress warning messages if True
|
||||
ignore_exceptions: (boolean) ignore parsing exceptions if True
|
||||
|
||||
Yields:
|
||||
|
||||
Dictionary. Raw or processed structured data.
|
||||
|
||||
Returns:
|
||||
|
||||
Iterator object (generator)
|
||||
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.netstat
|
||||
|
||||
jc - JSON CLI output utility `netstat` command output parser
|
||||
jc - JSON Convert `netstat` command output parser
|
||||
|
||||
Caveats:
|
||||
- Use of multiple `l` options is not supported on OSX (e.g. `netstat -rlll`)
|
||||
@@ -23,11 +23,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('netstat', netstat_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.netstat
|
||||
result = jc.parsers.netstat.parse(netstat_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
171
docs/parsers/nmcli.md
Normal file
171
docs/parsers/nmcli.md
Normal file
@@ -0,0 +1,171 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.nmcli"></a>
|
||||
|
||||
# jc.parsers.nmcli
|
||||
|
||||
jc - JSON Convert `nmcli` command output parser
|
||||
|
||||
Supports the following `nmcli` subcommands:
|
||||
- `nmcli general`
|
||||
- `nmcli general permissions`
|
||||
- `nmcli connection`
|
||||
- `nmcli connection show <device_name>`
|
||||
- `nmcli device`
|
||||
- `nmcli device show`
|
||||
- `nmcli device show <device_name>`
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ nmcli device show lo | jc --nmcli
|
||||
|
||||
or
|
||||
|
||||
$ jc nmcli device show lo
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('nmcli', nmcli_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
Because there are so many options, the schema is not strictly defined.
|
||||
Integer and Float value conversions are attempted and the original
|
||||
values are kept if they fail. If you don't want automatic conversion,
|
||||
then use the -r or raw=True option to disable it.
|
||||
|
||||
The structure is flat, for the most part, but there are a couple of
|
||||
"well-known" keys that are further parsed into objects for convenience.
|
||||
These are documented below.
|
||||
|
||||
[
|
||||
{
|
||||
"<key>": string/integer/float, [0]
|
||||
"dhcp4_option_x": {
|
||||
"name": string,
|
||||
"value": string/integer/float,
|
||||
},
|
||||
"dhcp6_option_x": {
|
||||
"name": string,
|
||||
"value": string/integer/float,
|
||||
},
|
||||
"ip4_route_x": {
|
||||
"dst": string,
|
||||
"nh": string,
|
||||
"mt": integer
|
||||
},
|
||||
"ip6_route_x": {
|
||||
"dst": string,
|
||||
"nh": string,
|
||||
"mt": integer,
|
||||
"table": integer
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
[0] all values of `---` are converted to null
|
||||
|
||||
Examples:
|
||||
|
||||
$ nmcli connection show ens33 | jc --nmcli -p
|
||||
[
|
||||
{
|
||||
"connection_id": "ens33",
|
||||
"connection_uuid": "d92ece08-9e02-47d5-b2d2-92c80e155744",
|
||||
"connection_stable_id": null,
|
||||
"connection_type": "802-3-ethernet",
|
||||
"connection_interface_name": "ens33",
|
||||
"connection_autoconnect": "yes",
|
||||
...
|
||||
"ip4_address_1": "192.168.71.180/24",
|
||||
"ip4_gateway": "192.168.71.2",
|
||||
"ip4_route_1": {
|
||||
"dst": "0.0.0.0/0",
|
||||
"nh": "192.168.71.2",
|
||||
"mt": 100
|
||||
},
|
||||
"ip4_route_2": {
|
||||
"dst": "192.168.71.0/24",
|
||||
"nh": "0.0.0.0",
|
||||
"mt": 100
|
||||
},
|
||||
"ip4_dns_1": "192.168.71.2",
|
||||
"ip4_domain_1": "localdomain",
|
||||
"dhcp4_option_1": {
|
||||
"name": "broadcast_address",
|
||||
"value": "192.168.71.255"
|
||||
},
|
||||
...
|
||||
"ip6_address_1": "fe80::c1cb:715d:bc3e:b8a0/64",
|
||||
"ip6_gateway": null,
|
||||
"ip6_route_1": {
|
||||
"dst": "fe80::/64",
|
||||
"nh": "::",
|
||||
"mt": 100
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
$ nmcli connection show ens33 | jc --nmcli -p -r
|
||||
[
|
||||
{
|
||||
"connection_id": "ens33",
|
||||
"connection_uuid": "d92ece08-9e02-47d5-b2d2-92c80e155744",
|
||||
"connection_stable_id": null,
|
||||
"connection_type": "802-3-ethernet",
|
||||
"connection_interface_name": "ens33",
|
||||
"connection_autoconnect": "yes",
|
||||
...
|
||||
"ip4_address_1": "192.168.71.180/24",
|
||||
"ip4_gateway": "192.168.71.2",
|
||||
"ip4_route_1": {
|
||||
"dst": "0.0.0.0/0",
|
||||
"nh": "192.168.71.2",
|
||||
"mt": "100"
|
||||
},
|
||||
"ip4_route_2": {
|
||||
"dst": "192.168.71.0/24",
|
||||
"nh": "0.0.0.0",
|
||||
"mt": "100"
|
||||
},
|
||||
"ip4_dns_1": "192.168.71.2",
|
||||
"ip4_domain_1": "localdomain",
|
||||
"dhcp4_option_1": {
|
||||
"name": "broadcast_address",
|
||||
"value": "192.168.71.255"
|
||||
},
|
||||
...
|
||||
"ip6_address_1": "fe80::c1cb:715d:bc3e:b8a0/64",
|
||||
"ip6_gateway": null,
|
||||
"ip6_route_1": {
|
||||
"dst": "fe80::/64",
|
||||
"nh": "::",
|
||||
"mt": "100"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
<a id="jc.parsers.nmcli.parse"></a>
|
||||
|
||||
### parse
|
||||
|
||||
```python
|
||||
def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict]
|
||||
```
|
||||
|
||||
Main text parsing function
|
||||
|
||||
Parameters:
|
||||
|
||||
data: (string) text data to parse
|
||||
raw: (boolean) unprocessed output if True
|
||||
quiet: (boolean) suppress warning messages if True
|
||||
|
||||
Returns:
|
||||
|
||||
List of Dictionaries. Raw or processed structured data.
|
||||
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.ntpq
|
||||
|
||||
jc - JSON CLI output utility `ntpq -p` command output parser
|
||||
jc - JSON Convert `ntpq -p` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('ntpq', ntpq_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.ntpq
|
||||
result = jc.parsers.ntpq.parse(ntpq_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.passwd
|
||||
|
||||
jc - JSON CLI output utility `/etc/passwd` file Parser
|
||||
jc - JSON Convert `/etc/passwd` file Parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -14,11 +14,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('passwd', passwd_file_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.passwd
|
||||
result = jc.parsers.passwd.parse(passwd_file_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
151
docs/parsers/pidstat.md
Normal file
151
docs/parsers/pidstat.md
Normal file
@@ -0,0 +1,151 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.pidstat"></a>
|
||||
|
||||
# jc.parsers.pidstat
|
||||
|
||||
jc - JSON Convert `pidstat` command output parser
|
||||
|
||||
Must use the `-h` option in `pidstat`. All other `pidstat` options are
|
||||
supported in combination with `-h`.
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ pidstat -h | jc --pidstat
|
||||
|
||||
or
|
||||
|
||||
$ jc pidstat -h
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('pidstat', pidstat_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"time": integer,
|
||||
"uid": integer,
|
||||
"pid": integer,
|
||||
"percent_usr": float,
|
||||
"percent_system": float,
|
||||
"percent_guest": float,
|
||||
"percent_cpu": float,
|
||||
"cpu": integer,
|
||||
"minflt_s": float,
|
||||
"majflt_s": float,
|
||||
"vsz": integer,
|
||||
"rss": integer,
|
||||
"percent_mem": float,
|
||||
"stksize": integer,
|
||||
"stkref": integer,
|
||||
"kb_rd_s": float,
|
||||
"kb_wr_s": float,
|
||||
"kb_ccwr_s": float,
|
||||
"cswch_s": float,
|
||||
"nvcswch_s": float,
|
||||
"command": string
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ pidstat -hl | jc --pidstat -p
|
||||
[
|
||||
{
|
||||
"time": 1646859134,
|
||||
"uid": 0,
|
||||
"pid": 1,
|
||||
"percent_usr": 0.0,
|
||||
"percent_system": 0.03,
|
||||
"percent_guest": 0.0,
|
||||
"percent_cpu": 0.03,
|
||||
"cpu": 0,
|
||||
"command": "/usr/lib/systemd/systemd --switched-root --system..."
|
||||
},
|
||||
{
|
||||
"time": 1646859134,
|
||||
"uid": 0,
|
||||
"pid": 6,
|
||||
"percent_usr": 0.0,
|
||||
"percent_system": 0.0,
|
||||
"percent_guest": 0.0,
|
||||
"percent_cpu": 0.0,
|
||||
"cpu": 0,
|
||||
"command": "ksoftirqd/0"
|
||||
},
|
||||
{
|
||||
"time": 1646859134,
|
||||
"uid": 0,
|
||||
"pid": 2263,
|
||||
"percent_usr": 0.0,
|
||||
"percent_system": 0.0,
|
||||
"percent_guest": 0.0,
|
||||
"percent_cpu": 0.0,
|
||||
"cpu": 0,
|
||||
"command": "kworker/0:0"
|
||||
}
|
||||
]
|
||||
|
||||
$ pidstat -hl | jc --pidstat -p -r
|
||||
[
|
||||
{
|
||||
"time": "1646859134",
|
||||
"uid": "0",
|
||||
"pid": "1",
|
||||
"percent_usr": "0.00",
|
||||
"percent_system": "0.03",
|
||||
"percent_guest": "0.00",
|
||||
"percent_cpu": "0.03",
|
||||
"cpu": "0",
|
||||
"command": "/usr/lib/systemd/systemd --switched-root --system..."
|
||||
},
|
||||
{
|
||||
"time": "1646859134",
|
||||
"uid": "0",
|
||||
"pid": "6",
|
||||
"percent_usr": "0.00",
|
||||
"percent_system": "0.00",
|
||||
"percent_guest": "0.00",
|
||||
"percent_cpu": "0.00",
|
||||
"cpu": "0",
|
||||
"command": "ksoftirqd/0"
|
||||
},
|
||||
{
|
||||
"time": "1646859134",
|
||||
"uid": "0",
|
||||
"pid": "2263",
|
||||
"percent_usr": "0.00",
|
||||
"percent_system": "0.00",
|
||||
"percent_guest": "0.00",
|
||||
"percent_cpu": "0.00",
|
||||
"cpu": "0",
|
||||
"command": "kworker/0:0"
|
||||
}
|
||||
]
|
||||
|
||||
<a id="jc.parsers.pidstat.parse"></a>
|
||||
|
||||
### parse
|
||||
|
||||
```python
|
||||
def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict]
|
||||
```
|
||||
|
||||
Main text parsing function
|
||||
|
||||
Parameters:
|
||||
|
||||
data: (string) text data to parse
|
||||
raw: (boolean) unprocessed output if True
|
||||
quiet: (boolean) suppress warning messages if True
|
||||
|
||||
Returns:
|
||||
|
||||
List of Dictionaries. Raw or processed structured data.
|
||||
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
116
docs/parsers/pidstat_s.md
Normal file
116
docs/parsers/pidstat_s.md
Normal file
@@ -0,0 +1,116 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.pidstat_s"></a>
|
||||
|
||||
# jc.parsers.pidstat\_s
|
||||
|
||||
jc - JSON Convert `pidstat` command output streaming parser
|
||||
|
||||
> This streaming parser outputs JSON Lines (cli) or returns a Generator
|
||||
iterator of Dictionaries (module)
|
||||
|
||||
Must use the `-h` option in `pidstat`. All other `pidstat` options are
|
||||
supported in combination with `-h`.
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ pidstat | jc --pidstat-s
|
||||
|
||||
> Note: When piping `jc` converted `pidstat` output to other processes it
|
||||
may appear the output is hanging due to the OS pipe buffers. This is
|
||||
because `pidstat` output is too small to quickly fill up the buffer. Use
|
||||
the `-u` option to unbuffer the `jc` output if you would like immediate
|
||||
output. See the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output)
|
||||
for more information.
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
|
||||
result = jc.parse('pidstat_s', pidstat_command_output.splitlines())
|
||||
for item in result:
|
||||
# do something
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
"time": integer,
|
||||
"uid": integer,
|
||||
"pid": integer,
|
||||
"percent_usr": float,
|
||||
"percent_system": float,
|
||||
"percent_guest": float,
|
||||
"percent_cpu": float,
|
||||
"cpu": integer,
|
||||
"minflt_s": float,
|
||||
"majflt_s": float,
|
||||
"vsz": integer,
|
||||
"rss": integer,
|
||||
"percent_mem": float,
|
||||
"stksize": integer,
|
||||
"stkref": integer,
|
||||
"kb_rd_s": float,
|
||||
"kb_wr_s": float,
|
||||
"kb_ccwr_s": float,
|
||||
"cswch_s": float,
|
||||
"nvcswch_s": float,
|
||||
"command": string,
|
||||
|
||||
# below object only exists if using -qq or ignore_exceptions=True
|
||||
"_jc_meta": {
|
||||
"success": boolean, # false if error parsing
|
||||
"error": string, # exists if "success" is false
|
||||
"line": string # exists if "success" is false
|
||||
}
|
||||
}
|
||||
|
||||
Examples:
|
||||
|
||||
$ pidstat -hl | jc --pidstat-s
|
||||
{"time":1646859134,"uid":0,"pid":1,"percent_usr":0.0,"percent_syste...}
|
||||
{"time":1646859134,"uid":0,"pid":6,"percent_usr":0.0,"percent_syste...}
|
||||
{"time":1646859134,"uid":0,"pid":9,"percent_usr":0.0,"percent_syste...}
|
||||
...
|
||||
|
||||
$ pidstat -hl | jc --pidstat-s -r
|
||||
{"time":"1646859134","uid":"0","pid":"1","percent_usr":"0.00","perc...}
|
||||
{"time":"1646859134","uid":"0","pid":"6","percent_usr":"0.00","perc...}
|
||||
{"time":"1646859134","uid":"0","pid":"9","percent_usr":"0.00","perc...}
|
||||
...
|
||||
|
||||
<a id="jc.parsers.pidstat_s.parse"></a>
|
||||
|
||||
### parse
|
||||
|
||||
```python
|
||||
@add_jc_meta
|
||||
def parse(
|
||||
data: Iterable[str],
|
||||
raw: bool = False,
|
||||
quiet: bool = False,
|
||||
ignore_exceptions: bool = False
|
||||
) -> Union[Generator[Dict, None, None], tuple]
|
||||
```
|
||||
|
||||
Main text parsing generator function. Returns an iterator object.
|
||||
|
||||
Parameters:
|
||||
|
||||
data: (iterable) line-based text data to parse
|
||||
(e.g. sys.stdin or str.splitlines())
|
||||
|
||||
raw: (boolean) unprocessed output if True
|
||||
quiet: (boolean) suppress warning messages if True
|
||||
ignore_exceptions: (boolean) ignore parsing exceptions if True
|
||||
|
||||
Yields:
|
||||
|
||||
Dictionary. Raw or processed structured data.
|
||||
|
||||
Returns:
|
||||
|
||||
Iterator object (generator)
|
||||
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.ping
|
||||
|
||||
jc - JSON CLI output utility `ping` command output parser
|
||||
jc - JSON Convert `ping` command output parser
|
||||
|
||||
Supports `ping` and `ping6` output.
|
||||
|
||||
@@ -23,11 +23,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('ping', ping_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.ping
|
||||
result = jc.parsers.ping.parse(ping_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
|
||||
@@ -3,9 +3,10 @@
|
||||
|
||||
# jc.parsers.ping\_s
|
||||
|
||||
jc - JSON CLI output utility `ping` command output streaming parser
|
||||
jc - JSON Convert `ping` command output streaming parser
|
||||
|
||||
> This streaming parser outputs JSON Lines
|
||||
> This streaming parser outputs JSON Lines (cli) or returns a Generator
|
||||
iterator of Dictionaries (module)
|
||||
|
||||
Supports `ping` and `ping6` output.
|
||||
|
||||
@@ -23,19 +24,11 @@ Usage (cli):
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
# result is an iterable object (generator)
|
||||
|
||||
result = jc.parse('ping_s', ping_command_output.splitlines())
|
||||
for item in result:
|
||||
# do something
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.ping_s
|
||||
# result is an iterable object (generator)
|
||||
result = jc.parsers.ping_s.parse(ping_command_output.splitlines())
|
||||
for item in result:
|
||||
# do something
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
@@ -61,14 +54,12 @@ Schema:
|
||||
"round_trip_ms_max": float,
|
||||
"round_trip_ms_stddev": float,
|
||||
|
||||
# Below object only exists if using -qq or ignore_exceptions=True
|
||||
|
||||
"_jc_meta":
|
||||
{
|
||||
"success": boolean, # false if error parsing
|
||||
"error": string, # exists if "success" is false
|
||||
"line": string # exists if "success" is false
|
||||
}
|
||||
# below object only exists if using -qq or ignore_exceptions=True
|
||||
"_jc_meta": {
|
||||
"success": boolean, # false if error parsing
|
||||
"error": string, # exists if "success" is false
|
||||
"line": string # exists if "success" is false
|
||||
}
|
||||
}
|
||||
|
||||
[0] 'reply', 'timeout', 'summary', etc. See `_error_type.type_map`
|
||||
@@ -93,6 +84,7 @@ Examples:
|
||||
### parse
|
||||
|
||||
```python
|
||||
@add_jc_meta
|
||||
def parse(data, raw=False, quiet=False, ignore_exceptions=False)
|
||||
```
|
||||
|
||||
@@ -113,9 +105,9 @@ Yields:
|
||||
|
||||
Returns:
|
||||
|
||||
Iterator object
|
||||
Iterator object (generator)
|
||||
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, freebsd
|
||||
|
||||
Version 0.6 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.pip\_list
|
||||
|
||||
jc - JSON CLI output utility `pip-list` command output parser
|
||||
jc - JSON Convert `pip-list` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('pip_list', pip_list_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.pip_list
|
||||
result = jc.parsers.pip_list.parse(pip_list_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.pip\_show
|
||||
|
||||
jc - JSON CLI output utility `pip-show` command output parser
|
||||
jc - JSON Convert `pip-show` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('pip_show', pip_show_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.pip_show
|
||||
result = jc.parsers.pip_show.parse(pip_show_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.ps
|
||||
|
||||
jc - JSON CLI output utility `ps` command output parser
|
||||
jc - JSON Convert `ps` command output parser
|
||||
|
||||
`ps` options supported:
|
||||
- `ef`
|
||||
@@ -22,11 +22,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('ps', ps_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.ps
|
||||
result = jc.parsers.ps.parse(ps_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.route
|
||||
|
||||
jc - JSON CLI output utility `route` command output parser
|
||||
jc - JSON Convert `route` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('route', route_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.route
|
||||
result = jc.parsers.route.parse(route_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.rpm\_qi
|
||||
|
||||
jc - JSON CLI output utility `rpm -qi` command output parser
|
||||
jc - JSON Convert `rpm -qi` command output parser
|
||||
|
||||
Works with `rpm -qi [package]` or `rpm -qia`.
|
||||
|
||||
@@ -26,11 +26,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('rpm_qi', rpm_qi_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.rpm_qi
|
||||
result = jc.parsers.rpm_qi.parse(rpm_qi_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
@@ -189,4 +184,4 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 1.4 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 1.5 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
160
docs/parsers/rsync.md
Normal file
160
docs/parsers/rsync.md
Normal file
@@ -0,0 +1,160 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.rsync"></a>
|
||||
|
||||
# jc.parsers.rsync
|
||||
|
||||
jc - JSON Convert `rsync` command output parser
|
||||
|
||||
Supports the `-i` or `--itemize-changes` options with all levels of
|
||||
verbosity. This parser will process the STDOUT output or a log file
|
||||
generated with the `--log-file` option.
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ rsync -i -a source/ dest | jc --rsync
|
||||
|
||||
or
|
||||
|
||||
$ jc rsync -i -a source/ dest
|
||||
|
||||
or
|
||||
|
||||
$ cat rsync-backup.log | jc --rsync
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('rsync', rsync_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"summary": {
|
||||
"date": string,
|
||||
"time": string,
|
||||
"process": integer,
|
||||
"sent": integer,
|
||||
"received": integer,
|
||||
"total_size": integer,
|
||||
"matches": integer,
|
||||
"hash_hits": integer,
|
||||
"false_alarms": integer,
|
||||
"data": integer,
|
||||
"bytes_sec": float,
|
||||
"speedup": float
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"filename": string,
|
||||
"date": string,
|
||||
"time": string,
|
||||
"process": integer,
|
||||
"metadata": string,
|
||||
"update_type": string/null, [0]
|
||||
"file_type": string/null, [1]
|
||||
"checksum_or_value_different": bool/null,
|
||||
"size_different": bool/null,
|
||||
"modification_time_different": bool/null,
|
||||
"permissions_different": bool/null,
|
||||
"owner_different": bool/null,
|
||||
"group_different": bool/null,
|
||||
"acl_different": bool/null,
|
||||
"extended_attribute_different": bool/null,
|
||||
"epoch": integer, [2]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
[0] 'file sent', 'file received', 'local change or creation',
|
||||
'hard link', 'not updated', 'message'
|
||||
[1] 'file', 'directory', 'symlink', 'device', 'special file'
|
||||
[2] naive timestamp if time and date fields exist and can be converted.
|
||||
|
||||
Examples:
|
||||
|
||||
$ rsync -i -a source/ dest | jc --rsync -p
|
||||
[
|
||||
{
|
||||
"summary": {
|
||||
"sent": 1708,
|
||||
"received": 8209,
|
||||
"bytes_sec": 19834.0,
|
||||
"total_size": 235,
|
||||
"speedup": 0.02
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"filename": "./",
|
||||
"metadata": ".d..t......",
|
||||
"update_type": "not updated",
|
||||
"file_type": "directory",
|
||||
"checksum_or_value_different": false,
|
||||
"size_different": false,
|
||||
"modification_time_different": true,
|
||||
"permissions_different": false,
|
||||
"owner_different": false,
|
||||
"group_different": false,
|
||||
"acl_different": false,
|
||||
"extended_attribute_different": false
|
||||
},
|
||||
...
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
$ rsync | jc --rsync -p -r
|
||||
[
|
||||
{
|
||||
"summary": {
|
||||
"sent": "1,708",
|
||||
"received": "8,209",
|
||||
"bytes_sec": "19,834.00",
|
||||
"total_size": "235",
|
||||
"speedup": "0.02"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"filename": "./",
|
||||
"metadata": ".d..t......",
|
||||
"update_type": "not updated",
|
||||
"file_type": "directory",
|
||||
"checksum_or_value_different": false,
|
||||
"size_different": false,
|
||||
"modification_time_different": true,
|
||||
"permissions_different": false,
|
||||
"owner_different": false,
|
||||
"group_different": false,
|
||||
"acl_different": false,
|
||||
"extended_attribute_different": false
|
||||
},
|
||||
...
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
<a id="jc.parsers.rsync.parse"></a>
|
||||
|
||||
### parse
|
||||
|
||||
```python
|
||||
def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict]
|
||||
```
|
||||
|
||||
Main text parsing function
|
||||
|
||||
Parameters:
|
||||
|
||||
data: (string) text data to parse
|
||||
raw: (boolean) unprocessed output if True
|
||||
quiet: (boolean) suppress warning messages if True
|
||||
|
||||
Returns:
|
||||
|
||||
List of Dictionaries. Raw or processed structured data.
|
||||
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, freebsd
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
123
docs/parsers/rsync_s.md
Normal file
123
docs/parsers/rsync_s.md
Normal file
@@ -0,0 +1,123 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.rsync_s"></a>
|
||||
|
||||
# jc.parsers.rsync\_s
|
||||
|
||||
jc - JSON Convert `rsync` command output streaming parser
|
||||
|
||||
> This streaming parser outputs JSON Lines (cli) or returns a Generator
|
||||
iterator of Dictionaries (module)
|
||||
|
||||
Supports the `-i` or `--itemize-changes` options with all levels of
|
||||
verbosity. This parser will process the STDOUT output or a log file
|
||||
generated with the `--log-file` option.
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ rsync -i -a source/ dest | jc --rsync-s
|
||||
|
||||
or
|
||||
|
||||
$ cat rsync-backup.log | jc --rsync-s
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
|
||||
result = jc.parse('rsync_s', rsync_command_output.splitlines())
|
||||
for item in result:
|
||||
# do something
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
"type": string, # 'file' or 'summary'
|
||||
"date": string,
|
||||
"time": string,
|
||||
"process": integer,
|
||||
"sent": integer,
|
||||
"received": integer,
|
||||
"total_size": integer,
|
||||
"matches": integer,
|
||||
"hash_hits": integer,
|
||||
"false_alarms": integer,
|
||||
"data": integer,
|
||||
"bytes_sec": float,
|
||||
"speedup": float,
|
||||
"filename": string,
|
||||
"date": string,
|
||||
"time": string,
|
||||
"process": integer,
|
||||
"metadata": string,
|
||||
"update_type": string/null, [0]
|
||||
"file_type": string/null, [1]
|
||||
"checksum_or_value_different": bool/null,
|
||||
"size_different": bool/null,
|
||||
"modification_time_different": bool/null,
|
||||
"permissions_different": bool/null,
|
||||
"owner_different": bool/null,
|
||||
"group_different": bool/null,
|
||||
"acl_different": bool/null,
|
||||
"extended_attribute_different": bool/null,
|
||||
"epoch": integer, [2]
|
||||
|
||||
# below object only exists if using -qq or ignore_exceptions=True
|
||||
"_jc_meta": {
|
||||
"success": boolean, # false if error parsing
|
||||
"error": string, # exists if "success" is false
|
||||
"line": string # exists if "success" is false
|
||||
}
|
||||
}
|
||||
|
||||
[0] 'file sent', 'file received', 'local change or creation',
|
||||
'hard link', 'not updated', 'message'
|
||||
[1] 'file', 'directory', 'symlink', 'device', 'special file'
|
||||
[2] naive timestamp if time and date fields exist and can be converted.
|
||||
|
||||
Examples:
|
||||
|
||||
$ rsync -i -a source/ dest | jc --rsync-s
|
||||
{"type":"file","filename":"./","metadata":".d..t......","update_...}
|
||||
...
|
||||
|
||||
$ cat rsync_backup.log | jc --rsync-s
|
||||
{"type":"file","filename":"./","date":"2022/01/28","time":"03:53...}
|
||||
...
|
||||
|
||||
<a id="jc.parsers.rsync_s.parse"></a>
|
||||
|
||||
### parse
|
||||
|
||||
```python
|
||||
@add_jc_meta
|
||||
def parse(
|
||||
data: Iterable[str],
|
||||
raw: bool = False,
|
||||
quiet: bool = False,
|
||||
ignore_exceptions: bool = False
|
||||
) -> Union[Generator[Dict, None, None], tuple]
|
||||
```
|
||||
|
||||
Main text parsing generator function. Returns an iterator object.
|
||||
|
||||
Parameters:
|
||||
|
||||
data: (iterable) line-based text data to parse
|
||||
(e.g. sys.stdin or str.splitlines())
|
||||
|
||||
raw: (boolean) unprocessed output if True
|
||||
quiet: (boolean) suppress warning messages if True
|
||||
ignore_exceptions: (boolean) ignore parsing exceptions if True
|
||||
|
||||
Yields:
|
||||
|
||||
Dictionary. Raw or processed structured data.
|
||||
|
||||
Returns:
|
||||
|
||||
Iterator object (generator)
|
||||
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, freebsd
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.sfdisk
|
||||
|
||||
jc - JSON CLI output utility `sfdisk` command output parser
|
||||
jc - JSON Convert `sfdisk` command output parser
|
||||
|
||||
Supports the following `sfdisk` options:
|
||||
- `-l`
|
||||
@@ -27,11 +27,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('sfdisk', sfdisk_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.sfdisk
|
||||
result = jc.parsers.sfdisk.parse(sfdisk_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.shadow
|
||||
|
||||
jc - JSON CLI output utility `/etc/shadow` file parser
|
||||
jc - JSON Convert `/etc/shadow` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -14,11 +14,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('shadow', shadow_file_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.shadow
|
||||
result = jc.parsers.shadow.parse(shadow_file_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.ss
|
||||
|
||||
jc - JSON CLI output utility `ss` command output parser
|
||||
jc - JSON Convert `ss` command output parser
|
||||
|
||||
Extended information options like -e and -p are not supported and may cause
|
||||
parsing irregularities.
|
||||
@@ -21,11 +21,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('ss', ss_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.ss
|
||||
result = jc.parsers.ss.parse(ss_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
Information from https://www.cyberciti.biz/files/ss.html used to define
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.stat
|
||||
|
||||
jc - JSON CLI output utility `stat` command output parser
|
||||
jc - JSON Convert `stat` command output parser
|
||||
|
||||
The `xxx_epoch` calculated timestamp fields are naive. (i.e. based on the
|
||||
local time of the system the parser is run on)
|
||||
@@ -24,11 +24,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('stat', stat_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.stat
|
||||
result = jc.parsers.stat.parse(stat_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
@@ -198,4 +193,4 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, freebsd
|
||||
|
||||
Version 1.10 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 1.11 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -3,9 +3,10 @@
|
||||
|
||||
# jc.parsers.stat\_s
|
||||
|
||||
jc - JSON CLI output utility `stat` command output streaming parser
|
||||
jc - JSON Convert `stat` command output streaming parser
|
||||
|
||||
> This streaming parser outputs JSON Lines
|
||||
> This streaming parser outputs JSON Lines (cli) or returns a Generator
|
||||
iterator of Dictionaries (module)
|
||||
|
||||
The `xxx_epoch` calculated timestamp fields are naive. (i.e. based on the
|
||||
local time of the system the parser is run on).
|
||||
@@ -20,19 +21,11 @@ Usage (cli):
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
# result is an iterable object (generator)
|
||||
|
||||
result = jc.parse('stat_s', stat_command_output.splitlines())
|
||||
for item in result:
|
||||
# do something
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.stat_s
|
||||
# result is an iterable object (generator)
|
||||
result = jc.parsers.stat_s.parse(stat_command_output.splitlines())
|
||||
for item in result:
|
||||
# do something
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
@@ -68,14 +61,12 @@ Schema:
|
||||
"block_size": integer,
|
||||
"unix_flags": string,
|
||||
|
||||
# Below object only exists if using -qq or ignore_exceptions=True
|
||||
|
||||
"_jc_meta":
|
||||
{
|
||||
"success": boolean, # false if error parsing
|
||||
"error": string, # exists if "success" is false
|
||||
"line": string # exists if "success" is false
|
||||
}
|
||||
# below object only exists if using -qq or ignore_exceptions=True
|
||||
"_jc_meta": {
|
||||
"success": boolean, # false if error parsing
|
||||
"error": string, # exists if "success" is false
|
||||
"line": string # exists if "success" is false
|
||||
}
|
||||
}
|
||||
|
||||
Examples:
|
||||
@@ -91,6 +82,7 @@ Examples:
|
||||
### parse
|
||||
|
||||
```python
|
||||
@add_jc_meta
|
||||
def parse(data, raw=False, quiet=False, ignore_exceptions=False)
|
||||
```
|
||||
|
||||
@@ -111,9 +103,9 @@ Yields:
|
||||
|
||||
Returns:
|
||||
|
||||
Iterator object
|
||||
Iterator object (generator)
|
||||
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, freebsd
|
||||
|
||||
Version 0.5 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.sysctl
|
||||
|
||||
jc - JSON CLI output utility `sysctl -a` command output parser
|
||||
jc - JSON Convert `sysctl -a` command output parser
|
||||
|
||||
Note: Since `sysctl` output is not easily parsable only a very simple
|
||||
key/value object will be output. An attempt is made to convert obvious
|
||||
@@ -23,11 +23,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('sysctl', sysctl_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.sysctl
|
||||
result = jc.parsers.sysctl.parse(sysctl_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.systemctl
|
||||
|
||||
jc - JSON CLI output utility `systemctl` command output parser
|
||||
jc - JSON Convert `systemctl` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('systemctl', systemctl_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.systemctl
|
||||
result = jc.parsers.systemctl.parse(systemctl_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.systemctl\_lj
|
||||
|
||||
jc - JSON CLI output utility `systemctl list-jobs` command output parser
|
||||
jc - JSON Convert `systemctl list-jobs` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('systemctl_lj', systemctl_lj_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.systemctl_lj
|
||||
result = jc.parsers.systemctl_lj.parse(systemctl_lj_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.systemctl\_ls
|
||||
|
||||
jc - JSON CLI output utility `systemctl list-sockets` command output
|
||||
jc - JSON Convert `systemctl list-sockets` command output
|
||||
parser
|
||||
|
||||
Usage (cli):
|
||||
@@ -19,11 +19,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('systemctl_ls', systemctl_ls_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.systemctl_ls
|
||||
result = jc.parsers.systemctl_ls.parse(systemctl_ls_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.systemctl\_luf
|
||||
|
||||
jc - JSON CLI output utility `systemctl list-unit-files` command output
|
||||
jc - JSON Convert `systemctl list-unit-files` command output
|
||||
parser
|
||||
|
||||
Usage (cli):
|
||||
@@ -19,11 +19,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('systemctl_luf', systemctl_luf_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.systemctl_luf
|
||||
result = jc.parsers.systemctl_luf.parse(systemctl_luf_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.systeminfo
|
||||
|
||||
jc - JSON CLI output utility `systeminfo` command output parser
|
||||
jc - JSON Convert `systeminfo` command output parser
|
||||
|
||||
Blank or missing elements are set to `null`.
|
||||
|
||||
@@ -24,11 +24,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('systeminfo', systeminfo_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.systeminfo
|
||||
result = jc.parsers.systeminfo.parse(systeminfo_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
@@ -239,4 +234,4 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: win32
|
||||
|
||||
Version 1.1 by Jon Smith (jon@rebelliondefense.com)
|
||||
Version 1.2 by Jon Smith (jon@rebelliondefense.com)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.time
|
||||
|
||||
jc - JSON CLI output utility `/usr/bin/time` command output parser
|
||||
jc - JSON Convert `/usr/bin/time` command output parser
|
||||
|
||||
Output from `/usr/bin/time` is sent to `STDERR`, so the `-o` option can be
|
||||
used to redirect the output to a file that can be read by `jc`.
|
||||
@@ -24,11 +24,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('time', time_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.time
|
||||
result = jc.parsers.time.parse(time_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
Source: https://www.freebsd.org/cgi/man.cgi?query=getrusage
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.timedatectl
|
||||
|
||||
jc - JSON CLI output utility `timedatectl` command output parser
|
||||
jc - JSON Convert `timedatectl` command output parser
|
||||
|
||||
The `epoch_utc` calculated timestamp field is timezone-aware and is only
|
||||
available if the `universal_time` field is available.
|
||||
@@ -21,11 +21,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('timedatectl', timedatectl_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.timedatectl
|
||||
result = jc.parsers.timedatectl.parse(timedatectl_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
@@ -92,4 +87,4 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 1.5 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 1.6 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.tracepath
|
||||
|
||||
jc - JSON CLI output utility `tracepath` command output parser
|
||||
jc - JSON Convert `tracepath` command output parser
|
||||
|
||||
Supports `tracepath` and `tracepath6` output.
|
||||
|
||||
@@ -20,11 +20,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('tracepath', tracepath_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.tracepath
|
||||
result = jc.parsers.tracepath.parse(tracepath_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.traceroute
|
||||
|
||||
jc - JSON CLI output utility `traceroute` command output parser
|
||||
jc - JSON Convert `traceroute` command output parser
|
||||
|
||||
Supports `traceroute` and `traceroute6` output.
|
||||
|
||||
@@ -27,11 +27,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('traceroute', traceroute_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.traceroute
|
||||
result = jc.parsers.traceroute.parse(traceroute_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.ufw
|
||||
|
||||
jc - JSON CLI output utility `ufw status` command output parser
|
||||
jc - JSON Convert `ufw status` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('ufw', ufw_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.ufw
|
||||
result = jc.parsers.ufw.parse(ufw_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.ufw\_appinfo
|
||||
|
||||
jc - JSON CLI output utility `ufw app info [application]` command
|
||||
jc - JSON Convert `ufw app info [application]` command
|
||||
output parser
|
||||
|
||||
Supports individual apps via `ufw app info [application]` and all apps list
|
||||
@@ -26,11 +26,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('ufw_appinfo', ufw_appinfo_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.ufw_appinfo
|
||||
result = jc.parsers.ufw_appinfo.parse(ufw_appinfo_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.uname
|
||||
|
||||
jc - JSON CLI output utility `uname -a` command output parser
|
||||
jc - JSON Convert `uname -a` command output parser
|
||||
|
||||
Note: Must use `uname -a`
|
||||
|
||||
@@ -20,11 +20,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('uname', uname_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.uname
|
||||
result = jc.parsers.uname.parse(uname_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
|
||||
@@ -8,21 +8,35 @@
|
||||
|
||||
# jc.parsers.universal
|
||||
|
||||
jc - JSON CLI output utility universal Parsers
|
||||
jc - JSON Convert universal parsers
|
||||
|
||||
<a id="jc.parsers.universal.simple_table_parse"></a>
|
||||
|
||||
### simple\_table\_parse
|
||||
|
||||
```python
|
||||
def simple_table_parse(data: List[str]) -> List[Dict]
|
||||
def simple_table_parse(data: Iterable[str]) -> List[Dict]
|
||||
```
|
||||
|
||||
Parse simple tables. The last column may contain data with spaces.
|
||||
Parse simple tables. There should be no blank cells. The last column
|
||||
may contain data with spaces.
|
||||
|
||||
Example Table:
|
||||
|
||||
col_1 col_2 col_3 col_4 col_5
|
||||
apple orange pear banana my favorite fruits
|
||||
carrot squash celery spinach my favorite veggies
|
||||
chicken beef pork eggs my favorite proteins
|
||||
|
||||
[{'col_1': 'apple', 'col_2': 'orange', 'col_3': 'pear', 'col_4':
|
||||
'banana', 'col_5': 'my favorite fruits'}, {'col_1': 'carrot',
|
||||
'col_2': 'squash', 'col_3': 'celery', 'col_4': 'spinach', 'col_5':
|
||||
'my favorite veggies'}, {'col_1': 'chicken', 'col_2': 'beef',
|
||||
'col_3': 'pork', 'col_4': 'eggs', 'col_5': 'my favorite proteins'}]
|
||||
|
||||
Parameters:
|
||||
|
||||
data: (list) Text data to parse that has been split into lines
|
||||
data: (iter) Text data to parse that has been split into lines
|
||||
via .splitlines(). Item 0 must be the header row.
|
||||
Any spaces in header names should be changed to
|
||||
underscore '_'. You should also ensure headers are
|
||||
@@ -40,23 +54,38 @@ Returns:
|
||||
### sparse\_table\_parse
|
||||
|
||||
```python
|
||||
def sparse_table_parse(data: List[str], delim: Optional[str] = '\u2063') -> List[Dict]
|
||||
def sparse_table_parse(data: Iterable[str],
|
||||
delim: str = '\u2063') -> List[Dict]
|
||||
```
|
||||
|
||||
Parse tables with missing column data or with spaces in column data.
|
||||
Blank cells are converted to None in the resulting dictionary. Data
|
||||
elements must line up within column boundaries.
|
||||
|
||||
Example Table:
|
||||
|
||||
col_1 col_2 col_3 col_4 col_5
|
||||
apple orange fuzzy peach my favorite fruits
|
||||
green beans celery spinach my favorite veggies
|
||||
chicken beef brown eggs my favorite proteins
|
||||
|
||||
[{'col_1': 'apple', 'col_2': 'orange', 'col_3': None, 'col_4':
|
||||
'fuzzy peach', 'col_5': 'my favorite fruits'}, {'col_1':
|
||||
'green beans', 'col_2': None, 'col_3': 'celery', 'col_4': 'spinach',
|
||||
'col_5': 'my favorite veggies'}, {'col_1': 'chicken', 'col_2':
|
||||
'beef', 'col_3': None, 'col_4': 'brown eggs', 'col_5':
|
||||
'my favorite proteins'}]
|
||||
|
||||
Parameters:
|
||||
|
||||
data: (list) Text data to parse that has been split into lines
|
||||
via .splitlines(). Item 0 must be the header row.
|
||||
Any spaces in header names should be changed to
|
||||
underscore '_'. You should also ensure headers are
|
||||
lowercase by using .lower(). Do not change the
|
||||
position of header names as the positions are used
|
||||
to find the data.
|
||||
data: (iter) An iterable of string lines (e.g. str.splitlines())
|
||||
Item 0 must be the header row. Any spaces in header
|
||||
names should be changed to underscore '_'. You
|
||||
should also ensure headers are lowercase by using
|
||||
.lower(). Do not change the position of header
|
||||
names as the positions are used to find the data.
|
||||
|
||||
Also, ensure there are no blank lines (list items)
|
||||
in the data.
|
||||
Also, ensure there are no blank line items.
|
||||
|
||||
delim: (string) Delimiter to use. By default `u\\2063`
|
||||
(invisible separator) is used since it is unlikely
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.upower
|
||||
|
||||
jc - JSON CLI output utility `upower` command output parser
|
||||
jc - JSON Convert `upower` command output parser
|
||||
|
||||
The `updated_epoch` calculated timestamp field is naive. (i.e. based on the
|
||||
local time of the system the parser is run on)
|
||||
@@ -24,11 +24,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('upower', upower_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.upower
|
||||
result = jc.parsers.upower.parse(upower_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
@@ -226,4 +221,4 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 1.3 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 1.4 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.uptime
|
||||
|
||||
jc - JSON CLI output utility `uptime` command output parser
|
||||
jc - JSON Convert `uptime` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('uptime', uptime_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.uptime
|
||||
result = jc.parsers.uptime.parse(uptime_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.vmstat
|
||||
|
||||
jc - JSON CLI output utility `vmstat` command output parser
|
||||
jc - JSON Convert `vmstat` command output parser
|
||||
|
||||
Options supported: `-a`, `-w`, `-d`, `-t`
|
||||
|
||||
@@ -26,11 +26,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('vmstat', vmstat_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.vmstat
|
||||
result = jc.parsers.vmstat.parse(vmstat_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
@@ -154,4 +149,4 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 1.1 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 1.2 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -3,9 +3,10 @@
|
||||
|
||||
# jc.parsers.vmstat\_s
|
||||
|
||||
jc - JSON CLI output utility `vmstat` command output streaming parser
|
||||
jc - JSON Convert `vmstat` command output streaming parser
|
||||
|
||||
> This streaming parser outputs JSON Lines
|
||||
> This streaming parser outputs JSON Lines (cli) or returns a Generator
|
||||
iterator of Dictionaries (module)
|
||||
|
||||
Options supported: `-a`, `-w`, `-d`, `-t`
|
||||
|
||||
@@ -20,28 +21,20 @@ Usage (cli):
|
||||
$ vmstat | jc --vmstat-s
|
||||
|
||||
> Note: When piping `jc` converted `vmstat` output to other processes it may
|
||||
appear the output is hanging due to the OS pipe buffers. This is because
|
||||
`vmstat` output is too small to quickly fill up the buffer. Use the `-u`
|
||||
option to unbuffer the `jc` output if you would like immediate output. See
|
||||
the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output)
|
||||
for more information.
|
||||
appear the output is hanging due to the OS pipe buffers. This is because
|
||||
`vmstat` output is too small to quickly fill up the buffer. Use the `-u`
|
||||
option to unbuffer the `jc` output if you would like immediate output. See
|
||||
the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output)
|
||||
for more information.
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
# result is an iterable object (generator)
|
||||
|
||||
result = jc.parse('vmstat_s', vmstat_command_output.splitlines())
|
||||
for item in result:
|
||||
# do something
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.vmstat_s
|
||||
# result is an iterable object (generator)
|
||||
result = jc.parsers.vmstat_s.parse(vmstat_command_output.splitlines())
|
||||
for item in result:
|
||||
# do something
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
@@ -80,14 +73,12 @@ Schema:
|
||||
"epoch": integer, # [0]
|
||||
"epoch_utc": integer # [1]
|
||||
|
||||
# Below object only exists if using -qq or ignore_exceptions=True
|
||||
|
||||
"_jc_meta":
|
||||
{
|
||||
"success": boolean, # [2]
|
||||
"error": string, # [3]
|
||||
"line": string # [3]
|
||||
}
|
||||
# below object only exists if using -qq or ignore_exceptions=True
|
||||
"_jc_meta": {
|
||||
"success": boolean, # [2]
|
||||
"error": string, # [3]
|
||||
"line": string # [3]
|
||||
}
|
||||
}
|
||||
|
||||
[0] naive timestamp if -t flag is used
|
||||
@@ -110,6 +101,7 @@ Examples:
|
||||
### parse
|
||||
|
||||
```python
|
||||
@add_jc_meta
|
||||
def parse(data, raw=False, quiet=False, ignore_exceptions=False)
|
||||
```
|
||||
|
||||
@@ -130,9 +122,9 @@ Yields:
|
||||
|
||||
Returns:
|
||||
|
||||
Iterator object
|
||||
Iterator object (generator)
|
||||
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 0.6 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.w
|
||||
|
||||
jc - JSON CLI output utility `w` command output parser
|
||||
jc - JSON Convert `w` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('w', w_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.w
|
||||
result = jc.parsers.w.parse(w_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.wc
|
||||
|
||||
jc - JSON CLI output utility `wc` command output parser
|
||||
jc - JSON Convert `wc` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -18,11 +18,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('wc', wc_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.wc
|
||||
result = jc.parsers.wc.parse(wc_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.who
|
||||
|
||||
jc - JSON CLI output utility `who` command output parser
|
||||
jc - JSON Convert `who` command output parser
|
||||
|
||||
Accepts any of the following who options (or no options): `-aTH`
|
||||
|
||||
@@ -23,11 +23,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('who', who_command_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.who
|
||||
result = jc.parsers.who.parse(who_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
@@ -163,4 +158,4 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, cygwin, aix, freebsd
|
||||
|
||||
Version 1.5 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 1.6 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.xml
|
||||
|
||||
jc - JSON CLI output utility `XML` file parser
|
||||
jc - JSON Convert `XML` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -14,11 +14,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('xml', xml_file_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.xml
|
||||
result = jc.parsers.xml.parse(xml_file_output)
|
||||
|
||||
Schema:
|
||||
|
||||
XML Document converted to a Dictionary
|
||||
|
||||
163
docs/parsers/xrandr.md
Normal file
163
docs/parsers/xrandr.md
Normal file
@@ -0,0 +1,163 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.xrandr"></a>
|
||||
|
||||
# jc.parsers.xrandr
|
||||
|
||||
jc - JSON Convert `xrandr` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ xrandr | jc --xrandr
|
||||
|
||||
or
|
||||
|
||||
$ jc xrandr
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('xrandr', xrandr_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
"screens": [
|
||||
{
|
||||
"screen_number": integer,
|
||||
"minimum_width": integer,
|
||||
"minimum_height": integer,
|
||||
"current_width": integer,
|
||||
"current_height": integer,
|
||||
"maximum_width": integer,
|
||||
"maximum_height": integer,
|
||||
"associated_device": {
|
||||
"associated_modes": [
|
||||
{
|
||||
"resolution_width": integer,
|
||||
"resolution_height": integer,
|
||||
"is_high_resolution": boolean,
|
||||
"frequencies": [
|
||||
{
|
||||
"frequency": float,
|
||||
"is_current": boolean,
|
||||
"is_preferred": boolean
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"is_connected": boolean,
|
||||
"is_primary": boolean,
|
||||
"device_name": string,
|
||||
"resolution_width": integer,
|
||||
"resolution_height": integer,
|
||||
"offset_width": integer,
|
||||
"offset_height": integer,
|
||||
"dimension_width": integer,
|
||||
"dimension_height": integer
|
||||
}
|
||||
],
|
||||
"unassociated_devices": [
|
||||
{
|
||||
"associated_modes": [
|
||||
{
|
||||
"resolution_width": integer,
|
||||
"resolution_height": integer,
|
||||
"is_high_resolution": boolean,
|
||||
"frequencies": [
|
||||
{
|
||||
"frequency": float,
|
||||
"is_current": boolean,
|
||||
"is_preferred": boolean
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Examples:
|
||||
|
||||
$ xrandr | jc --xrandr -p
|
||||
{
|
||||
"screens": [
|
||||
{
|
||||
"screen_number": 0,
|
||||
"minimum_width": 8,
|
||||
"minimum_height": 8,
|
||||
"current_width": 1920,
|
||||
"current_height": 1080,
|
||||
"maximum_width": 32767,
|
||||
"maximum_height": 32767,
|
||||
"associated_device": {
|
||||
"associated_modes": [
|
||||
{
|
||||
"resolution_width": 1920,
|
||||
"resolution_height": 1080,
|
||||
"is_high_resolution": false,
|
||||
"frequencies": [
|
||||
{
|
||||
"frequency": 60.03,
|
||||
"is_current": true,
|
||||
"is_preferred": true
|
||||
},
|
||||
{
|
||||
"frequency": 59.93,
|
||||
"is_current": false,
|
||||
"is_preferred": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"resolution_width": 1680,
|
||||
"resolution_height": 1050,
|
||||
"is_high_resolution": false,
|
||||
"frequencies": [
|
||||
{
|
||||
"frequency": 59.88,
|
||||
"is_current": false,
|
||||
"is_preferred": false
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"is_connected": true,
|
||||
"is_primary": true,
|
||||
"device_name": "eDP1",
|
||||
"resolution_width": 1920,
|
||||
"resolution_height": 1080,
|
||||
"offset_width": 0,
|
||||
"offset_height": 0,
|
||||
"dimension_width": 310,
|
||||
"dimension_height": 170
|
||||
}
|
||||
}
|
||||
],
|
||||
"unassociated_devices": []
|
||||
}
|
||||
|
||||
<a id="jc.parsers.xrandr.parse"></a>
|
||||
|
||||
### parse
|
||||
|
||||
```python
|
||||
def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict
|
||||
```
|
||||
|
||||
Main text parsing function
|
||||
|
||||
Parameters:
|
||||
|
||||
data: (string) text data to parse
|
||||
raw: (boolean) unprocessed output if True
|
||||
quiet: (boolean) suppress warning messages if True
|
||||
|
||||
Returns:
|
||||
|
||||
Dictionary. Raw or processed structured data.
|
||||
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, cygwin, aix, freebsd
|
||||
|
||||
Version 1.0 by Kevin Lyter (lyter_git at sent.com)
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.yaml
|
||||
|
||||
jc - JSON CLI output utility `YAML` file parser
|
||||
jc - JSON Convert `YAML` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -14,11 +14,6 @@ Usage (module):
|
||||
import jc
|
||||
result = jc.parse('yaml', yaml_file_output)
|
||||
|
||||
or
|
||||
|
||||
import jc.parsers.yaml
|
||||
result = jc.parsers.yaml.parse(yaml_file_output)
|
||||
|
||||
Schema:
|
||||
|
||||
YAML Document converted to a Dictionary
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user