mirror of
https://github.com/kellyjonbrazil/jc.git
synced 2026-04-03 17:44:07 +02:00
Compare commits
266 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b877cc9509 | ||
|
|
32fddce8fb | ||
|
|
03a2b35846 | ||
|
|
086cdc559c | ||
|
|
97eefe28f1 | ||
|
|
32019c99f4 | ||
|
|
f30e15159f | ||
|
|
efd0bae0d6 | ||
|
|
253aa03e07 | ||
|
|
32183118de | ||
|
|
6c8ad1139c | ||
|
|
980c2907ad | ||
|
|
00129f4b40 | ||
|
|
f178bea0d0 | ||
|
|
c583598257 | ||
|
|
1e14425555 | ||
|
|
4a103927cd | ||
|
|
ab3dc41358 | ||
|
|
c9fcd3d203 | ||
|
|
5186347b48 | ||
|
|
e4a40704b5 | ||
|
|
fcfbbc6d84 | ||
|
|
95a38c7712 | ||
|
|
be0f4477bf | ||
|
|
3ebd897601 | ||
|
|
c60e1e8d7f | ||
|
|
eb205562bf | ||
|
|
83a50bb610 | ||
|
|
331171b826 | ||
|
|
1d9965dad6 | ||
|
|
647820c75e | ||
|
|
d9c7dde174 | ||
|
|
ef8c688fa1 | ||
|
|
b0f0d02e75 | ||
|
|
51bc2674bd | ||
|
|
5fc2008517 | ||
|
|
611e5c7ea2 | ||
|
|
74c8b0678a | ||
|
|
00afd79858 | ||
|
|
45fae976f0 | ||
|
|
ae9c1746f1 | ||
|
|
fa1699298b | ||
|
|
c8720b259c | ||
|
|
113a90a5a0 | ||
|
|
7c0e43b2e1 | ||
|
|
d51df73f37 | ||
|
|
8da203648b | ||
|
|
12cc670fa0 | ||
|
|
88222edb7f | ||
|
|
7ca0a511d5 | ||
|
|
02e08403e3 | ||
|
|
e29262b95a | ||
|
|
c449914936 | ||
|
|
9c290b5e11 | ||
|
|
2d9dcde0e3 | ||
|
|
da681a463e | ||
|
|
aeb494703e | ||
|
|
da4e3670b1 | ||
|
|
075e2301e4 | ||
|
|
df3f94b017 | ||
|
|
3df006fb97 | ||
|
|
52d98a1157 | ||
|
|
7c772d3a5a | ||
|
|
a583ecba7b | ||
|
|
76e7347ecf | ||
|
|
e49e6ad179 | ||
|
|
859bece921 | ||
|
|
8ffde41fa4 | ||
|
|
c88bf3e94b | ||
|
|
e623ceacc8 | ||
|
|
92a044ba9b | ||
|
|
906eeefa52 | ||
|
|
e5913cd10d | ||
|
|
52d252f199 | ||
|
|
28425cc493 | ||
|
|
a0ae19a8fd | ||
|
|
0bebb312dd | ||
|
|
0e35e85753 | ||
|
|
bc816bb858 | ||
|
|
e171861629 | ||
|
|
8f539af4ab | ||
|
|
122a4d8f32 | ||
|
|
8bd935791e | ||
|
|
edbae09a17 | ||
|
|
d115d43559 | ||
|
|
bdb218cb0f | ||
|
|
e4e07b76ec | ||
|
|
fd28fea3b6 | ||
|
|
d3c1a73ced | ||
|
|
c4de1c53b9 | ||
|
|
860167b950 | ||
|
|
4ebde3af5f | ||
|
|
ab5e9a46b4 | ||
|
|
c348fa89a9 | ||
|
|
140dc656a2 | ||
|
|
2cad23a7f3 | ||
|
|
9e5c3ae6fb | ||
|
|
ab33836637 | ||
|
|
cb684fa6de | ||
|
|
de6307dc38 | ||
|
|
da51b2b5a0 | ||
|
|
03f0984e1d | ||
|
|
e1f6007dea | ||
|
|
0508256d28 | ||
|
|
993fcd989b | ||
|
|
65d647bc0a | ||
|
|
23d5204634 | ||
|
|
8a239b8f9c | ||
|
|
0a89652ae5 | ||
|
|
6d6054d1dc | ||
|
|
bc9cdadfb0 | ||
|
|
cfe98506a5 | ||
|
|
c4c159f056 | ||
|
|
4d761d7e8a | ||
|
|
c1f36f7455 | ||
|
|
c976c3226d | ||
|
|
cc6287c124 | ||
|
|
966fe97759 | ||
|
|
1f2fe65185 | ||
|
|
b83cd24d57 | ||
|
|
5b4e4fd943 | ||
|
|
61cd9acaa2 | ||
|
|
d2895928bd | ||
|
|
5c354b02ea | ||
|
|
a764642a85 | ||
|
|
a9b0fe6728 | ||
|
|
79ade2c182 | ||
|
|
146dc070ea | ||
|
|
c1b2bae333 | ||
|
|
e771b36a18 | ||
|
|
edcb2280cc | ||
|
|
a249ca1da3 | ||
|
|
f1383b5c66 | ||
|
|
00e497828e | ||
|
|
5968eb697e | ||
|
|
ea78b389c9 | ||
|
|
0b726f7acc | ||
|
|
4d4b95c995 | ||
|
|
fc06d195ec | ||
|
|
c7fc2e3b92 | ||
|
|
980fc77812 | ||
|
|
75dc1722da | ||
|
|
9326f1f0da | ||
|
|
ac831444ce | ||
|
|
4746cb3814 | ||
|
|
6c38a3bbaa | ||
|
|
9699a184d1 | ||
|
|
51eb2c9fa8 | ||
|
|
abf6ea1fec | ||
|
|
37835c1972 | ||
|
|
cd2f139409 | ||
|
|
13bba1f4b8 | ||
|
|
4f21c7b7b4 | ||
|
|
65cf7960bf | ||
|
|
96c5ef5fa2 | ||
|
|
f7c6a82e73 | ||
|
|
23e81bc3fe | ||
|
|
7c35845006 | ||
|
|
7ad0f8a17f | ||
|
|
b6cd123719 | ||
|
|
944ae9f8d9 | ||
|
|
935e114d40 | ||
|
|
7fbfec4e5a | ||
|
|
6d5c72b54b | ||
|
|
23ad501595 | ||
|
|
985d7d28ed | ||
|
|
9ddaddfaa0 | ||
|
|
de11ae20a4 | ||
|
|
89574faef7 | ||
|
|
7bf6f1b870 | ||
|
|
0ee0cb35bc | ||
|
|
780eb05553 | ||
|
|
d71a7fbbed | ||
|
|
5b597b6583 | ||
|
|
42b24d71e9 | ||
|
|
07c65351d5 | ||
|
|
cadf7e732e | ||
|
|
8682a6bd0a | ||
|
|
e20357663d | ||
|
|
e777992b3e | ||
|
|
5f43abc908 | ||
|
|
8cbd92ccb6 | ||
|
|
80b4f7d037 | ||
|
|
d5839e199f | ||
|
|
4b9ed91546 | ||
|
|
2e9b9ab987 | ||
|
|
9a50a0cc2c | ||
|
|
167ea6dfcf | ||
|
|
f17d9ccbd6 | ||
|
|
8a6bbc55d2 | ||
|
|
d42ec58ad1 | ||
|
|
c82c6a88f8 | ||
|
|
e7c8778e30 | ||
|
|
7c4cf66243 | ||
|
|
b4b3a11f01 | ||
|
|
17ce869939 | ||
|
|
05fd3cf787 | ||
|
|
3daf90c5fe | ||
|
|
02db3baf52 | ||
|
|
0bc7311473 | ||
|
|
2fda7af8a7 | ||
|
|
0cd471dfb2 | ||
|
|
20982ab1a6 | ||
|
|
81ed9c0c5c | ||
|
|
23263bd83e | ||
|
|
4d3d608e5c | ||
|
|
850a02b4c0 | ||
|
|
2d4ace68e7 | ||
|
|
9adc66af63 | ||
|
|
c24c5f7985 | ||
|
|
5f280c3e24 | ||
|
|
edff49a44f | ||
|
|
345431bbcc | ||
|
|
b087e712ca | ||
|
|
b7a281c6c4 | ||
|
|
bc1521d937 | ||
|
|
c15f7641f4 | ||
|
|
123de1a3ce | ||
|
|
6d66557b11 | ||
|
|
cb3484e1ab | ||
|
|
3166600ac6 | ||
|
|
ba39f35a01 | ||
|
|
934ef04694 | ||
|
|
bfe41d0391 | ||
|
|
5c9cd4e4cd | ||
|
|
c57d3416b7 | ||
|
|
498a2a314b | ||
|
|
63961d8711 | ||
|
|
02f7d73fca | ||
|
|
0bfb5f8a3c | ||
|
|
f22ac8db2b | ||
|
|
86067f913b | ||
|
|
4744757726 | ||
|
|
108e1b730e | ||
|
|
bf93d60bf1 | ||
|
|
cd5547dfd8 | ||
|
|
ff7f830f65 | ||
|
|
0993fec114 | ||
|
|
ebec5c98b8 | ||
|
|
4075bce26a | ||
|
|
37b830a2fd | ||
|
|
f22dd3aa88 | ||
|
|
c27591e838 | ||
|
|
790cdf2996 | ||
|
|
7f73740fc7 | ||
|
|
babb08c2e0 | ||
|
|
24960cd02b | ||
|
|
1fcf844e8d | ||
|
|
4b245952fe | ||
|
|
4bb4cced90 | ||
|
|
6625ade578 | ||
|
|
3f74571dfc | ||
|
|
c8c3d5dc3d | ||
|
|
6b862dc860 | ||
|
|
92956cb1a7 | ||
|
|
1df662102c | ||
|
|
726bcc83d2 | ||
|
|
b4fb2d102c | ||
|
|
624fba9704 | ||
|
|
fdb629f82b | ||
|
|
11d2eb35be | ||
|
|
d970b435b4 | ||
|
|
82398aef5a | ||
|
|
deaf1860fb | ||
|
|
9fcf1eb9cb | ||
|
|
80de7ed5cb |
86
CHANGELOG
86
CHANGELOG
@@ -1,5 +1,91 @@
|
||||
jc changelog
|
||||
|
||||
20220926 v1.22.0
|
||||
- Add /proc file parsers for linux. Support for the following files:
|
||||
`/proc/buddyinfo`
|
||||
`/proc/consoles`
|
||||
`/proc/cpuinfo`
|
||||
`/proc/crypto`
|
||||
`/proc/devices`
|
||||
`/proc/diskstats`
|
||||
`/proc/filesystems`
|
||||
`/proc/interrupts`
|
||||
`/proc/iomem`
|
||||
`/proc/ioports`
|
||||
`/proc/loadavg`
|
||||
`/proc/locks`
|
||||
`/proc/meminfo`
|
||||
`/proc/modules`
|
||||
`/proc/mtrr`
|
||||
`/proc/pagetypeinfo`
|
||||
`/proc/partitions`
|
||||
`/proc/slabinfo`
|
||||
`/proc/softirqs`
|
||||
`/proc/stat`
|
||||
`/proc/swaps`
|
||||
`/proc/uptime`
|
||||
`/proc/version`
|
||||
`/proc/vmallocinfo`
|
||||
`/proc/vmstat`
|
||||
`/proc/zoneinfo`
|
||||
`/proc/driver/rtc`
|
||||
`/proc/net/arp`
|
||||
`/proc/net/dev`
|
||||
`/proc/net/dev_mcast`
|
||||
`/proc/net/if_inet6`
|
||||
`/proc/net/igmp`
|
||||
`/proc/net/igmp6`
|
||||
`/proc/net/ipv6_route`
|
||||
`/proc/net/netlink`
|
||||
`/proc/net/netstat`
|
||||
`/proc/net/packet`
|
||||
`/proc/net/protocols`
|
||||
`/proc/net/route`
|
||||
`/proc/net/unix`
|
||||
`/proc/<pid>/fdinfo/<fd>`
|
||||
`/proc/<pid>/io`
|
||||
`/proc/<pid>/maps`
|
||||
`/proc/<pid>/mountinfo`
|
||||
`/proc/<pid>/numa_maps`
|
||||
`/proc/<pid>/smaps`
|
||||
`/proc/<pid>/stat`
|
||||
`/proc/<pid>/statm`
|
||||
`/proc/<pid>/status`
|
||||
- Magic syntax support for `/proc` files
|
||||
- Enhance bash and zsh autocompletions for `/proc` files
|
||||
- Enhance `free` parser to support `-w` option integer conversions
|
||||
- Fix `ini` and `kv` parsers so they don't change keynames to lower case
|
||||
NOTE: This can be a breaking change in your scripts
|
||||
- Fix `id` command parser to allow usernames and groupnames with spaces
|
||||
- Enhance metadata output to output metadata even when results are empty
|
||||
- Optimize tests
|
||||
- Optimize documentation build script
|
||||
|
||||
20220829 v1.21.2
|
||||
- Fix IP Address string parser for older python versions that don't cleanly
|
||||
accept decimal input format - IPv6 fix (e.g. python 3.6)
|
||||
|
||||
20220828 v1.21.1
|
||||
- Fix IP Address string parser for older python versions that don't cleanly
|
||||
accept decimal input format - IPv4 fix (e.g. python 3.6)
|
||||
- Fix `arp -a` parser for cases where incomplete hardware addresses are found
|
||||
in the arp table on linux
|
||||
|
||||
20220821 v1.21.0
|
||||
- Add IP Address string parser
|
||||
- Add Syslog standard and streaming string parsers (RFC 3164 and RFC 5424)
|
||||
- Add CEF standard and streaming string parser
|
||||
- Add PLIST file parser (XML and binary support)
|
||||
- Add `-n` support to the `traceroute` parser
|
||||
- Add `mdadm` command parser tested on linux
|
||||
- Add `--meta-out` or `-M` option to add metadata to the JSON output, including
|
||||
a UTC timestamp, parser name, magic command, and magic command exit code
|
||||
- Fix `lsusb` command parser for output containing a `Device Qualifier` and
|
||||
`Binary Object Store Descriptor` sections
|
||||
- Change `LANG=C` to `LC_ALL=C` in locale instructions
|
||||
- Add `__main__.py` to package allowing `python -m jc` usage
|
||||
- Add an enclosing top-level folder inside the windows.zip package
|
||||
|
||||
20220723 v1.20.4
|
||||
- Fix URL string parser path list for URLs ending in a forward slash
|
||||
|
||||
|
||||
186
EXAMPLES.md
186
EXAMPLES.md
@@ -265,6 +265,37 @@ blkid -o udev -ip /dev/sda2 | jc --blkid -p # or: jc -p blkid -o udev
|
||||
}
|
||||
]
|
||||
```
|
||||
### CEF strings
|
||||
```bash
|
||||
cat cef.log | jc --cef -p
|
||||
```
|
||||
```json
|
||||
[
|
||||
{
|
||||
"deviceVendor": "Trend Micro",
|
||||
"deviceProduct": "Deep Security Agent",
|
||||
"deviceVersion": "<DSA version>",
|
||||
"deviceEventClassId": "4000000",
|
||||
"name": "Eicar_test_file",
|
||||
"agentSeverity": 6,
|
||||
"CEFVersion": 0,
|
||||
"dvchost": "hostname",
|
||||
"string": "hello \"world\"!",
|
||||
"start": "Nov 08 2020 12:30:00.111 UTC",
|
||||
"start_epoch": 1604867400,
|
||||
"start_epoch_utc": 1604838600,
|
||||
"Host_ID": 1,
|
||||
"Quarantine": 205,
|
||||
"myDate": "Nov 08 2022 12:30:00.111",
|
||||
"myDate_epoch": 1667939400,
|
||||
"myDate_epoch_utc": null,
|
||||
"myFloat": 3.14,
|
||||
"deviceEventClassIdNum": 4000000,
|
||||
"agentSeverityString": "Medium",
|
||||
"agentSeverityNum": 6
|
||||
}
|
||||
]
|
||||
```
|
||||
### chage --list
|
||||
```bash
|
||||
chage --list joeuser | jc --chage -p # or: jc -p chage --list joeuser
|
||||
@@ -1606,18 +1637,18 @@ cat example.ini | jc --ini -p
|
||||
```json
|
||||
{
|
||||
"bitbucket.org": {
|
||||
"serveraliveinterval": "45",
|
||||
"compression": "yes",
|
||||
"compressionlevel": "9",
|
||||
"forwardx11": "yes",
|
||||
"user": "hg"
|
||||
"ServeraLiveInterval": "45",
|
||||
"Compression": "yes",
|
||||
"CompressionLevel": "9",
|
||||
"ForwardX11": "yes",
|
||||
"User": "hg"
|
||||
},
|
||||
"topsecret.server.com": {
|
||||
"serveraliveinterval": "45",
|
||||
"compression": "yes",
|
||||
"compressionlevel": "9",
|
||||
"forwardx11": "no",
|
||||
"port": "50022"
|
||||
"ServeraLiveInterval": "45",
|
||||
"Compression": "yes",
|
||||
"CompressionLevel": "9",
|
||||
"ForwardX11": "no",
|
||||
"Port": "50022"
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -1665,6 +1696,65 @@ $ iostat | jc --iostat -p # or: jc -p iostat
|
||||
}
|
||||
]
|
||||
```
|
||||
### IP Address strings
|
||||
```bash
|
||||
echo 192.168.2.10/24 | jc --ip-address -p
|
||||
```
|
||||
```json
|
||||
{
|
||||
"version": 4,
|
||||
"max_prefix_length": 32,
|
||||
"ip": "192.168.2.10",
|
||||
"ip_compressed": "192.168.2.10",
|
||||
"ip_exploded": "192.168.2.10",
|
||||
"scope_id": null,
|
||||
"ipv4_mapped": null,
|
||||
"six_to_four": null,
|
||||
"teredo_client": null,
|
||||
"teredo_server": null,
|
||||
"dns_ptr": "10.2.168.192.in-addr.arpa",
|
||||
"network": "192.168.2.0",
|
||||
"broadcast": "192.168.2.255",
|
||||
"hostmask": "0.0.0.255",
|
||||
"netmask": "255.255.255.0",
|
||||
"cidr_netmask": 24,
|
||||
"hosts": 254,
|
||||
"first_host": "192.168.2.1",
|
||||
"last_host": "192.168.2.254",
|
||||
"is_multicast": false,
|
||||
"is_private": true,
|
||||
"is_global": false,
|
||||
"is_link_local": false,
|
||||
"is_loopback": false,
|
||||
"is_reserved": false,
|
||||
"is_unspecified": false,
|
||||
"int": {
|
||||
"ip": 3232236042,
|
||||
"network": 3232236032,
|
||||
"broadcast": 3232236287,
|
||||
"first_host": 3232236033,
|
||||
"last_host": 3232236286
|
||||
},
|
||||
"hex": {
|
||||
"ip": "c0:a8:02:0a",
|
||||
"network": "c0:a8:02:00",
|
||||
"broadcast": "c0:a8:02:ff",
|
||||
"hostmask": "00:00:00:ff",
|
||||
"netmask": "ff:ff:ff:00",
|
||||
"first_host": "c0:a8:02:01",
|
||||
"last_host": "c0:a8:02:fe"
|
||||
},
|
||||
"bin": {
|
||||
"ip": "11000000101010000000001000001010",
|
||||
"network": "11000000101010000000001000000000",
|
||||
"broadcast": "11000000101010000000001011111111",
|
||||
"hostmask": "00000000000000000000000011111111",
|
||||
"netmask": "11111111111111111111111100000000",
|
||||
"first_host": "11000000101010000000001000000001",
|
||||
"last_host": "11000000101010000000001011111110"
|
||||
}
|
||||
}
|
||||
```
|
||||
### iptables
|
||||
```bash
|
||||
iptables --line-numbers -v -L -t nat | jc --iptables -p # or: jc -p iptables --line-numbers -v -L -t nat
|
||||
@@ -2832,6 +2922,31 @@ pip show wrapt wheel | jc --pip-show -p # or: jc -p pip show wrapt whe
|
||||
}
|
||||
]
|
||||
```
|
||||
### PLIST files
|
||||
```bash
|
||||
cat info.plist | jc --plist -p
|
||||
```
|
||||
```json
|
||||
{
|
||||
"NSAppleScriptEnabled": true,
|
||||
"LSMultipleInstancesProhibited": true,
|
||||
"CFBundleInfoDictionaryVersion": "6.0",
|
||||
"DTPlatformVersion": "GM",
|
||||
"CFBundleIconFile": "GarageBand.icns",
|
||||
"CFBundleName": "GarageBand",
|
||||
"DTSDKName": "macosx10.13internal",
|
||||
"NSSupportsAutomaticGraphicsSwitching": true,
|
||||
"RevisionDate": "2018-12-03_14:10:56",
|
||||
"UTImportedTypeDeclarations": [
|
||||
{
|
||||
"UTTypeConformsTo": [
|
||||
"public.data",
|
||||
"public.content"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
### postconf -M
|
||||
```bash
|
||||
postconf -M | jc --postconf -p # or jc -p postconf -M
|
||||
@@ -3382,6 +3497,57 @@ sysctl -a | jc --sysctl -p # or: jc -p sysctl -a
|
||||
"user.expr_nest_max": 32
|
||||
}
|
||||
```
|
||||
### Syslog strings (RFC 5424)
|
||||
```bash
|
||||
cat syslog.txt | jc --syslog -p
|
||||
```
|
||||
```json
|
||||
[
|
||||
{
|
||||
"priority": 35,
|
||||
"version": 1,
|
||||
"timestamp": "2003-10-11T22:14:15.003Z",
|
||||
"hostname": "mymachine.example.com",
|
||||
"appname": "evntslog",
|
||||
"proc_id": null,
|
||||
"msg_id": "ID47",
|
||||
"structured_data": [
|
||||
{
|
||||
"identity": "exampleSDID@32473",
|
||||
"parameters": {
|
||||
"iut": "3",
|
||||
"eventSource": "Application",
|
||||
"eventID": "1011"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity": "examplePriority@32473",
|
||||
"parameters": {
|
||||
"class": "high"
|
||||
}
|
||||
}
|
||||
],
|
||||
"message": "unauthorized attempt",
|
||||
"timestamp_epoch": 1065935655,
|
||||
"timestamp_epoch_utc": 1065910455
|
||||
}
|
||||
]
|
||||
```
|
||||
### Syslog strings (RFC 3164)
|
||||
```bash
|
||||
cat syslog.txt | jc --syslog-bsd -p
|
||||
```
|
||||
```json
|
||||
[
|
||||
{
|
||||
"priority": 34,
|
||||
"date": "Oct 11 22:14:15",
|
||||
"hostname": "mymachine",
|
||||
"tag": "su",
|
||||
"content": "'su root' failed for lonvick on /dev/pts/8"
|
||||
}
|
||||
]
|
||||
```
|
||||
### systemctl
|
||||
```bash
|
||||
systemctl -a | jc --systemctl -p # or: jc -p systemctl -a
|
||||
|
||||
144
README.md
144
README.md
@@ -13,9 +13,9 @@ for an example.
|
||||
# JC
|
||||
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
|
||||
file-types.
|
||||
`jc` JSONifies the output of many CLI tools, file-types, and common strings
|
||||
for easier parsing in scripts. See the [**Parsers**](#parsers) section for
|
||||
supported commands, file-types, and strings.
|
||||
```bash
|
||||
dig example.com | jc --dig
|
||||
```
|
||||
@@ -70,7 +70,7 @@ values are converted, and, in some cases, additional semantic context fields are
|
||||
added.
|
||||
|
||||
To access the raw, pre-processed JSON, use the `-r` cli option or the `raw=True`
|
||||
function parameter in `parse()`.
|
||||
function parameter in `parse()` when using `jc` as a python library.
|
||||
|
||||
Schemas for each parser can be found at the documentation link beside each
|
||||
[**Parser**](#parsers) below.
|
||||
@@ -93,6 +93,7 @@ Use Cases:
|
||||
- [Ansible command output parsing](https://blog.kellybrazil.com/2020/08/30/parsing-command-output-in-ansible-with-jc/)
|
||||
- [Saltstack command output parsing](https://blog.kellybrazil.com/2020/09/15/parsing-command-output-in-saltstack-with-jc/)
|
||||
- [Nornir command output parsing](https://blog.kellybrazil.com/2020/12/09/parsing-command-output-in-nornir-with-jc/)
|
||||
- [FortiSOAR command output parsing](https://docs.fortinet.com/document/fortisoar/1.0.0/jc-parse-command-output/323/jc-parse-command-output-v1-0-0)
|
||||
|
||||
## Installation
|
||||
There are several ways to get `jc`. You can install via `pip`, OS package
|
||||
@@ -120,6 +121,7 @@ pip3 install jc
|
||||
| macOS | `brew install jc` |
|
||||
| FreeBSD | `portsnap fetch update && cd /usr/ports/textproc/py-jc && make install clean` |
|
||||
| Ansible filter plugin | `ansible-galaxy collection install community.general` |
|
||||
| FortiSOAR connector | Install from FortiSOAR Connector Marketplace |
|
||||
|
||||
> For more OS Packages, see https://repology.org/project/jc/versions.
|
||||
|
||||
@@ -131,14 +133,18 @@ on Github.
|
||||
`jc` accepts piped input from `STDIN` and outputs a JSON representation of the
|
||||
previous command's output to `STDOUT`.
|
||||
```bash
|
||||
COMMAND | jc PARSER [OPTIONS]
|
||||
COMMAND | jc [OPTIONS] PARSER
|
||||
cat FILE | jc [OPTIONS] PARSER
|
||||
echo STRING | jc [OPTIONS] PARSER
|
||||
```
|
||||
|
||||
Alternatively, the "magic" syntax can be used by prepending `jc` to the command
|
||||
to be converted. Options can be passed to `jc` immediately before the command is
|
||||
given. (Note: command aliases and shell builtins are not supported)
|
||||
to be converted or in front of the absolute path for Proc files. Options can be
|
||||
passed to `jc` immediately before the command or Proc file path is given.
|
||||
(Note: command aliases and shell builtins are not supported)
|
||||
```bash
|
||||
jc [OPTIONS] COMMAND
|
||||
jc [OPTIONS] /proc/<path-to-procfile>
|
||||
```
|
||||
|
||||
The JSON output can be compact (default) or pretty formatted with the `-p`
|
||||
@@ -155,6 +161,8 @@ option.
|
||||
| ` --asciitable` | ASCII and Unicode table parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/asciitable) |
|
||||
| ` --asciitable-m` | multi-line ASCII and Unicode table parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/asciitable_m) |
|
||||
| ` --blkid` | `blkid` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/blkid) |
|
||||
| ` --cef` | CEF string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/cef) |
|
||||
| ` --cef-s` | CEF string streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/cef_s) |
|
||||
| ` --chage` | `chage --list` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/chage) |
|
||||
| ` --cksum` | `cksum` and `sum` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/cksum) |
|
||||
| ` --crontab` | `crontab` command and file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/crontab) |
|
||||
@@ -189,10 +197,11 @@ option.
|
||||
| ` --ini` | INI file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ini) |
|
||||
| ` --iostat` | `iostat` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/iostat) |
|
||||
| ` --iostat-s` | `iostat` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/iostat_s) |
|
||||
| ` --ip-address` | IPv4 and IPv6 Address string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ip_address) |
|
||||
| ` --iptables` | `iptables` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/iptables) |
|
||||
| ` --iso-datetime` | ISO 8601 Datetime string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/iso_datetime) |
|
||||
| ` --iw-scan` | `iw dev [device] scan` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/iw_scan) |
|
||||
| ` --jar-manifest` | MANIFEST.MF file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/jar_manifest) |
|
||||
| ` --jar-manifest` | Java MANIFEST.MF file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/jar_manifest) |
|
||||
| ` --jobs` | `jobs` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/jobs) |
|
||||
| ` --jwt` | JWT string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/jwt) |
|
||||
| ` --kv` | Key/Value file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/kv) |
|
||||
@@ -204,6 +213,7 @@ option.
|
||||
| ` --lsof` | `lsof` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/lsof) |
|
||||
| ` --lsusb` | `lsusb` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/lsusb) |
|
||||
| ` --m3u` | M3U and M3U8 file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/m3u) |
|
||||
| ` --mdadm` | `mdadm` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/mdadm) |
|
||||
| ` --mount` | `mount` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/mount) |
|
||||
| ` --mpstat` | `mpstat` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/mpstat) |
|
||||
| ` --mpstat-s` | `mpstat` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/mpstat_s) |
|
||||
@@ -211,13 +221,15 @@ option.
|
||||
| ` --nmcli` | `nmcli` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/nmcli) |
|
||||
| ` --ntpq` | `ntpq -p` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ntpq) |
|
||||
| ` --passwd` | `/etc/passwd` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/passwd) |
|
||||
| ` --pidstat` | `pidstat -h` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pidstat) |
|
||||
| ` --pidstat-s` | `pidstat -h` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pidstat_s) |
|
||||
| ` --pidstat` | `pidstat -H` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pidstat) |
|
||||
| ` --pidstat-s` | `pidstat -H` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pidstat_s) |
|
||||
| ` --ping` | `ping` and `ping6` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ping) |
|
||||
| ` --ping-s` | `ping` and `ping6` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ping_s) |
|
||||
| ` --pip-list` | `pip list` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_list) |
|
||||
| ` --pip-show` | `pip show` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_show) |
|
||||
| ` --plist` | PLIST file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/plist) |
|
||||
| ` --postconf` | `postconf -M` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/postconf) |
|
||||
| ` --proc` | `/proc/` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/proc) |
|
||||
| ` --ps` | `ps` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ps) |
|
||||
| ` --route` | `route` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/route) |
|
||||
| ` --rpm-qi` | `rpm -qi` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/rpm_qi) |
|
||||
@@ -229,6 +241,10 @@ option.
|
||||
| ` --stat` | `stat` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/stat) |
|
||||
| ` --stat-s` | `stat` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/stat_s) |
|
||||
| ` --sysctl` | `sysctl` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/sysctl) |
|
||||
| ` --syslog` | Syslog RFC 5424 string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/syslog) |
|
||||
| ` --syslog-s` | Syslog RFC 5424 string streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/syslog_s) |
|
||||
| ` --syslog-bsd` | Syslog RFC 3164 string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/syslog_bsd) |
|
||||
| ` --syslog-bsd-s` | Syslog RFC 3164 string streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/syslog_bsd_s) |
|
||||
| ` --systemctl` | `systemctl` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/systemctl) |
|
||||
| ` --systemctl-lj` | `systemctl list-jobs` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/systemctl_lj) |
|
||||
| ` --systemctl-ls` | `systemctl list-sockets` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/systemctl_ls) |
|
||||
@@ -236,7 +252,7 @@ option.
|
||||
| ` --systeminfo` | `systeminfo` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/systeminfo) |
|
||||
| ` --time` | `/usr/bin/time` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/time) |
|
||||
| ` --timedatectl` | `timedatectl status` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/timedatectl) |
|
||||
| ` --timestamp` | UNIX Epoch Timestamp string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/timestamp) |
|
||||
| ` --timestamp` | Unix Epoch Timestamp string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/timestamp) |
|
||||
| ` --top` | `top -b` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/top) |
|
||||
| ` --top-s` | `top -b` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/top_s) |
|
||||
| ` --tracepath` | `tracepath` and `tracepath6` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/tracepath) |
|
||||
@@ -267,8 +283,9 @@ option.
|
||||
| `-a` | `--about` | About `jc`. Prints information about `jc` and the parsers (in JSON or YAML, of course!) |
|
||||
| `-C` | `--force-color` | Force color output even when using pipes (overrides `-m` and the `NO_COLOR` env variable) |
|
||||
| `-d` | `--debug` | Debug mode. Prints trace messages if parsing issues are encountered (use`-dd` for verbose debugging) |
|
||||
| `-h` | `--help` | Help. Use `jc -h --parser_name` for parser documentation |
|
||||
| `-h` | `--help` | Help. Use `jc -h --parser_name` for parser documentation. Use twice to show hidden parsers (e.g. `-hh`) |
|
||||
| `-m` | `--monochrome` | Monochrome output |
|
||||
| `-M` | `--meta-out` | Add metadata to output including timestamp, parser name, magic command, magic command exit code, etc. | |
|
||||
| `-p` | `--pretty` | Pretty format the JSON output |
|
||||
| `-q` | `--quiet` | Quiet mode. Suppresses parser warning messages (use `-qq` to ignore streaming parser errors) |
|
||||
| `-r` | `--raw` | Raw output. Provides more literal output, typically with string values and no additional semantic processing |
|
||||
@@ -280,7 +297,9 @@ option.
|
||||
|
||||
### Exit Codes
|
||||
Any fatal errors within `jc` will generate an exit code of `100`, otherwise the
|
||||
exit code will be `0`. When using the "magic" syntax (e.g. `jc ifconfig eth0`),
|
||||
exit code will be `0`.
|
||||
|
||||
When using the "magic" syntax (e.g. `jc ifconfig eth0`),
|
||||
`jc` will store the exit code of the program being parsed and add it to the `jc`
|
||||
exit code. This way it is easier to determine if an error was from the parsed
|
||||
program or `jc`.
|
||||
@@ -294,6 +313,44 @@ Consider the following examples using `ifconfig`:
|
||||
| `0` | `100` | `100` | Error in `jc` |
|
||||
| `1` | `100` | `101` | Error in both `ifconfig` and `jc` |
|
||||
|
||||
When using the "magic" syntax you can also retrieve the exit code of the called
|
||||
program by using the `--meta-out` or `-M` option. This will append a `_jc_meta`
|
||||
object to the output that will include the magic command information, including
|
||||
the exit code.
|
||||
|
||||
Here is an example with `ping`:
|
||||
```bash
|
||||
$ jc --meta-out -p ping -c2 192.168.1.252
|
||||
{
|
||||
"destination_ip": "192.168.1.252",
|
||||
"data_bytes": 56,
|
||||
"pattern": null,
|
||||
"destination": "192.168.1.252",
|
||||
"packets_transmitted": 2,
|
||||
"packets_received": 0,
|
||||
"packet_loss_percent": 100.0,
|
||||
"duplicates": 0,
|
||||
"responses": [
|
||||
{
|
||||
"type": "timeout",
|
||||
"icmp_seq": 0,
|
||||
"duplicate": false
|
||||
}
|
||||
],
|
||||
"_jc_meta": {
|
||||
"parser": "ping",
|
||||
"timestamp": 1661357115.27949,
|
||||
"magic_command": [
|
||||
"ping",
|
||||
"-c2",
|
||||
"192.168.1.252"
|
||||
],
|
||||
"magic_command_exit": 2
|
||||
}
|
||||
}
|
||||
$ echo $?
|
||||
2
|
||||
```
|
||||
|
||||
### Setting Custom Colors via Environment Variable
|
||||
You can specify custom colors via the `JC_COLORS` environment variable. The
|
||||
@@ -432,15 +489,16 @@ Local plugins may override default parsers.
|
||||
|
||||
#### Locale
|
||||
|
||||
For best results set the `LANG` locale environment variable to `C` or
|
||||
`en_US.UTF-8`. For example, either by setting directly on the command-line:
|
||||
For best results set the locale environment variables to `C` or
|
||||
`en_US.UTF-8` by modifying the `LC_ALL` variable:
|
||||
```
|
||||
$ LANG=C date | jc --date
|
||||
$ LC_ALL=C date | jc --date
|
||||
```
|
||||
|
||||
or by exporting to the environment before running commands:
|
||||
You can also set the locale variables individually:
|
||||
```
|
||||
$ export LANG=C
|
||||
$ export LC_NUMERIC=C
|
||||
```
|
||||
|
||||
On some older systems UTF-8 output will be downgraded to ASCII with `\\u`
|
||||
@@ -484,12 +542,12 @@ that case you can suppress the warning message with the `-q` cli option or the
|
||||
|
||||
macOS:
|
||||
```bash
|
||||
cat lsof.out | jc --lsof -q
|
||||
cat lsof.out | jc -q --lsof
|
||||
```
|
||||
|
||||
or Windows:
|
||||
```bash
|
||||
type lsof.out | jc --lsof -q
|
||||
type lsof.out | jc -q --lsof
|
||||
```
|
||||
|
||||
Tested on:
|
||||
@@ -533,7 +591,7 @@ documentation.
|
||||
|
||||
### arp
|
||||
```bash
|
||||
arp | jc --arp -p # or: jc -p arp
|
||||
arp | jc -p --arp # or: jc -p arp
|
||||
```
|
||||
```json
|
||||
[
|
||||
@@ -572,7 +630,7 @@ cat homes.csv
|
||||
...
|
||||
```
|
||||
```bash
|
||||
cat homes.csv | jc --csv -p
|
||||
cat homes.csv | jc -p --csv
|
||||
```
|
||||
```json
|
||||
[
|
||||
@@ -613,7 +671,7 @@ cat homes.csv | jc --csv -p
|
||||
```
|
||||
### /etc/hosts file
|
||||
```bash
|
||||
cat /etc/hosts | jc --hosts -p
|
||||
cat /etc/hosts | jc -p --hosts
|
||||
```
|
||||
```json
|
||||
[
|
||||
@@ -640,7 +698,7 @@ cat /etc/hosts | jc --hosts -p
|
||||
```
|
||||
### ifconfig
|
||||
```bash
|
||||
ifconfig | jc --ifconfig -p # or: jc -p ifconfig
|
||||
ifconfig | jc -p --ifconfig # or: jc -p ifconfig
|
||||
```
|
||||
```json
|
||||
[
|
||||
@@ -698,29 +756,29 @@ Port = 50022
|
||||
ForwardX11 = no
|
||||
```
|
||||
```bash
|
||||
cat example.ini | jc --ini -p
|
||||
cat example.ini | jc -p --ini
|
||||
```
|
||||
```json
|
||||
{
|
||||
"bitbucket.org": {
|
||||
"serveraliveinterval": "45",
|
||||
"compression": "yes",
|
||||
"compressionlevel": "9",
|
||||
"forwardx11": "yes",
|
||||
"user": "hg"
|
||||
"ServeraLiveInterval": "45",
|
||||
"Compression": "yes",
|
||||
"CompressionLevel": "9",
|
||||
"ForwardX11": "yes",
|
||||
"User": "hg"
|
||||
},
|
||||
"topsecret.server.com": {
|
||||
"serveraliveinterval": "45",
|
||||
"compression": "yes",
|
||||
"compressionlevel": "9",
|
||||
"forwardx11": "no",
|
||||
"port": "50022"
|
||||
"ServeraLiveInterval": "45",
|
||||
"Compression": "yes",
|
||||
"CompressionLevel": "9",
|
||||
"ForwardX11": "no",
|
||||
"Port": "50022"
|
||||
}
|
||||
}
|
||||
```
|
||||
### ls
|
||||
```bash
|
||||
$ ls -l /usr/bin | jc --ls -p # or: jc -p ls -l /usr/bin
|
||||
$ ls -l /usr/bin | jc -p --ls # or: jc -p ls -l /usr/bin
|
||||
```
|
||||
```json
|
||||
[
|
||||
@@ -756,7 +814,7 @@ $ ls -l /usr/bin | jc --ls -p # or: jc -p ls -l /usr/bin
|
||||
```
|
||||
### netstat
|
||||
```bash
|
||||
netstat -apee | jc --netstat -p # or: jc -p netstat -apee
|
||||
netstat -apee | jc -p --netstat # or: jc -p netstat -apee
|
||||
```
|
||||
```json
|
||||
[
|
||||
@@ -844,7 +902,7 @@ netstat -apee | jc --netstat -p # or: jc -p netstat -apee
|
||||
```
|
||||
### /etc/passwd file
|
||||
```bash
|
||||
cat /etc/passwd | jc --passwd -p
|
||||
cat /etc/passwd | jc -p --passwd
|
||||
```
|
||||
```json
|
||||
[
|
||||
@@ -870,7 +928,7 @@ cat /etc/passwd | jc --passwd -p
|
||||
```
|
||||
### ping
|
||||
```bash
|
||||
ping 8.8.8.8 -c 3 | jc --ping -p # or: jc -p ping 8.8.8.8 -c 3
|
||||
ping 8.8.8.8 -c 3 | jc -p --ping # or: jc -p ping 8.8.8.8 -c 3
|
||||
```
|
||||
```json
|
||||
{
|
||||
@@ -923,7 +981,7 @@ ping 8.8.8.8 -c 3 | jc --ping -p # or: jc -p ping 8.8.8.8 -c 3
|
||||
```
|
||||
### ps
|
||||
```bash
|
||||
ps axu | jc --ps -p # or: jc -p ps axu
|
||||
ps axu | jc -p --ps # or: jc -p ps axu
|
||||
```
|
||||
```json
|
||||
[
|
||||
@@ -970,7 +1028,7 @@ ps axu | jc --ps -p # or: jc -p ps axu
|
||||
```
|
||||
### traceroute
|
||||
```bash
|
||||
traceroute -m 2 8.8.8.8 | jc --traceroute -p
|
||||
traceroute -m 2 8.8.8.8 | jc -p --traceroute
|
||||
# or: jc -p traceroute -m 2 8.8.8.8
|
||||
```
|
||||
```json
|
||||
@@ -1035,7 +1093,7 @@ traceroute -m 2 8.8.8.8 | jc --traceroute -p
|
||||
```
|
||||
### uptime
|
||||
```bash
|
||||
uptime | jc --uptime -p # or: jc -p uptime
|
||||
uptime | jc -p --uptime # or: jc -p uptime
|
||||
```
|
||||
```json
|
||||
{
|
||||
@@ -1080,7 +1138,7 @@ cat cd_catalog.xml
|
||||
...
|
||||
```
|
||||
```bash
|
||||
cat cd_catalog.xml | jc --xml -p
|
||||
cat cd_catalog.xml | jc -p --xml
|
||||
```
|
||||
```json
|
||||
{
|
||||
@@ -1132,7 +1190,7 @@ spec:
|
||||
mode: ISTIO_MUTUAL
|
||||
```
|
||||
```bash
|
||||
cat istio.yaml | jc --yaml -p
|
||||
cat istio.yaml | jc -p --yaml
|
||||
```
|
||||
```json
|
||||
[
|
||||
|
||||
@@ -3,9 +3,9 @@ _jc()
|
||||
local cur prev words cword jc_commands jc_parsers jc_options \
|
||||
jc_about_options jc_about_mod_options jc_help_options jc_special_options
|
||||
|
||||
jc_commands=(acpi airport arp blkid chage cksum crontab date df dig dmidecode dpkg du env file finger free git gpg hciconfig id ifconfig iostat iptables iw jobs last lastb ls lsblk lsmod lsof lsusb md5 md5sum mount mpstat netstat nmcli ntpq pidstat ping ping6 pip pip3 postconf printenv ps route rpm rsync sfdisk sha1sum sha224sum sha256sum sha384sum sha512sum shasum ss stat sum sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 ufw uname update-alternatives upower uptime vdir vmstat w wc who xrandr zipinfo)
|
||||
jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --chage --cksum --crontab --crontab-u --csv --csv-s --date --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --iptables --iso-datetime --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lsusb --m3u --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --postconf --ps --route --rpm-qi --rsync --rsync-s --sfdisk --shadow --ss --stat --stat-s --sysctl --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo)
|
||||
jc_options=(--force-color -C --debug -d --monochrome -m --pretty -p --quiet -q --raw -r --unbuffer -u --yaml-out -y)
|
||||
jc_commands=(acpi airport arp blkid chage cksum crontab date df dig dmidecode dpkg du env file finger free git gpg hciconfig id ifconfig iostat iptables iw jobs last lastb ls lsblk lsmod lsof lsusb md5 md5sum mdadm mount mpstat netstat nmcli ntpq pidstat ping ping6 pip pip3 postconf printenv ps route rpm rsync sfdisk sha1sum sha224sum sha256sum sha384sum sha512sum shasum ss stat sum sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 ufw uname update-alternatives upower uptime vdir vmstat w wc who xrandr zipinfo)
|
||||
jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --cef --cef-s --chage --cksum --crontab --crontab-u --csv --csv-s --date --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iso-datetime --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --proc --proc-buddyinfo --proc-consoles --proc-cpuinfo --proc-crypto --proc-devices --proc-diskstats --proc-filesystems --proc-interrupts --proc-iomem --proc-ioports --proc-loadavg --proc-locks --proc-meminfo --proc-modules --proc-mtrr --proc-pagetypeinfo --proc-partitions --proc-slabinfo --proc-softirqs --proc-stat --proc-swaps --proc-uptime --proc-version --proc-vmallocinfo --proc-vmstat --proc-zoneinfo --proc-driver-rtc --proc-net-arp --proc-net-dev --proc-net-dev-mcast --proc-net-if-inet6 --proc-net-igmp --proc-net-igmp6 --proc-net-ipv6-route --proc-net-netlink --proc-net-netstat --proc-net-packet --proc-net-protocols --proc-net-route --proc-net-unix --proc-pid-fdinfo --proc-pid-io --proc-pid-maps --proc-pid-mountinfo --proc-pid-numa-maps --proc-pid-smaps --proc-pid-stat --proc-pid-statm --proc-pid-status --ps --route --rpm-qi --rsync --rsync-s --sfdisk --shadow --ss --stat --stat-s --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo)
|
||||
jc_options=(--force-color -C --debug -d --monochrome -m --meta-out -M --pretty -p --quiet -q --raw -r --unbuffer -u --yaml-out -y)
|
||||
jc_about_options=(--about -a)
|
||||
jc_about_mod_options=(--pretty -p --yaml-out -y --monochrome -m --force-color -C)
|
||||
jc_help_options=(--help -h)
|
||||
@@ -67,6 +67,12 @@ _jc()
|
||||
fi
|
||||
done
|
||||
|
||||
# if "/pr[oc]" (magic for Procfile parsers) is in the current word, complete with files/directories in the path
|
||||
if [[ "${cur}" =~ "/pr" ]]; then
|
||||
_filedir
|
||||
return 0
|
||||
fi
|
||||
|
||||
# if a parser arg is found anywhere in the line, only show options and help options
|
||||
for i in "${words[@]::${#words[@]}-1}"; do
|
||||
if [[ " ${jc_parsers[*]} " =~ " ${i} " ]]; then
|
||||
|
||||
@@ -9,7 +9,7 @@ _jc() {
|
||||
jc_help_options jc_help_options_describe \
|
||||
jc_special_options jc_special_options_describe
|
||||
|
||||
jc_commands=(acpi airport arp blkid chage cksum crontab date df dig dmidecode dpkg du env file finger free git gpg hciconfig id ifconfig iostat iptables iw jobs last lastb ls lsblk lsmod lsof lsusb md5 md5sum mount mpstat netstat nmcli ntpq pidstat ping ping6 pip pip3 postconf printenv ps route rpm rsync sfdisk sha1sum sha224sum sha256sum sha384sum sha512sum shasum ss stat sum sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 ufw uname update-alternatives upower uptime vdir vmstat w wc who xrandr zipinfo)
|
||||
jc_commands=(acpi airport arp blkid chage cksum crontab date df dig dmidecode dpkg du env file finger free git gpg hciconfig id ifconfig iostat iptables iw jobs last lastb ls lsblk lsmod lsof lsusb md5 md5sum mdadm mount mpstat netstat nmcli ntpq pidstat ping ping6 pip pip3 postconf printenv ps route rpm rsync sfdisk sha1sum sha224sum sha256sum sha384sum sha512sum shasum ss stat sum sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 ufw uname update-alternatives upower uptime vdir vmstat w wc who xrandr zipinfo)
|
||||
jc_commands_describe=(
|
||||
'acpi:run "acpi" command with magic syntax.'
|
||||
'airport:run "airport" command with magic syntax.'
|
||||
@@ -46,6 +46,7 @@ _jc() {
|
||||
'lsusb:run "lsusb" command with magic syntax.'
|
||||
'md5:run "md5" command with magic syntax.'
|
||||
'md5sum:run "md5sum" command with magic syntax.'
|
||||
'mdadm:run "mdadm" command with magic syntax.'
|
||||
'mount:run "mount" command with magic syntax.'
|
||||
'mpstat:run "mpstat" command with magic syntax.'
|
||||
'netstat:run "netstat" command with magic syntax.'
|
||||
@@ -94,7 +95,7 @@ _jc() {
|
||||
'xrandr:run "xrandr" command with magic syntax.'
|
||||
'zipinfo:run "zipinfo" command with magic syntax.'
|
||||
)
|
||||
jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --chage --cksum --crontab --crontab-u --csv --csv-s --date --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --iptables --iso-datetime --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lsusb --m3u --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --postconf --ps --route --rpm-qi --rsync --rsync-s --sfdisk --shadow --ss --stat --stat-s --sysctl --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo)
|
||||
jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --cef --cef-s --chage --cksum --crontab --crontab-u --csv --csv-s --date --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iso-datetime --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --proc --proc-buddyinfo --proc-consoles --proc-cpuinfo --proc-crypto --proc-devices --proc-diskstats --proc-filesystems --proc-interrupts --proc-iomem --proc-ioports --proc-loadavg --proc-locks --proc-meminfo --proc-modules --proc-mtrr --proc-pagetypeinfo --proc-partitions --proc-slabinfo --proc-softirqs --proc-stat --proc-swaps --proc-uptime --proc-version --proc-vmallocinfo --proc-vmstat --proc-zoneinfo --proc-driver-rtc --proc-net-arp --proc-net-dev --proc-net-dev-mcast --proc-net-if-inet6 --proc-net-igmp --proc-net-igmp6 --proc-net-ipv6-route --proc-net-netlink --proc-net-netstat --proc-net-packet --proc-net-protocols --proc-net-route --proc-net-unix --proc-pid-fdinfo --proc-pid-io --proc-pid-maps --proc-pid-mountinfo --proc-pid-numa-maps --proc-pid-smaps --proc-pid-stat --proc-pid-statm --proc-pid-status --ps --route --rpm-qi --rsync --rsync-s --sfdisk --shadow --ss --stat --stat-s --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo)
|
||||
jc_parsers_describe=(
|
||||
'--acpi:`acpi` command parser'
|
||||
'--airport:`airport -I` command parser'
|
||||
@@ -103,6 +104,8 @@ _jc() {
|
||||
'--asciitable:ASCII and Unicode table parser'
|
||||
'--asciitable-m:multi-line ASCII and Unicode table parser'
|
||||
'--blkid:`blkid` command parser'
|
||||
'--cef:CEF string parser'
|
||||
'--cef-s:CEF string streaming parser'
|
||||
'--chage:`chage --list` command parser'
|
||||
'--cksum:`cksum` and `sum` command parser'
|
||||
'--crontab:`crontab` command and file parser'
|
||||
@@ -137,10 +140,11 @@ _jc() {
|
||||
'--ini:INI file parser'
|
||||
'--iostat:`iostat` command parser'
|
||||
'--iostat-s:`iostat` command streaming parser'
|
||||
'--ip-address:IPv4 and IPv6 Address string parser'
|
||||
'--iptables:`iptables` command parser'
|
||||
'--iso-datetime:ISO 8601 Datetime string parser'
|
||||
'--iw-scan:`iw dev [device] scan` command parser'
|
||||
'--jar-manifest:MANIFEST.MF file parser'
|
||||
'--jar-manifest:Java MANIFEST.MF file parser'
|
||||
'--jobs:`jobs` command parser'
|
||||
'--jwt:JWT string parser'
|
||||
'--kv:Key/Value file parser'
|
||||
@@ -152,6 +156,7 @@ _jc() {
|
||||
'--lsof:`lsof` command parser'
|
||||
'--lsusb:`lsusb` command parser'
|
||||
'--m3u:M3U and M3U8 file parser'
|
||||
'--mdadm:`mdadm` command parser'
|
||||
'--mount:`mount` command parser'
|
||||
'--mpstat:`mpstat` command parser'
|
||||
'--mpstat-s:`mpstat` command streaming parser'
|
||||
@@ -159,13 +164,64 @@ _jc() {
|
||||
'--nmcli:`nmcli` command parser'
|
||||
'--ntpq:`ntpq -p` command parser'
|
||||
'--passwd:`/etc/passwd` file parser'
|
||||
'--pidstat:`pidstat -h` command parser'
|
||||
'--pidstat-s:`pidstat -h` command streaming parser'
|
||||
'--pidstat:`pidstat -H` command parser'
|
||||
'--pidstat-s:`pidstat -H` command streaming parser'
|
||||
'--ping:`ping` and `ping6` command parser'
|
||||
'--ping-s:`ping` and `ping6` command streaming parser'
|
||||
'--pip-list:`pip list` command parser'
|
||||
'--pip-show:`pip show` command parser'
|
||||
'--plist:PLIST file parser'
|
||||
'--postconf:`postconf -M` command parser'
|
||||
'--proc:`/proc/` file parser'
|
||||
'--proc-buddyinfo:`/proc/buddyinfo` file parser'
|
||||
'--proc-consoles:`/proc/consoles` file parser'
|
||||
'--proc-cpuinfo:`/proc/cpuinfo` file parser'
|
||||
'--proc-crypto:`/proc/crypto` file parser'
|
||||
'--proc-devices:`/proc/devices` file parser'
|
||||
'--proc-diskstats:`/proc/diskstats` file parser'
|
||||
'--proc-filesystems:`/proc/filesystems` file parser'
|
||||
'--proc-interrupts:`/proc/interrupts` file parser'
|
||||
'--proc-iomem:`/proc/iomem` file parser'
|
||||
'--proc-ioports:`/proc/ioports` file parser'
|
||||
'--proc-loadavg:`/proc/loadavg` file parser'
|
||||
'--proc-locks:`/proc/locks` file parser'
|
||||
'--proc-meminfo:`/proc/meminfo` file parser'
|
||||
'--proc-modules:`/proc/modules` file parser'
|
||||
'--proc-mtrr:`/proc/mtrr` file parser'
|
||||
'--proc-pagetypeinfo:`/proc/pagetypeinfo` file parser'
|
||||
'--proc-partitions:`/proc/partitions` file parser'
|
||||
'--proc-slabinfo:`/proc/slabinfo` file parser'
|
||||
'--proc-softirqs:`/proc/softirqs` file parser'
|
||||
'--proc-stat:`/proc/stat` file parser'
|
||||
'--proc-swaps:`/proc/swaps` file parser'
|
||||
'--proc-uptime:`/proc/uptime` file parser'
|
||||
'--proc-version:`/proc/version` file parser'
|
||||
'--proc-vmallocinfo:`/proc/vmallocinfo` file parser'
|
||||
'--proc-vmstat:`/proc/vmstat` file parser'
|
||||
'--proc-zoneinfo:`/proc/zoneinfo` file parser'
|
||||
'--proc-driver-rtc:`/proc/driver/rtc` file parser'
|
||||
'--proc-net-arp:`/proc/net/arp` file parser'
|
||||
'--proc-net-dev:`/proc/net/dev` file parser'
|
||||
'--proc-net-dev-mcast:`/proc/net/dev_mcast` file parser'
|
||||
'--proc-net-if-inet6:`/proc/net/if_inet6` file parser'
|
||||
'--proc-net-igmp:`/proc/net/igmp` file parser'
|
||||
'--proc-net-igmp6:`/proc/net/igmp6` file parser'
|
||||
'--proc-net-ipv6-route:`/proc/net/ipv6_route` file parser'
|
||||
'--proc-net-netlink:`/proc/net/netlink` file parser'
|
||||
'--proc-net-netstat:`/proc/net/netstat` file parser'
|
||||
'--proc-net-packet:`/proc/net/packet` file parser'
|
||||
'--proc-net-protocols:`/proc/net/protocols` file parser'
|
||||
'--proc-net-route:`/proc/net/route` file parser'
|
||||
'--proc-net-unix:`/proc/net/unix` file parser'
|
||||
'--proc-pid-fdinfo:`/proc/<pid>/fdinfo/<fd>` file parser'
|
||||
'--proc-pid-io:`/proc/<pid>/io` file parser'
|
||||
'--proc-pid-maps:`/proc/<pid>/maps` file parser'
|
||||
'--proc-pid-mountinfo:`/proc/<pid>/mountinfo` file parser'
|
||||
'--proc-pid-numa-maps:`/proc/<pid>/numa_maps` file parser'
|
||||
'--proc-pid-smaps:`/proc/<pid>/smaps` file parser'
|
||||
'--proc-pid-stat:`/proc/<pid>/stat` file parser'
|
||||
'--proc-pid-statm:`/proc/<pid>/statm` file parser'
|
||||
'--proc-pid-status:`/proc/<pid>/status` file parser'
|
||||
'--ps:`ps` command parser'
|
||||
'--route:`route` command parser'
|
||||
'--rpm-qi:`rpm -qi` command parser'
|
||||
@@ -177,6 +233,10 @@ _jc() {
|
||||
'--stat:`stat` command parser'
|
||||
'--stat-s:`stat` command streaming parser'
|
||||
'--sysctl:`sysctl` command parser'
|
||||
'--syslog:Syslog RFC 5424 string parser'
|
||||
'--syslog-s:Syslog RFC 5424 string streaming parser'
|
||||
'--syslog-bsd:Syslog RFC 3164 string parser'
|
||||
'--syslog-bsd-s:Syslog RFC 3164 string streaming parser'
|
||||
'--systemctl:`systemctl` command parser'
|
||||
'--systemctl-lj:`systemctl list-jobs` command parser'
|
||||
'--systemctl-ls:`systemctl list-sockets` command parser'
|
||||
@@ -184,7 +244,7 @@ _jc() {
|
||||
'--systeminfo:`systeminfo` command parser'
|
||||
'--time:`/usr/bin/time` command parser'
|
||||
'--timedatectl:`timedatectl status` command parser'
|
||||
'--timestamp:UNIX Epoch Timestamp string parser'
|
||||
'--timestamp:Unix Epoch Timestamp string parser'
|
||||
'--top:`top -b` command parser'
|
||||
'--top-s:`top -b` command streaming parser'
|
||||
'--tracepath:`tracepath` and `tracepath6` command parser'
|
||||
@@ -208,7 +268,7 @@ _jc() {
|
||||
'--yaml:YAML file parser'
|
||||
'--zipinfo:`zipinfo` command parser'
|
||||
)
|
||||
jc_options=(--force-color -C --debug -d --monochrome -m --pretty -p --quiet -q --raw -r --unbuffer -u --yaml-out -y)
|
||||
jc_options=(--force-color -C --debug -d --monochrome -m --meta-out -M --pretty -p --quiet -q --raw -r --unbuffer -u --yaml-out -y)
|
||||
jc_options_describe=(
|
||||
'--force-color:force color output even when using pipes (overrides -m)'
|
||||
'-C:force color output even when using pipes (overrides -m)'
|
||||
@@ -216,6 +276,8 @@ _jc() {
|
||||
'-d:debug (double for verbose debug)'
|
||||
'--monochrome:monochrome output'
|
||||
'-m:monochrome output'
|
||||
'--meta-out:add metadata to output including timestamp, etc.'
|
||||
'-M:add metadata to output including timestamp, etc.'
|
||||
'--pretty:pretty print output'
|
||||
'-p:pretty print output'
|
||||
'--quiet:suppress warnings (double to ignore streaming errors)'
|
||||
@@ -315,6 +377,13 @@ _jc() {
|
||||
fi
|
||||
done
|
||||
|
||||
# if "/pr[oc]" (magic for Procfile parsers) is in the current word, complete with files/directories in the path
|
||||
if [[ "${words[-1]}" =~ "/pr" ]]; then
|
||||
# run files completion
|
||||
_files
|
||||
return 0
|
||||
fi
|
||||
|
||||
# if a parser arg is found anywhere in the line, only show options and help options
|
||||
for i in ${words:0:-1}; do
|
||||
if (( $jc_parsers[(Ie)${i}] )); then
|
||||
|
||||
35
docgen.sh
35
docgen.sh
@@ -1,6 +1,9 @@
|
||||
#!/bin/bash
|
||||
# Generate docs.md
|
||||
# requires pydoc-markdown 4.6.1
|
||||
|
||||
# use ./docgen all to generate all docs
|
||||
|
||||
readme_config=$(cat <<'EOF'
|
||||
{
|
||||
"processors": [
|
||||
@@ -112,23 +115,25 @@ do
|
||||
parsers+=("$value")
|
||||
done < <(jc -a | jq -c '.parsers[] | select(.plugin != true)')
|
||||
|
||||
for parser in "${parsers[@]}"
|
||||
do (
|
||||
for parser in "${parsers[@]}"; do
|
||||
parser_name=$(jq -r '.name' <<< "$parser")
|
||||
compatible=$(jq -r '.compatible | join(", ")' <<< "$parser")
|
||||
version=$(jq -r '.version' <<< "$parser")
|
||||
author=$(jq -r '.author' <<< "$parser")
|
||||
author_email=$(jq -r '.author_email' <<< "$parser")
|
||||
{
|
||||
if [[ $1 == "all" ]] || ! git diff --quiet --exit-code HEAD~5 -- "parsers/${parser_name}.py"; then
|
||||
compatible=$(jq -r '.compatible | join(", ")' <<< "$parser")
|
||||
version=$(jq -r '.version' <<< "$parser")
|
||||
author=$(jq -r '.author' <<< "$parser")
|
||||
author_email=$(jq -r '.author_email' <<< "$parser")
|
||||
|
||||
echo "Building docs for: ${parser_name}"
|
||||
echo "[Home](https://kellyjonbrazil.github.io/jc/)" > ../docs/parsers/"${parser_name}".md
|
||||
pydoc-markdown -m jc.parsers."${parser_name}" "${parser_config}" >> ../docs/parsers/"${parser_name}".md
|
||||
echo "### Parser Information" >> ../docs/parsers/"${parser_name}".md
|
||||
echo "Compatibility: ${compatible}" >> ../docs/parsers/"${parser_name}".md
|
||||
echo >> ../docs/parsers/"${parser_name}".md
|
||||
echo "Version ${version} by ${author} (${author_email})" >> ../docs/parsers/"${parser_name}".md
|
||||
echo "+++ ${parser_name} docs complete"
|
||||
) &
|
||||
echo "Building docs for: ${parser_name}"
|
||||
echo "[Home](https://kellyjonbrazil.github.io/jc/)" > ../docs/parsers/"${parser_name}".md
|
||||
pydoc-markdown -m jc.parsers."${parser_name}" "${parser_config}" >> ../docs/parsers/"${parser_name}".md
|
||||
echo "### Parser Information" >> ../docs/parsers/"${parser_name}".md
|
||||
echo "Compatibility: ${compatible}" >> ../docs/parsers/"${parser_name}".md
|
||||
echo >> ../docs/parsers/"${parser_name}".md
|
||||
echo "Version ${version} by ${author} (${author_email})" >> ../docs/parsers/"${parser_name}".md
|
||||
echo "+++ ${parser_name} docs complete"
|
||||
fi
|
||||
} &
|
||||
done
|
||||
wait
|
||||
echo "Document Generation Complete"
|
||||
|
||||
22
docs/lib.md
22
docs/lib.md
@@ -34,11 +34,22 @@ Parse the string data using the supplied parser module.
|
||||
This function provides a high-level API to simplify parser use. This
|
||||
function will call built-in parsers and custom plugin parsers.
|
||||
|
||||
Example:
|
||||
Example (standard parsers):
|
||||
|
||||
>>> import jc
|
||||
>>> jc.parse('date', 'Tue Jan 18 10:23:07 PST 2022')
|
||||
{'year': 2022, 'month': 'Jan', 'month_num': 1, 'day'...}
|
||||
>>> date_obj = jc.parse('date', 'Tue Jan 18 10:23:07 PST 2022')
|
||||
>>> print(f'The year is: {date_obj["year"]}')
|
||||
The year is: 2022
|
||||
|
||||
Example (streaming parsers):
|
||||
|
||||
>>> import jc
|
||||
>>> ping_gen = jc.parse('ping_s', ping_output.splitlines())
|
||||
>>> for item in ping_gen:
|
||||
>>> print(f'Response time: {item["time_ms"]} ms')
|
||||
Response time: 102 ms
|
||||
Response time: 109 ms
|
||||
...
|
||||
|
||||
To get a list of available parser module names, use `parser_mod_list()`.
|
||||
|
||||
@@ -151,7 +162,8 @@ Parameters:
|
||||
### all\_parser\_info
|
||||
|
||||
```python
|
||||
def all_parser_info(documentation: bool = False) -> List[Dict]
|
||||
def all_parser_info(documentation: bool = False,
|
||||
show_hidden: bool = False) -> List[Dict]
|
||||
```
|
||||
|
||||
Returns a list of dictionaries that includes metadata for all parser
|
||||
@@ -160,6 +172,8 @@ modules.
|
||||
Parameters:
|
||||
|
||||
documentation: (boolean) include parser docstrings if True
|
||||
show_hidden: (boolean) also show parsers marked as hidden
|
||||
in their info metadata.
|
||||
|
||||
<a id="jc.lib.get_help"></a>
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Usage (cli):
|
||||
|
||||
$ acpi -V | jc --acpi
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc acpi -V
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ Usage (cli):
|
||||
|
||||
$ airport -I | jc --airport
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc airport -I
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ Usage (cli):
|
||||
|
||||
$ airport -s | jc --airport-s
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc airport -s
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ Usage (cli):
|
||||
|
||||
$ arp | jc --arp
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc arp
|
||||
|
||||
@@ -140,4 +140,4 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, aix, freebsd, darwin
|
||||
|
||||
Version 1.10 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 1.11 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -9,7 +9,7 @@ Usage (cli):
|
||||
|
||||
$ blkid | jc --blkid
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc blkid
|
||||
|
||||
|
||||
146
docs/parsers/cef.md
Normal file
146
docs/parsers/cef.md
Normal file
@@ -0,0 +1,146 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.cef"></a>
|
||||
|
||||
# jc.parsers.cef
|
||||
|
||||
jc - JSON Convert CEF string parser
|
||||
|
||||
This parser conforms to the Microfocus Arcsight CEF specification.
|
||||
|
||||
This parser will accept a single CEF string or multiple CEF string lines.
|
||||
Any text before "CEF" will be ignored. Syslog and CEF escaped characters
|
||||
(`\\`, `\\"`, `\\]`, `\\|`, `\\=`, `\\%`, `\\#`, `\\n`, and `\\r`) are
|
||||
unescaped.
|
||||
|
||||
Extended fields, as defined in the CEF specification, are relabeled
|
||||
and the values are converted to their respective types. Extra naive and
|
||||
UTC epoch timestamps are added where appropriate per the CEF specification.
|
||||
|
||||
A warning message to `STDERR` will be printed if an unparsable line is found
|
||||
unless `--quiet` or `quiet=True` is used.
|
||||
|
||||
To preserve escaping and original keynames and to prevent type conversions
|
||||
use the `--raw` CLI option or `raw=True` param in the `parse()` function.
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ echo 'CEF:0|Vendor|Product|3.2.0|1|SYSTEM|1|... | jc --cef
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('cef', cef_string_output)
|
||||
|
||||
Schema:
|
||||
|
||||
See: https://www.microfocus.com/documentation/arcsight/arcsight-smartconnectors-8.3/cef-implementation-standard/Content/CEF/Chapter%201%20What%20is%20CEF.htm
|
||||
|
||||
> Note: Special characters in key names will be converted to underscores.
|
||||
|
||||
[
|
||||
{
|
||||
"deviceVendor": string,
|
||||
"deviceProduct": string,
|
||||
"deviceVersion": string,
|
||||
"deviceEventClassId": string,
|
||||
"deviceEventClassIdNum": integer/null,
|
||||
"name": string,
|
||||
"agentSeverity": string/integer,
|
||||
"agentSeverityString": string,
|
||||
"agentSeverityNum": integer/null,
|
||||
"CEFVersion": integer,
|
||||
<extended fields> string/integer/float, # [0]
|
||||
<extended fields>"_epoch": integer/null, # [1]
|
||||
<extended fields>"_epoch_utc": integer/null, # [2]
|
||||
<custom fields> string,
|
||||
"unparsable": string # [3]
|
||||
}
|
||||
]
|
||||
|
||||
[0] Will attempt to convert extended fields to the type specified in the
|
||||
CEF specification. If conversion fails, then the field will remain
|
||||
a string.
|
||||
[1] Naive calculated epoch timestamp
|
||||
[2] Timezone-aware calculated epoch timestamp. (UTC only) This value
|
||||
will be null if a UTC timezone cannot be extracted from the original
|
||||
timestamp string value.
|
||||
[3] This field exists if the CEF line is not parsable. The value
|
||||
is the original syslog line.
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat cef.log | jc --cef -p
|
||||
[
|
||||
{
|
||||
"deviceVendor": "Trend Micro",
|
||||
"deviceProduct": "Deep Security Agent",
|
||||
"deviceVersion": "<DSA version>",
|
||||
"deviceEventClassId": "4000000",
|
||||
"name": "Eicar_test_file",
|
||||
"agentSeverity": 6,
|
||||
"CEFVersion": 0,
|
||||
"dvchost": "hostname",
|
||||
"string": "hello \"world\"!",
|
||||
"start": "Nov 08 2020 12:30:00.111 UTC",
|
||||
"start_epoch": 1604867400,
|
||||
"start_epoch_utc": 1604838600,
|
||||
"Host_ID": 1,
|
||||
"Quarantine": 205,
|
||||
"myDate": "Nov 08 2022 12:30:00.111",
|
||||
"myDate_epoch": 1667939400,
|
||||
"myDate_epoch_utc": null,
|
||||
"myFloat": 3.14,
|
||||
"deviceEventClassIdNum": 4000000,
|
||||
"agentSeverityString": "Medium",
|
||||
"agentSeverityNum": 6
|
||||
}
|
||||
]
|
||||
|
||||
$ cat cef.log | jc --cef -p -r
|
||||
[
|
||||
{
|
||||
"deviceVendor": "Trend Micro",
|
||||
"deviceProduct": "Deep Security Agent",
|
||||
"deviceVersion": "<DSA version>",
|
||||
"deviceEventClassId": "4000000",
|
||||
"name": "Eicar_test_file",
|
||||
"agentSeverity": "6",
|
||||
"CEFVersion": "0",
|
||||
"cn1": "1",
|
||||
"cn1Label": "Host ID",
|
||||
"dvchost": "hostname",
|
||||
"cn2": "205",
|
||||
"cn2Label": "Quarantine",
|
||||
"string": "hello \\\"world\\\"!",
|
||||
"start": "Nov 08 2020 12:30:00.111 UTC",
|
||||
"deviceCustomDate1": "Nov 08 2022 12:30:00.111",
|
||||
"deviceCustomDate1Label": "myDate",
|
||||
"cfp1": "3.14",
|
||||
"cfp1Label": "myFloat"
|
||||
}
|
||||
]
|
||||
|
||||
<a id="jc.parsers.cef.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)
|
||||
124
docs/parsers/cef_s.md
Normal file
124
docs/parsers/cef_s.md
Normal file
@@ -0,0 +1,124 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.cef_s"></a>
|
||||
|
||||
# jc.parsers.cef\_s
|
||||
|
||||
jc - JSON Convert CEF string output streaming parser
|
||||
|
||||
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of
|
||||
> Dictionaries (module)
|
||||
|
||||
This parser conforms to the Microfocus Arcsight CEF specification.
|
||||
|
||||
This parser will accept a single CEF string or multiple CEF string lines.
|
||||
Any text before "CEF" will be ignored. Syslog and CEF escaped characters
|
||||
(`\\`, `\\"`, `\\]`, `\\|`, `\\=`, `\\%`, `\\#`, `\\n`, and `\\r`) are
|
||||
unescaped.
|
||||
|
||||
Extended fields, as defined in the CEF specification, are relabeled
|
||||
and the values are converted to their respective types. Extra naive and
|
||||
UTC epoch timestamps are added where appropriate per the CEF specification.
|
||||
|
||||
A warning message to `STDERR` will be printed if an unparsable line is found
|
||||
unless `--quiet` or `quiet=True` is used.
|
||||
|
||||
To preserve escaping and original keynames and to prevent type conversions
|
||||
use the `--raw` CLI option or `raw=True` param in the `parse()` function.
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ echo 'CEF:0|Vendor|Product|3.2.0|1|SYSTEM|1|... | jc --cef-s
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
|
||||
result = jc.parse('cef_s', cef_command_output.splitlines())
|
||||
for item in result:
|
||||
# do something
|
||||
|
||||
Schema:
|
||||
|
||||
See: https://www.microfocus.com/documentation/arcsight/arcsight-smartconnectors-8.3/cef-implementation-standard/Content/CEF/Chapter%201%20What%20is%20CEF.htm
|
||||
|
||||
> Note: Special characters in key names will be converted to underscores.
|
||||
|
||||
{
|
||||
"deviceVendor": string,
|
||||
"deviceProduct": string,
|
||||
"deviceVersion": string,
|
||||
"deviceEventClassId": string,
|
||||
"deviceEventClassIdNum": integer/null,
|
||||
"name": string,
|
||||
"agentSeverity": string/integer,
|
||||
"agentSeverityString": string,
|
||||
"agentSeverityNum": integer/null,
|
||||
"CEFVersion": integer,
|
||||
<extended fields> string/integer/float, # [0]
|
||||
<extended fields>"_epoch": integer/null, # [1]
|
||||
<extended fields>"_epoch_utc": integer/null, # [2]
|
||||
<custom fields> string,
|
||||
"unparsable": string # [3]
|
||||
|
||||
# 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] Will attempt to convert extended fields to the type specified in the
|
||||
CEF specification. If conversion fails, then the field will remain
|
||||
a string.
|
||||
[1] Naive calculated epoch timestamp
|
||||
[2] Timezone-aware calculated epoch timestamp. (UTC only) This value
|
||||
will be null if a UTC timezone cannot be extracted from the original
|
||||
timestamp string value.
|
||||
[3] This field exists if the CEF line is not parsable. The value
|
||||
is the original syslog line.
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat cef.log | jc --cef-s
|
||||
{"deviceVendor":"Fortinet","deviceProduct":"FortiDeceptor","deviceV...}
|
||||
{"deviceVendor":"Trend Micro","deviceProduct":"Deep Security Agent"...}
|
||||
...
|
||||
|
||||
$ cat cef.log | jc --cef-s -r
|
||||
{"deviceVendor":"Fortinet","deviceProduct":"FortiDeceptor","deviceV...}
|
||||
{"deviceVendor":"Trend Micro","deviceProduct":"Deep Security Agent"...}
|
||||
...
|
||||
|
||||
<a id="jc.parsers.cef_s.parse"></a>
|
||||
|
||||
### parse
|
||||
|
||||
```python
|
||||
@add_jc_meta
|
||||
def parse(data: Iterable[str],
|
||||
raw: bool = False,
|
||||
quiet: bool = False,
|
||||
ignore_exceptions: bool = False) -> Union[Iterable[Dict], tuple]
|
||||
```
|
||||
|
||||
Main text parsing generator function. Returns an iterable 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
|
||||
|
||||
|
||||
Returns:
|
||||
|
||||
Iterable of Dictionaries
|
||||
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
@@ -11,7 +11,7 @@ Usage (cli):
|
||||
|
||||
$ chage -l johndoe | jc --chage
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc chage -l johndoe
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ Usage (cli):
|
||||
|
||||
$ cksum file.txt | jc --cksum
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc cksum file.txt
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ Usage (cli):
|
||||
|
||||
$ crontab -l | jc --crontab
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc crontab -l
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ Usage (cli):
|
||||
|
||||
$ date | jc --date
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc date
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Usage (cli):
|
||||
|
||||
$ df | jc --df
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc df
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ Usage (cli):
|
||||
|
||||
$ dig example.com | jc --dig
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc dig example.com
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Usage (cli):
|
||||
|
||||
$ dmidecode | jc --dmidecode
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc dmidecode
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ Usage (cli):
|
||||
|
||||
$ dpkg -l | jc --dpkg-l
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc dpkg -l
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Usage (cli):
|
||||
|
||||
$ du | jc --du
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc du
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ Usage (cli):
|
||||
|
||||
$ env | jc --env
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc env
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Usage (cli):
|
||||
|
||||
$ file * | jc --file
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc file *
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ Usage (cli):
|
||||
|
||||
$ finger | jc --finger
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc finger
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Usage (cli):
|
||||
|
||||
$ free | jc --free
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc free
|
||||
|
||||
@@ -95,4 +95,4 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 1.6 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 1.7 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -26,7 +26,7 @@ Usage (cli):
|
||||
|
||||
$ git log | jc --git-log
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc git log
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Usage (cli):
|
||||
|
||||
$ gpg --with-colons --show-keys file.gpg | jc --gpg
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc gpg --with-colons --show-keys file.gpg
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ Usage (cli):
|
||||
|
||||
$ md5sum file.txt | jc --hashsum
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc md5sum file.txt
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Usage (cli):
|
||||
|
||||
$ hciconfig | jc --hciconfig
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc hciconfig
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Usage (cli):
|
||||
|
||||
$ id | jc --id
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc id
|
||||
|
||||
@@ -128,4 +128,4 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, aix, freebsd
|
||||
|
||||
Version 1.5 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 1.6 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -11,7 +11,7 @@ Usage (cli):
|
||||
|
||||
$ ifconfig | jc --ifconfig
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc ifconfig
|
||||
|
||||
|
||||
@@ -54,18 +54,18 @@ Examples:
|
||||
$ cat example.ini | jc --ini -p
|
||||
{
|
||||
"bitbucket.org": {
|
||||
"serveraliveinterval": "45",
|
||||
"compression": "yes",
|
||||
"compressionlevel": "9",
|
||||
"forwardx11": "yes",
|
||||
"user": "hg"
|
||||
"ServerAliveInterval": "45",
|
||||
"Compression": "yes",
|
||||
"CompressionLevel": "9",
|
||||
"ForwardX11": "yes",
|
||||
"User": "hg"
|
||||
},
|
||||
"topsecret.server.com": {
|
||||
"serveraliveinterval": "45",
|
||||
"compression": "yes",
|
||||
"compressionlevel": "9",
|
||||
"forwardx11": "no",
|
||||
"port": "50022"
|
||||
"ServerAliveInterval": "45",
|
||||
"Compression": "yes",
|
||||
"CompressionLevel": "9",
|
||||
"ForwardX11": "no",
|
||||
"Port": "50022"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -92,4 +92,4 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
|
||||
|
||||
Version 1.7 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 1.8 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -11,7 +11,7 @@ Usage (cli):
|
||||
|
||||
$ iostat | jc --iostat
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc iostat
|
||||
|
||||
|
||||
490
docs/parsers/ip_address.md
Normal file
490
docs/parsers/ip_address.md
Normal file
@@ -0,0 +1,490 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.ip_address"></a>
|
||||
|
||||
# jc.parsers.ip\_address
|
||||
|
||||
jc - JSON Convert IP Address string parser
|
||||
|
||||
Accepts standard and integer IP address notation for both IPv4 and IPv6
|
||||
addresses. CIDR subnet mask and Scope ID is also allowed for standard
|
||||
notation. See examples below.
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ echo '192.168.1.1' | jc --ip-address
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('ip_address', ip_address_string)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
"version": integer,
|
||||
"max_prefix_length": integer,
|
||||
"ip": string,
|
||||
"ip_compressed": string,
|
||||
"ip_exploded": string,
|
||||
"scope_id": string/null,
|
||||
"ipv4_mapped": string/null,
|
||||
"six_to_four": string/null,
|
||||
"teredo_client": string/null,
|
||||
"teredo_server": string/null,
|
||||
"dns_ptr": string,
|
||||
"network": string,
|
||||
"broadcast": string,
|
||||
"hostmask": string,
|
||||
"netmask": string,
|
||||
"cidr_netmask": integer,
|
||||
"hosts": integer,
|
||||
"first_host": string,
|
||||
"last_host": string,
|
||||
"is_multicast": boolean,
|
||||
"is_private": boolean,
|
||||
"is_global": boolean,
|
||||
"is_link_local": boolean,
|
||||
"is_loopback": boolean,
|
||||
"is_reserved": boolean,
|
||||
"is_unspecified": boolean,
|
||||
"int": {
|
||||
"ip": integer,
|
||||
"network": integer,
|
||||
"broadcast": integer,
|
||||
"first_host": integer,
|
||||
"last_host": integer
|
||||
},
|
||||
"hex": {
|
||||
"ip": string,
|
||||
"network": string,
|
||||
"broadcast": string,
|
||||
"hostmask": string,
|
||||
"netmask": string,
|
||||
"first_host": string,
|
||||
"last_host": string
|
||||
},
|
||||
"bin": {
|
||||
"ip": string,
|
||||
"network": string,
|
||||
"broadcast": string,
|
||||
"hostmask": string,
|
||||
"netmask": string,
|
||||
"first_host": string,
|
||||
"last_host": string
|
||||
}
|
||||
}
|
||||
|
||||
Examples:
|
||||
|
||||
$ echo 192.168.2.10/24 | jc --ip-address -p
|
||||
{
|
||||
"version": 4,
|
||||
"max_prefix_length": 32,
|
||||
"ip": "192.168.2.10",
|
||||
"ip_compressed": "192.168.2.10",
|
||||
"ip_exploded": "192.168.2.10",
|
||||
"scope_id": null,
|
||||
"ipv4_mapped": null,
|
||||
"six_to_four": null,
|
||||
"teredo_client": null,
|
||||
"teredo_server": null,
|
||||
"dns_ptr": "10.2.168.192.in-addr.arpa",
|
||||
"network": "192.168.2.0",
|
||||
"broadcast": "192.168.2.255",
|
||||
"hostmask": "0.0.0.255",
|
||||
"netmask": "255.255.255.0",
|
||||
"cidr_netmask": 24,
|
||||
"hosts": 254,
|
||||
"first_host": "192.168.2.1",
|
||||
"last_host": "192.168.2.254",
|
||||
"is_multicast": false,
|
||||
"is_private": true,
|
||||
"is_global": false,
|
||||
"is_link_local": false,
|
||||
"is_loopback": false,
|
||||
"is_reserved": false,
|
||||
"is_unspecified": false,
|
||||
"int": {
|
||||
"ip": 3232236042,
|
||||
"network": 3232236032,
|
||||
"broadcast": 3232236287,
|
||||
"first_host": 3232236033,
|
||||
"last_host": 3232236286
|
||||
},
|
||||
"hex": {
|
||||
"ip": "c0:a8:02:0a",
|
||||
"network": "c0:a8:02:00",
|
||||
"broadcast": "c0:a8:02:ff",
|
||||
"hostmask": "00:00:00:ff",
|
||||
"netmask": "ff:ff:ff:00",
|
||||
"first_host": "c0:a8:02:01",
|
||||
"last_host": "c0:a8:02:fe"
|
||||
},
|
||||
"bin": {
|
||||
"ip": "11000000101010000000001000001010",
|
||||
"network": "11000000101010000000001000000000",
|
||||
"broadcast": "11000000101010000000001011111111",
|
||||
"hostmask": "00000000000000000000000011111111",
|
||||
"netmask": "11111111111111111111111100000000",
|
||||
"first_host": "11000000101010000000001000000001",
|
||||
"last_host": "11000000101010000000001011111110"
|
||||
}
|
||||
}
|
||||
|
||||
$ echo 3232236042 | jc --ip-address -p
|
||||
{
|
||||
"version": 4,
|
||||
"max_prefix_length": 32,
|
||||
"ip": "192.168.2.10",
|
||||
"ip_compressed": "192.168.2.10",
|
||||
"ip_exploded": "192.168.2.10",
|
||||
"scope_id": null,
|
||||
"ipv4_mapped": null,
|
||||
"six_to_four": null,
|
||||
"teredo_client": null,
|
||||
"teredo_server": null,
|
||||
"dns_ptr": "10.2.168.192.in-addr.arpa",
|
||||
"network": "192.168.2.10",
|
||||
"broadcast": "192.168.2.10",
|
||||
"hostmask": "0.0.0.0",
|
||||
"netmask": "255.255.255.255",
|
||||
"cidr_netmask": 32,
|
||||
"hosts": 1,
|
||||
"first_host": "192.168.2.10",
|
||||
"last_host": "192.168.2.10",
|
||||
"is_multicast": false,
|
||||
"is_private": true,
|
||||
"is_global": false,
|
||||
"is_link_local": false,
|
||||
"is_loopback": false,
|
||||
"is_reserved": false,
|
||||
"is_unspecified": false,
|
||||
"int": {
|
||||
"ip": 3232236042,
|
||||
"network": 3232236042,
|
||||
"broadcast": 3232236042,
|
||||
"first_host": 3232236042,
|
||||
"last_host": 3232236042
|
||||
},
|
||||
"hex": {
|
||||
"ip": "c0:a8:02:0a",
|
||||
"network": "c0:a8:02:0a",
|
||||
"broadcast": "c0:a8:02:0a",
|
||||
"hostmask": "00:00:00:00",
|
||||
"netmask": "ff:ff:ff:ff",
|
||||
"first_host": "c0:a8:02:0a",
|
||||
"last_host": "c0:a8:02:0a"
|
||||
},
|
||||
"bin": {
|
||||
"ip": "11000000101010000000001000001010",
|
||||
"network": "11000000101010000000001000001010",
|
||||
"broadcast": "11000000101010000000001000001010",
|
||||
"hostmask": "00000000000000000000000000000000",
|
||||
"netmask": "11111111111111111111111111111111",
|
||||
"first_host": "11000000101010000000001000001010",
|
||||
"last_host": "11000000101010000000001000001010"
|
||||
}
|
||||
}
|
||||
|
||||
$ echo 127:0:de::1%128/96 | jc --ip-address -p
|
||||
{
|
||||
"version": 6,
|
||||
"max_prefix_length": 128,
|
||||
"ip": "127:0:de::1",
|
||||
"ip_compressed": "127:0:de::1%128",
|
||||
"ip_exploded": "0127:0000:00de:0000:0000:0000:0000:0001",
|
||||
"scope_id": "128",
|
||||
"ipv4_mapped": null,
|
||||
"six_to_four": null,
|
||||
"teredo_client": null,
|
||||
"teredo_server": null,
|
||||
"dns_ptr": "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.....0.7.2.1.0.ip6.arpa",
|
||||
"network": "127:0:de::",
|
||||
"broadcast": "127:0:de::ffff:ffff",
|
||||
"hostmask": "::ffff:ffff",
|
||||
"netmask": "ffff:ffff:ffff:ffff:ffff:ffff::",
|
||||
"cidr_netmask": 96,
|
||||
"hosts": 4294967294,
|
||||
"first_host": "127:0:de::1",
|
||||
"last_host": "127:0:de::ffff:fffe",
|
||||
"is_multicast": false,
|
||||
"is_private": false,
|
||||
"is_global": true,
|
||||
"is_link_local": false,
|
||||
"is_loopback": false,
|
||||
"is_reserved": true,
|
||||
"is_unspecified": false,
|
||||
"int": {
|
||||
"ip": 1531727573536155682370944093904699393,
|
||||
"network": 1531727573536155682370944093904699392,
|
||||
"broadcast": 1531727573536155682370944098199666687,
|
||||
"first_host": 1531727573536155682370944093904699393,
|
||||
"last_host": 1531727573536155682370944098199666686
|
||||
},
|
||||
"hex": {
|
||||
"ip": "01:27:00:00:00:de:00:00:00:00:00:00:00:00:00:01",
|
||||
"network": "01:27:00:00:00:de:00:00:00:00:00:00:00:00:00:00",
|
||||
"broadcast": "01:27:00:00:00:de:00:00:00:00:00:00:ff:ff:ff:ff",
|
||||
"hostmask": "00:00:00:00:00:00:00:00:00:00:00:00:ff:ff:ff:ff",
|
||||
"netmask": "ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:00:00:00:00",
|
||||
"first_host": "01:27:00:00:00:de:00:00:00:00:00:00:00:00:00:01",
|
||||
"last_host": "01:27:00:00:00:de:00:00:00:00:00:00:ff:ff:ff:fe"
|
||||
},
|
||||
"bin": {
|
||||
"ip": "000000010010011100000000000000000000000011011110000000...",
|
||||
"network": "0000000100100111000000000000000000000000110111100...",
|
||||
"broadcast": "00000001001001110000000000000000000000001101111...",
|
||||
"hostmask": "000000000000000000000000000000000000000000000000...",
|
||||
"netmask": "1111111111111111111111111111111111111111111111111...",
|
||||
"first_host": "0000000100100111000000000000000000000000110111...",
|
||||
"last_host": "00000001001001110000000000000000000000001101111..."
|
||||
}
|
||||
}
|
||||
|
||||
$ echo 1531727573536155682370944093904699393 | jc --ip-address -p
|
||||
{
|
||||
"version": 6,
|
||||
"max_prefix_length": 128,
|
||||
"ip": "127:0:de::1",
|
||||
"ip_compressed": "127:0:de::1",
|
||||
"ip_exploded": "0127:0000:00de:0000:0000:0000:0000:0001",
|
||||
"scope_id": null,
|
||||
"ipv4_mapped": null,
|
||||
"six_to_four": null,
|
||||
"teredo_client": null,
|
||||
"teredo_server": null,
|
||||
"dns_ptr": "1.0.0.0.0.0.0....0.0.0.e.d.0.0.0.0.0.0.7.2.1.0.ip6.arpa",
|
||||
"network": "127:0:de::1",
|
||||
"broadcast": "127:0:de::1",
|
||||
"hostmask": "::",
|
||||
"netmask": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
|
||||
"cidr_netmask": 128,
|
||||
"hosts": 1,
|
||||
"first_host": "127:0:de::1",
|
||||
"last_host": "127:0:de::1",
|
||||
"is_multicast": false,
|
||||
"is_private": false,
|
||||
"is_global": true,
|
||||
"is_link_local": false,
|
||||
"is_loopback": false,
|
||||
"is_reserved": true,
|
||||
"is_unspecified": false,
|
||||
"int": {
|
||||
"ip": 1531727573536155682370944093904699393,
|
||||
"network": 1531727573536155682370944093904699393,
|
||||
"broadcast": 1531727573536155682370944093904699393,
|
||||
"first_host": 1531727573536155682370944093904699393,
|
||||
"last_host": 1531727573536155682370944093904699393
|
||||
},
|
||||
"hex": {
|
||||
"ip": "01:27:00:00:00:de:00:00:00:00:00:00:00:00:00:01",
|
||||
"network": "01:27:00:00:00:de:00:00:00:00:00:00:00:00:00:01",
|
||||
"broadcast": "01:27:00:00:00:de:00:00:00:00:00:00:00:00:00:01",
|
||||
"hostmask": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00",
|
||||
"netmask": "ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff",
|
||||
"first_host": "01:27:00:00:00:de:00:00:00:00:00:00:00:00:00:01",
|
||||
"last_host": "01:27:00:00:00:de:00:00:00:00:00:00:00:00:00:01"
|
||||
},
|
||||
"bin": {
|
||||
"ip": "0000000100100111000000000000000000000000110111100000000...",
|
||||
"network": "00000001001001110000000000000000000000001101111000...",
|
||||
"broadcast": "000000010010011100000000000000000000000011011110...",
|
||||
"hostmask": "0000000000000000000000000000000000000000000000000...",
|
||||
"netmask": "11111111111111111111111111111111111111111111111111...",
|
||||
"first_host": "00000001001001110000000000000000000000001101111...",
|
||||
"last_host": "000000010010011100000000000000000000000011011110..."
|
||||
}
|
||||
}
|
||||
|
||||
# IPv4 Mapped Address
|
||||
$ echo ::FFFF:192.168.1.35 | jc --ip-address -p
|
||||
{
|
||||
"version": 6,
|
||||
"max_prefix_length": 128,
|
||||
"ip": "::ffff:c0a8:123",
|
||||
"ip_compressed": "::ffff:c0a8:123",
|
||||
"ip_exploded": "0000:0000:0000:0000:0000:ffff:c0a8:0123",
|
||||
"scope_id": null,
|
||||
"ipv4_mapped": "192.168.1.35",
|
||||
"six_to_four": null,
|
||||
"teredo_client": null,
|
||||
"teredo_server": null,
|
||||
"dns_ptr": "3.2.1.0.8.a.0.c.f.f.f.f.0.0.0....0.0.0.0.0.0.0.ip6.arpa",
|
||||
"network": "::ffff:c0a8:123",
|
||||
"broadcast": "::ffff:c0a8:123",
|
||||
"hostmask": "::",
|
||||
"netmask": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
|
||||
"cidr_netmask": 128,
|
||||
"hosts": 1,
|
||||
"first_host": "::ffff:c0a8:123",
|
||||
"last_host": "::ffff:c0a8:123",
|
||||
"is_multicast": false,
|
||||
"is_private": true,
|
||||
"is_global": false,
|
||||
"is_link_local": false,
|
||||
"is_loopback": false,
|
||||
"is_reserved": true,
|
||||
"is_unspecified": false,
|
||||
"int": {
|
||||
"ip": 281473913979171,
|
||||
"network": 281473913979171,
|
||||
"broadcast": 281473913979171,
|
||||
"first_host": 281473913979171,
|
||||
"last_host": 281473913979171
|
||||
},
|
||||
"hex": {
|
||||
"ip": "00:00:00:00:00:00:00:00:00:00:ff:ff:c0:a8:01:23",
|
||||
"network": "00:00:00:00:00:00:00:00:00:00:ff:ff:c0:a8:01:23",
|
||||
"broadcast": "00:00:00:00:00:00:00:00:00:00:ff:ff:c0:a8:01:23",
|
||||
"hostmask": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00",
|
||||
"netmask": "ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff",
|
||||
"first_host": "00:00:00:00:00:00:00:00:00:00:ff:ff:c0:a8:01:23",
|
||||
"last_host": "00:00:00:00:00:00:00:00:00:00:ff:ff:c0:a8:01:23"
|
||||
},
|
||||
"bin": {
|
||||
"ip": "0000000000000000000000000000000000000000000000000000000...",
|
||||
"network": "00000000000000000000000000000000000000000000000000...",
|
||||
"broadcast": "000000000000000000000000000000000000000000000000...",
|
||||
"hostmask": "0000000000000000000000000000000000000000000000000...",
|
||||
"netmask": "11111111111111111111111111111111111111111111111111...",
|
||||
"first_host": "00000000000000000000000000000000000000000000000...",
|
||||
"last_host": "000000000000000000000000000000000000000000000000..."
|
||||
}
|
||||
}
|
||||
|
||||
# 6to4 Address
|
||||
$ echo 2002:c000:204::/48 | jc --ip-address -p
|
||||
{
|
||||
"version": 6,
|
||||
"max_prefix_length": 128,
|
||||
"ip": "2002:c000:204::",
|
||||
"ip_compressed": "2002:c000:204::",
|
||||
"ip_exploded": "2002:c000:0204:0000:0000:0000:0000:0000",
|
||||
"scope_id": null,
|
||||
"ipv4_mapped": null,
|
||||
"six_to_four": "192.0.2.4",
|
||||
"teredo_client": null,
|
||||
"teredo_server": null,
|
||||
"dns_ptr": "0.0.0.0.0.0.0.0......0.4.0.2.0.0.0.0.c.2.0.0.2.ip6.arpa",
|
||||
"network": "2002:c000:204::",
|
||||
"broadcast": "2002:c000:204:ffff:ffff:ffff:ffff:ffff",
|
||||
"hostmask": "::ffff:ffff:ffff:ffff:ffff",
|
||||
"netmask": "ffff:ffff:ffff::",
|
||||
"cidr_netmask": 48,
|
||||
"hosts": 1208925819614629174706174,
|
||||
"first_host": "2002:c000:204::1",
|
||||
"last_host": "2002:c000:204:ffff:ffff:ffff:ffff:fffe",
|
||||
"is_multicast": false,
|
||||
"is_private": false,
|
||||
"is_global": true,
|
||||
"is_link_local": false,
|
||||
"is_loopback": false,
|
||||
"is_reserved": false,
|
||||
"is_unspecified": false,
|
||||
"int": {
|
||||
"ip": 42549574682102084431821433448024768512,
|
||||
"network": 42549574682102084431821433448024768512,
|
||||
"broadcast": 42549574682103293357641048077199474687,
|
||||
"first_host": 42549574682102084431821433448024768513,
|
||||
"last_host": 42549574682103293357641048077199474686
|
||||
},
|
||||
"hex": {
|
||||
"ip": "20:02:c0:00:02:04:00:00:00:00:00:00:00:00:00:00",
|
||||
"network": "20:02:c0:00:02:04:00:00:00:00:00:00:00:00:00:00",
|
||||
"broadcast": "20:02:c0:00:02:04:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff",
|
||||
"hostmask": "00:00:00:00:00:00:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff",
|
||||
"netmask": "ff:ff:ff:ff:ff:ff:00:00:00:00:00:00:00:00:00:00",
|
||||
"first_host": "20:02:c0:00:02:04:00:00:00:00:00:00:00:00:00:01",
|
||||
"last_host": "20:02:c0:00:02:04:ff:ff:ff:ff:ff:ff:ff:ff:ff:fe"
|
||||
},
|
||||
"bin": {
|
||||
"ip": "0010000000000010110000000000000000000010000001000000000...",
|
||||
"network": "00100000000000101100000000000000000000100000010000...",
|
||||
"broadcast": "001000000000001011000000000000000000001000000100...",
|
||||
"hostmask": "0000000000000000000000000000000000000000000000001...",
|
||||
"netmask": "11111111111111111111111111111111111111111111111100...",
|
||||
"first_host": "00100000000000101100000000000000000000100000010...",
|
||||
"last_host": "001000000000001011000000000000000000001000000100..."
|
||||
}
|
||||
}
|
||||
|
||||
# Teredo Address
|
||||
$ echo 2001:0000:4136:e378:8000:63bf:3fff:fdd2 | jc --ip-address -p
|
||||
{
|
||||
"version": 6,
|
||||
"max_prefix_length": 128,
|
||||
"ip": "2001:0:4136:e378:8000:63bf:3fff:fdd2",
|
||||
"ip_compressed": "2001:0:4136:e378:8000:63bf:3fff:fdd2",
|
||||
"ip_exploded": "2001:0000:4136:e378:8000:63bf:3fff:fdd2",
|
||||
"scope_id": null,
|
||||
"ipv4_mapped": null,
|
||||
"six_to_four": null,
|
||||
"teredo_client": "192.0.2.45",
|
||||
"teredo_server": "65.54.227.120",
|
||||
"dns_ptr": "2.d.d.f.f.f.f.3.f.b.3.6.0.0.0....0.0.0.1.0.0.2.ip6.arpa",
|
||||
"network": "2001:0:4136:e378:8000:63bf:3fff:fdd2",
|
||||
"broadcast": "2001:0:4136:e378:8000:63bf:3fff:fdd2",
|
||||
"hostmask": "::",
|
||||
"netmask": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
|
||||
"cidr_netmask": 128,
|
||||
"hosts": 1,
|
||||
"first_host": "2001:0:4136:e378:8000:63bf:3fff:fdd2",
|
||||
"last_host": "2001:0:4136:e378:8000:63bf:3fff:fdd2",
|
||||
"is_multicast": false,
|
||||
"is_private": true,
|
||||
"is_global": false,
|
||||
"is_link_local": false,
|
||||
"is_loopback": false,
|
||||
"is_reserved": false,
|
||||
"is_unspecified": false,
|
||||
"int": {
|
||||
"ip": 42540488182158724593221357832373272018,
|
||||
"network": 42540488182158724593221357832373272018,
|
||||
"broadcast": 42540488182158724593221357832373272018,
|
||||
"first_host": 42540488182158724593221357832373272018,
|
||||
"last_host": 42540488182158724593221357832373272018
|
||||
},
|
||||
"hex": {
|
||||
"ip": "20:01:00:00:41:36:e3:78:80:00:63:bf:3f:ff:fd:d2",
|
||||
"network": "20:01:00:00:41:36:e3:78:80:00:63:bf:3f:ff:fd:d2",
|
||||
"broadcast": "20:01:00:00:41:36:e3:78:80:00:63:bf:3f:ff:fd:d2",
|
||||
"hostmask": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00",
|
||||
"netmask": "ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff",
|
||||
"first_host": "20:01:00:00:41:36:e3:78:80:00:63:bf:3f:ff:fd:d2",
|
||||
"last_host": "20:01:00:00:41:36:e3:78:80:00:63:bf:3f:ff:fd:d2"
|
||||
},
|
||||
"bin": {
|
||||
"ip": "001000000000000100000000000000000100000100110110111000...",
|
||||
"network": "0010000000000001000000000000000001000001001101101...",
|
||||
"broadcast": "00100000000000010000000000000000010000010011011...",
|
||||
"hostmask": "000000000000000000000000000000000000000000000000...",
|
||||
"netmask": "1111111111111111111111111111111111111111111111111...",
|
||||
"first_host": "0010000000000001000000000000000001000001001101...",
|
||||
"last_host": "00100000000000010000000000000000010000010011011..."
|
||||
}
|
||||
}
|
||||
|
||||
<a id="jc.parsers.ip_address.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, win32, aix, freebsd
|
||||
|
||||
Version 1.2 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
@@ -11,7 +11,7 @@ Usage (cli):
|
||||
|
||||
$ sudo iptables -L -t nat | jc --iptables
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc iptables -L -t nat
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ Usage (cli):
|
||||
|
||||
$ iw dev wlan0 scan | jc --iw-scan
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc iw dev wlan0 scan
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# jc.parsers.jar\_manifest
|
||||
|
||||
jc - JSON Convert `MANIFEST.MF` file parser
|
||||
jc - JSON Convert Java `MANIFEST.MF` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ Usage (cli):
|
||||
|
||||
$ last | jc --last
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc last
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ Usage (cli):
|
||||
|
||||
$ ls | jc --ls
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc ls
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Usage (cli):
|
||||
|
||||
$ lsblk | jc --lsblk
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc lsblk
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Usage (cli):
|
||||
|
||||
$ lsmod | jc --lsmod
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc lsmod
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Usage (cli):
|
||||
|
||||
$ lsof | jc --lsof
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc lsof
|
||||
|
||||
@@ -140,6 +140,6 @@ Returns:
|
||||
List of Dictionaries. Raw or processed structured data.
|
||||
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
Compatibility: linux, darwin, aix, freebsd
|
||||
|
||||
Version 1.6 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -11,7 +11,7 @@ Usage (cli):
|
||||
|
||||
$ lsusb -v | jc --lsusb
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc lsusb -v
|
||||
|
||||
@@ -134,6 +134,12 @@ Schema:
|
||||
}
|
||||
}
|
||||
},
|
||||
"device_qualifier": {
|
||||
"<item>": {
|
||||
"value": string,
|
||||
"description": string
|
||||
}
|
||||
},
|
||||
"device_status": {
|
||||
"value": string,
|
||||
"description": string
|
||||
@@ -284,4 +290,4 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 1.1 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 1.2 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
252
docs/parsers/mdadm.md
Normal file
252
docs/parsers/mdadm.md
Normal file
@@ -0,0 +1,252 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.mdadm"></a>
|
||||
|
||||
# jc.parsers.mdadm
|
||||
|
||||
jc - JSON Convert `mdadm` command output parser
|
||||
|
||||
Supports the `--query` and `--examine` options in `mdadm`.
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ mdadm --query --detail /dev/md0 | jc --mdadm
|
||||
|
||||
or
|
||||
|
||||
$ mdadm --examine -E /dev/sdb1 | jc --mdadm
|
||||
|
||||
or
|
||||
|
||||
$ jc mdadm --query --detail /dev/md0
|
||||
|
||||
or
|
||||
|
||||
$ jc mdadm --examine -E /dev/sdb1
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('mdadm', mdadm_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
"device": string,
|
||||
"magic": string,
|
||||
"version": string,
|
||||
"feature_map": string,
|
||||
"array_uuid": string,
|
||||
"name": string,
|
||||
"name_val": string,
|
||||
"uuid": string,
|
||||
"uuid_val": string,
|
||||
"homehost": string,
|
||||
"container": string,
|
||||
"container_dev": string,
|
||||
"container_member": integer,
|
||||
"controller_guid": string,
|
||||
"container_guid": string,
|
||||
"seq": string,
|
||||
"redundant_hdr": string,
|
||||
"virtual_disks": integer,
|
||||
"creation_time": string,
|
||||
"creation_time_epoch": integer, # naive timestamp
|
||||
"raid_level": string,
|
||||
"array_size": string,
|
||||
"array_size_num": integer,
|
||||
"used_dev_size": string,
|
||||
"used_dev_size_num": integer,
|
||||
"raid_devices": integer,
|
||||
"avail_dev_size": string,
|
||||
"avail_dev_size_num": integer,
|
||||
"data_offset": integer,
|
||||
"super_offset": integer,
|
||||
"unused_space": string,
|
||||
"unused_space_before": integer,
|
||||
"unused_space_after": integer,
|
||||
"state": string,
|
||||
"state_list": [
|
||||
string
|
||||
],
|
||||
"device_uuid": string,
|
||||
"flags": string,
|
||||
"flag_list": [
|
||||
string
|
||||
],
|
||||
"update_time": string,
|
||||
"update_time_epoch": integer, # naive timestamp
|
||||
"bad_block_log": string,
|
||||
"checksum": string,
|
||||
"checksum_val": string,
|
||||
"checksum_state": string,
|
||||
"events": string,
|
||||
"events_num": integer,
|
||||
"events_maj": integer,
|
||||
"events_min": integer,
|
||||
"chunk_size": string,
|
||||
"chunk_size_num": integer,
|
||||
"device_role": string,
|
||||
"array_state": string,
|
||||
"array_state_list": [
|
||||
string
|
||||
],
|
||||
"member_arrays": string,
|
||||
"member_arrays_list": [
|
||||
string
|
||||
],
|
||||
"consistency_policy": string,
|
||||
"rebuild_status": string,
|
||||
"rebuild_status_percent": integer,
|
||||
"resync_status": string,
|
||||
"resync_status_percent": integer,
|
||||
"check_status": string,
|
||||
"check_status_percent": integer,
|
||||
"total_devices": integer,
|
||||
"preferred_minor": integer,
|
||||
"persistence": string,
|
||||
"active_devices": integer,
|
||||
"working_devices": integer,
|
||||
"failed_devices": integer,
|
||||
"spare_devices": integer,
|
||||
"physical_disks": integer,
|
||||
"device_table": [
|
||||
{
|
||||
"number": integer/null,
|
||||
"major": integer/null,
|
||||
"minor": integer/null,
|
||||
"state": [
|
||||
string
|
||||
],
|
||||
"device": string,
|
||||
"raid_device": integer/null
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Any fields unspecified above will be string type.
|
||||
|
||||
Examples:
|
||||
|
||||
$ mdadm --query --detail /dev/md0 | jc --mdadm -p
|
||||
{
|
||||
"device": "/dev/md0",
|
||||
"version": "1.1",
|
||||
"creation_time": "Tue Apr 13 23:22:16 2010",
|
||||
"raid_level": "raid1",
|
||||
"array_size": "5860520828 (5.46 TiB 6.00 TB)",
|
||||
"used_dev_size": "5860520828 (5.46 TiB 6.00 TB)",
|
||||
"raid_devices": 2,
|
||||
"total_devices": 2,
|
||||
"persistence": "Superblock is persistent",
|
||||
"intent_bitmap": "Internal",
|
||||
"update_time": "Tue Jul 26 20:16:31 2022",
|
||||
"state": "clean",
|
||||
"active_devices": 2,
|
||||
"working_devices": 2,
|
||||
"failed_devices": 0,
|
||||
"spare_devices": 0,
|
||||
"consistency_policy": "bitmap",
|
||||
"name": "virttest:0",
|
||||
"uuid": "85c5b164:d58a5ada:14f5fe07:d642e843",
|
||||
"events": 2193679,
|
||||
"device_table": [
|
||||
{
|
||||
"number": 3,
|
||||
"major": 8,
|
||||
"minor": 17,
|
||||
"state": [
|
||||
"active",
|
||||
"sync"
|
||||
],
|
||||
"device": "/dev/sdb1",
|
||||
"raid_device": 0
|
||||
},
|
||||
{
|
||||
"number": 2,
|
||||
"major": 8,
|
||||
"minor": 33,
|
||||
"state": [
|
||||
"active",
|
||||
"sync"
|
||||
],
|
||||
"device": "/dev/sdc1",
|
||||
"raid_device": 1
|
||||
}
|
||||
],
|
||||
"array_size_num": 5860520828,
|
||||
"used_dev_size_num": 5860520828,
|
||||
"name_val": "virttest:0",
|
||||
"uuid_val": "85c5b164:d58a5ada:14f5fe07:d642e843",
|
||||
"state_list": [
|
||||
"clean"
|
||||
],
|
||||
"creation_time_epoch": 1271226136,
|
||||
"update_time_epoch": 1658891791
|
||||
}
|
||||
|
||||
$ mdadm --query --detail /dev/md0 | jc --mdadm -p -r
|
||||
{
|
||||
"device": "/dev/md0",
|
||||
"version": "1.1",
|
||||
"creation_time": "Tue Apr 13 23:22:16 2010",
|
||||
"raid_level": "raid1",
|
||||
"array_size": "5860520828 (5.46 TiB 6.00 TB)",
|
||||
"used_dev_size": "5860520828 (5.46 TiB 6.00 TB)",
|
||||
"raid_devices": "2",
|
||||
"total_devices": "2",
|
||||
"persistence": "Superblock is persistent",
|
||||
"intent_bitmap": "Internal",
|
||||
"update_time": "Tue Jul 26 20:16:31 2022",
|
||||
"state": "clean",
|
||||
"active_devices": "2",
|
||||
"working_devices": "2",
|
||||
"failed_devices": "0",
|
||||
"spare_devices": "0",
|
||||
"consistency_policy": "bitmap",
|
||||
"name": "virttest:0",
|
||||
"uuid": "85c5b164:d58a5ada:14f5fe07:d642e843",
|
||||
"events": "2193679",
|
||||
"device_table": [
|
||||
{
|
||||
"number": "3",
|
||||
"major": "8",
|
||||
"minor": "17",
|
||||
"state": "active sync",
|
||||
"device": "/dev/sdb1",
|
||||
"raid_device": "0"
|
||||
},
|
||||
{
|
||||
"number": "2",
|
||||
"major": "8",
|
||||
"minor": "33",
|
||||
"state": "active sync",
|
||||
"device": "/dev/sdc1",
|
||||
"raid_device": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
<a id="jc.parsers.mdadm.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
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
@@ -9,7 +9,7 @@ Usage (cli):
|
||||
|
||||
$ mount | jc --mount
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc mount
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ Usage (cli):
|
||||
|
||||
$ mpstat | jc --mpstat
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc mpstat
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ Usage (cli):
|
||||
|
||||
$ netstat | jc --netstat
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc netstat
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ Usage (cli):
|
||||
|
||||
$ nmcli device show lo | jc --nmcli
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc nmcli device show lo
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Usage (cli):
|
||||
|
||||
$ ntpq -p | jc --ntpq
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc ntpq -p
|
||||
|
||||
|
||||
@@ -3,18 +3,18 @@
|
||||
|
||||
# jc.parsers.pidstat
|
||||
|
||||
jc - JSON Convert `pidstat -h` command output parser
|
||||
jc - JSON Convert `pidstat -H` command output parser
|
||||
|
||||
Must use the `-h` option in `pidstat`. All other `pidstat` options are
|
||||
supported in combination with `-h`.
|
||||
Must use the `-H` (or `-h`, if `-H` is not available) option in `pidstat`.
|
||||
All other `pidstat` options are supported in combination with this option.
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ pidstat -h | jc --pidstat
|
||||
$ pidstat -H | jc --pidstat
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc pidstat -h
|
||||
$ jc pidstat -H
|
||||
|
||||
Usage (module):
|
||||
|
||||
@@ -51,7 +51,7 @@ Schema:
|
||||
|
||||
Examples:
|
||||
|
||||
$ pidstat -hl | jc --pidstat -p
|
||||
$ pidstat -Hl | jc --pidstat -p
|
||||
[
|
||||
{
|
||||
"time": 1646859134,
|
||||
@@ -88,7 +88,7 @@ Examples:
|
||||
}
|
||||
]
|
||||
|
||||
$ pidstat -hl | jc --pidstat -p -r
|
||||
$ pidstat -Hl | jc --pidstat -p -r
|
||||
[
|
||||
{
|
||||
"time": "1646859134",
|
||||
|
||||
@@ -3,17 +3,17 @@
|
||||
|
||||
# jc.parsers.pidstat\_s
|
||||
|
||||
jc - JSON Convert `pidstat -h` command output streaming parser
|
||||
jc - JSON Convert `pidstat -H` command output streaming parser
|
||||
|
||||
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of
|
||||
> Dictionaries (module)
|
||||
|
||||
Must use the `-h` option in `pidstat`. All other `pidstat` options are
|
||||
supported in combination with `-h`.
|
||||
Must use the `-H` (or `-h`, if `-H` is not available) option in `pidstat`.
|
||||
All other `pidstat` options are supported in combination with this option.
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ pidstat | jc --pidstat-s
|
||||
$ pidstat -H | 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
|
||||
@@ -65,13 +65,13 @@ Schema:
|
||||
|
||||
Examples:
|
||||
|
||||
$ pidstat -hl | jc --pidstat-s
|
||||
$ 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
|
||||
$ 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...}
|
||||
|
||||
@@ -14,7 +14,7 @@ Usage (cli):
|
||||
|
||||
$ ping -c 3 1.2.3.4 | jc --ping
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc ping -c 3 1.2.3.4
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Usage (cli):
|
||||
|
||||
$ pip list | jc --pip-list
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc pip list
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Usage (cli):
|
||||
|
||||
$ pip show | jc --pip-show
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc pip show
|
||||
|
||||
|
||||
77
docs/parsers/plist.md
Normal file
77
docs/parsers/plist.md
Normal file
@@ -0,0 +1,77 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.plist"></a>
|
||||
|
||||
# jc.parsers.plist
|
||||
|
||||
jc - JSON Convert PLIST file parser
|
||||
|
||||
Converts binary and XML PLIST files.
|
||||
|
||||
Binary values are converted into an ASCII hex representation.
|
||||
|
||||
Datetime objects are converted into Unix epoch timestamps and ISO strings.
|
||||
The timestamp and ISO string will maintain the same naive or timezone-aware
|
||||
properties as the object in the original PLIST file.
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat file.plist | jc --plist
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('plist', plist_file_output)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
"<key>": string/integer/float/boolean/object/array/null
|
||||
}
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat info.plist | jc --plist -p
|
||||
{
|
||||
"NSAppleScriptEnabled": true,
|
||||
"LSMultipleInstancesProhibited": true,
|
||||
"CFBundleInfoDictionaryVersion": "6.0",
|
||||
"DTPlatformVersion": "GM",
|
||||
"CFBundleIconFile": "GarageBand.icns",
|
||||
"CFBundleName": "GarageBand",
|
||||
"DTSDKName": "macosx10.13internal",
|
||||
"NSSupportsAutomaticGraphicsSwitching": true,
|
||||
"RevisionDate": "2018-12-03_14:10:56",
|
||||
"UTImportedTypeDeclarations": [
|
||||
{
|
||||
"UTTypeConformsTo": [
|
||||
"public.data",
|
||||
"public.content"
|
||||
...
|
||||
}
|
||||
|
||||
<a id="jc.parsers.plist.parse"></a>
|
||||
|
||||
### parse
|
||||
|
||||
```python
|
||||
def parse(data: Union[str, bytes],
|
||||
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:
|
||||
|
||||
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)
|
||||
@@ -9,7 +9,7 @@ Usage (cli):
|
||||
|
||||
$ postconf -M | jc --postconf
|
||||
|
||||
or
|
||||
or
|
||||
|
||||
$ jc postconf -M
|
||||
|
||||
|
||||
142
docs/parsers/proc.md
Normal file
142
docs/parsers/proc.md
Normal file
@@ -0,0 +1,142 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc"></a>
|
||||
|
||||
# jc.parsers.proc
|
||||
|
||||
jc - JSON Convert Proc file output parser
|
||||
|
||||
This parser automatically identifies the Proc file and calls the
|
||||
corresponding parser to peform the parsing.
|
||||
|
||||
Magic syntax for converting `/proc` files is also supported by running
|
||||
`jc /proc/<path to file>`. Any `jc` options must be specified before the
|
||||
`/proc` path.
|
||||
|
||||
specific Proc file parsers can also be called directly, if desired and have
|
||||
a naming convention of `proc-<name>` (cli) or `proc_<name>` (module).
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/meminfo | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/meminfo
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/meminfo | jc --proc-memifno
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_file)
|
||||
|
||||
Schema:
|
||||
|
||||
See the specific Proc parser for the schema:
|
||||
|
||||
$ jc --help --proc-<name>
|
||||
|
||||
For example:
|
||||
|
||||
$ jc --help --proc-meminfo
|
||||
|
||||
Specific Proc file parser names can be found with `jc -hh` or `jc -a`.
|
||||
|
||||
Schemas can also be found online at:
|
||||
|
||||
https://kellyjonbrazil.github.io/jc/docs/parsers/proc_<name>
|
||||
|
||||
For example:
|
||||
|
||||
https://kellyjonbrazil.github.io/jc/docs/parsers/proc_meminfo
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/modules | jc --proc -p
|
||||
[
|
||||
{
|
||||
"module": "binfmt_misc",
|
||||
"size": 24576,
|
||||
"used": 1,
|
||||
"used_by": [],
|
||||
"status": "Live",
|
||||
"location": "0xffffffffc0ab4000"
|
||||
},
|
||||
{
|
||||
"module": "vsock_loopback",
|
||||
"size": 16384,
|
||||
"used": 0,
|
||||
"used_by": [],
|
||||
"status": "Live",
|
||||
"location": "0xffffffffc0a14000"
|
||||
},
|
||||
{
|
||||
"module": "vmw_vsock_virtio_transport_common",
|
||||
"size": 36864,
|
||||
"used": 1,
|
||||
"used_by": [
|
||||
"vsock_loopback"
|
||||
],
|
||||
"status": "Live",
|
||||
"location": "0xffffffffc0a03000"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ proc_modules | jc --proc_modules -p -r
|
||||
[
|
||||
{
|
||||
"module": "binfmt_misc",
|
||||
"size": "24576",
|
||||
"used": "1",
|
||||
"used_by": [],
|
||||
"status": "Live",
|
||||
"location": "0xffffffffc0ab4000"
|
||||
},
|
||||
{
|
||||
"module": "vsock_loopback",
|
||||
"size": "16384",
|
||||
"used": "0",
|
||||
"used_by": [],
|
||||
"status": "Live",
|
||||
"location": "0xffffffffc0a14000"
|
||||
},
|
||||
{
|
||||
"module": "vmw_vsock_virtio_transport_common",
|
||||
"size": "36864",
|
||||
"used": "1",
|
||||
"used_by": [
|
||||
"vsock_loopback"
|
||||
],
|
||||
"status": "Live",
|
||||
"location": "0xffffffffc0a03000"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc.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)
|
||||
128
docs/parsers/proc_buddyinfo.md
Normal file
128
docs/parsers/proc_buddyinfo.md
Normal file
@@ -0,0 +1,128 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_buddyinfo"></a>
|
||||
|
||||
# jc.parsers.proc\_buddyinfo
|
||||
|
||||
jc - JSON Convert `/proc/buddyinfo` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/buddyinfo | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/buddyinfo
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/buddyinfo | jc --proc-buddyinfo
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_buddyinfo_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_buddyinfo', proc_buddyinfo_file)
|
||||
|
||||
Schema:
|
||||
|
||||
All values are integers.
|
||||
|
||||
[
|
||||
{
|
||||
"node": integer,
|
||||
"zone": string,
|
||||
"free_chunks": [
|
||||
integer # [0]
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
[0] array index correlates to the Order number.
|
||||
E.g. free_chunks[0] is the value for Order 0
|
||||
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/buddyinfo | jc --proc -p
|
||||
[
|
||||
{
|
||||
"node": 0,
|
||||
"zone": "DMA",
|
||||
"free_chunks": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
3
|
||||
]
|
||||
},
|
||||
{
|
||||
"node": 0,
|
||||
"zone": "DMA32",
|
||||
"free_chunks": [
|
||||
78,
|
||||
114,
|
||||
82,
|
||||
52,
|
||||
38,
|
||||
25,
|
||||
13,
|
||||
9,
|
||||
3,
|
||||
4,
|
||||
629
|
||||
]
|
||||
},
|
||||
{
|
||||
"node": 0,
|
||||
"zone": "Normal",
|
||||
"free_chunks": [
|
||||
0,
|
||||
22,
|
||||
8,
|
||||
10,
|
||||
1,
|
||||
1,
|
||||
2,
|
||||
11,
|
||||
13,
|
||||
0,
|
||||
0
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_buddyinfo.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)
|
||||
111
docs/parsers/proc_consoles.md
Normal file
111
docs/parsers/proc_consoles.md
Normal file
@@ -0,0 +1,111 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_consoles"></a>
|
||||
|
||||
# jc.parsers.proc\_consoles
|
||||
|
||||
jc - JSON Convert `/proc/consoles` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/consoles | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/consoles
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/consoles | jc --proc-consoles
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_consoles_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_consoles', proc_consoles_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"device": string,
|
||||
"operations": string,
|
||||
"operations_list": [
|
||||
string # [0]
|
||||
],
|
||||
"flags": string,
|
||||
"flags_list": [
|
||||
string # [1]
|
||||
],
|
||||
"major": integer,
|
||||
"minor": integer
|
||||
}
|
||||
]
|
||||
|
||||
[0] Values: read, write, unblank
|
||||
[1] Values: enabled, preferred, primary boot, prink buffer,
|
||||
braille device, safe when CPU offline
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/consoles | jc --proc -p
|
||||
[
|
||||
{
|
||||
"device": "tty0",
|
||||
"operations": "-WU",
|
||||
"operations_list": [
|
||||
"write",
|
||||
"unblank"
|
||||
],
|
||||
"flags": "ECp",
|
||||
"flags_list": [
|
||||
"enabled",
|
||||
"preferred",
|
||||
"printk buffer"
|
||||
],
|
||||
"major": 4,
|
||||
"minor": 7
|
||||
},
|
||||
{
|
||||
"device": "ttyS0",
|
||||
"operations": "-W-",
|
||||
"operations_list": [
|
||||
"write"
|
||||
],
|
||||
"flags": "Ep",
|
||||
"flags_list": [
|
||||
"enabled",
|
||||
"printk buffer"
|
||||
],
|
||||
"major": 4,
|
||||
"minor": 64
|
||||
}
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_consoles.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)
|
||||
247
docs/parsers/proc_cpuinfo.md
Normal file
247
docs/parsers/proc_cpuinfo.md
Normal file
@@ -0,0 +1,247 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_cpuinfo"></a>
|
||||
|
||||
# jc.parsers.proc\_cpuinfo
|
||||
|
||||
jc - JSON Convert `/proc/cpuinfo` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/cpuinfo | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/cpuinfo
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/cpuinfo | jc --proc-cpuinfo
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_cpuinfo_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_cpuinfo', proc_cpuinfo_file)
|
||||
|
||||
Schema:
|
||||
|
||||
Integer, float, and boolean ("yes"/"no") conversions are attempted. Blank
|
||||
strings are converted to `null`.
|
||||
|
||||
"Well-known" keys like `cache size`, `address types`, `bugs`, and `flags`
|
||||
are processed into sensible data types. (see below)
|
||||
|
||||
If this is not desired, then use the `--raw` (CLI) or `raw=True` (Module)
|
||||
option.
|
||||
|
||||
[
|
||||
{
|
||||
"processor": integer,
|
||||
"address sizes": string,
|
||||
"address_size_physical": integer, # in bits
|
||||
"address_size_virtual": integer, # in bits
|
||||
"cache size": string,
|
||||
"cache_size_num": integer,
|
||||
"cache_size_unit": string,
|
||||
"flags": [
|
||||
string
|
||||
],
|
||||
"bugs": [
|
||||
string
|
||||
],
|
||||
"bogomips": float,
|
||||
<key>: string/int/float/boolean/null
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/cpuinfo | jc --proc -p
|
||||
[
|
||||
{
|
||||
"processor": 0,
|
||||
"vendor_id": "GenuineIntel",
|
||||
"cpu family": 6,
|
||||
"model": 142,
|
||||
"model name": "Intel(R) Core(TM) i5-8279U CPU @ 2.40GHz",
|
||||
"stepping": 10,
|
||||
"cpu MHz": 2400.0,
|
||||
"cache size": "6144 KB",
|
||||
"physical id": 0,
|
||||
"siblings": 1,
|
||||
"core id": 0,
|
||||
"cpu cores": 1,
|
||||
"apicid": 0,
|
||||
"initial apicid": 0,
|
||||
"fpu": true,
|
||||
"fpu_exception": true,
|
||||
"cpuid level": 22,
|
||||
"wp": true,
|
||||
"bogomips": 4800.0,
|
||||
"clflush size": 64,
|
||||
"cache_alignment": 64,
|
||||
"address sizes": "45 bits physical, 48 bits virtual",
|
||||
"power management": null,
|
||||
"address_size_physical": 45,
|
||||
"address_size_virtual": 48,
|
||||
"cache_size_num": 6144,
|
||||
"cache_size_unit": "KB",
|
||||
"flags": [
|
||||
"fpu",
|
||||
"vme",
|
||||
"de",
|
||||
"pse",
|
||||
"tsc",
|
||||
"msr",
|
||||
"pae",
|
||||
"mce",
|
||||
"cx8",
|
||||
"apic",
|
||||
"sep",
|
||||
"mtrr",
|
||||
"pge",
|
||||
"mca",
|
||||
"cmov",
|
||||
"pat",
|
||||
"pse36",
|
||||
"clflush",
|
||||
"mmx",
|
||||
"fxsr",
|
||||
"sse",
|
||||
"sse2",
|
||||
"ss",
|
||||
"syscall",
|
||||
"nx",
|
||||
"pdpe1gb",
|
||||
"rdtscp",
|
||||
"lm",
|
||||
"constant_tsc",
|
||||
"arch_perfmon",
|
||||
"nopl",
|
||||
"xtopology",
|
||||
"tsc_reliable",
|
||||
"nonstop_tsc",
|
||||
"cpuid",
|
||||
"pni",
|
||||
"pclmulqdq",
|
||||
"ssse3",
|
||||
"fma",
|
||||
"cx16",
|
||||
"pcid",
|
||||
"sse4_1",
|
||||
"sse4_2",
|
||||
"x2apic",
|
||||
"movbe",
|
||||
"popcnt",
|
||||
"tsc_deadline_timer",
|
||||
"aes",
|
||||
"xsave",
|
||||
"avx",
|
||||
"f16c",
|
||||
"rdrand",
|
||||
"hypervisor",
|
||||
"lahf_lm",
|
||||
"abm",
|
||||
"3dnowprefetch",
|
||||
"cpuid_fault",
|
||||
"invpcid_single",
|
||||
"pti",
|
||||
"ssbd",
|
||||
"ibrs",
|
||||
"ibpb",
|
||||
"stibp",
|
||||
"fsgsbase",
|
||||
"tsc_adjust",
|
||||
"bmi1",
|
||||
"avx2",
|
||||
"smep",
|
||||
"bmi2",
|
||||
"invpcid",
|
||||
"rdseed",
|
||||
"adx",
|
||||
"smap",
|
||||
"clflushopt",
|
||||
"xsaveopt",
|
||||
"xsavec",
|
||||
"xgetbv1",
|
||||
"xsaves",
|
||||
"arat",
|
||||
"md_clear",
|
||||
"flush_l1d",
|
||||
"arch_capabilities"
|
||||
],
|
||||
"bugs": [
|
||||
"cpu_meltdown",
|
||||
"spectre_v1",
|
||||
"spectre_v2",
|
||||
"spec_store_bypass",
|
||||
"l1tf",
|
||||
"mds",
|
||||
"swapgs",
|
||||
"itlb_multihit",
|
||||
"srbds"
|
||||
]
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/cpuinfo | jc --proc_cpuinfo -p -r
|
||||
[
|
||||
{
|
||||
"processor": "0",
|
||||
"vendor_id": "GenuineIntel",
|
||||
"cpu family": "6",
|
||||
"model": "142",
|
||||
"model name": "Intel(R) Core(TM) i5-8279U CPU @ 2.40GHz",
|
||||
"stepping": "10",
|
||||
"cpu MHz": "2400.000",
|
||||
"cache size": "6144 KB",
|
||||
"physical id": "0",
|
||||
"siblings": "1",
|
||||
"core id": "0",
|
||||
"cpu cores": "1",
|
||||
"apicid": "0",
|
||||
"initial apicid": "0",
|
||||
"fpu": "yes",
|
||||
"fpu_exception": "yes",
|
||||
"cpuid level": "22",
|
||||
"wp": "yes",
|
||||
"flags": "fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge ...",
|
||||
"bugs": "cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass ...",
|
||||
"bogomips": "4800.00",
|
||||
"clflush size": "64",
|
||||
"cache_alignment": "64",
|
||||
"address sizes": "45 bits physical, 48 bits virtual",
|
||||
"power management": ""
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_cpuinfo.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)
|
||||
143
docs/parsers/proc_crypto.md
Normal file
143
docs/parsers/proc_crypto.md
Normal file
@@ -0,0 +1,143 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_crypto"></a>
|
||||
|
||||
# jc.parsers.proc\_crypto
|
||||
|
||||
jc - JSON Convert `/proc/crypto` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/crypto | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/crypto
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/crypto | jc --proc-crypto
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_crypto_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_crypto', proc_crypto_file)
|
||||
|
||||
Schema:
|
||||
|
||||
"Well-known" keys like `priority` and `refcnt` are converted to integers.
|
||||
Also, keynames ending in "size" are converted to integers.
|
||||
|
||||
If this is not desired, then use the `--raw` (CLI) or `raw=True` (Module)
|
||||
option.
|
||||
|
||||
[
|
||||
{
|
||||
"name": string,
|
||||
"driver": string,
|
||||
"module": string,
|
||||
"priority": integer,
|
||||
"refcnt": integer,
|
||||
"selftest": string,
|
||||
"internal": string,
|
||||
"type": string,
|
||||
"*size": integer
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/crypto | jc --proc -p
|
||||
[
|
||||
{
|
||||
"name": "ecdh",
|
||||
"driver": "ecdh-generic",
|
||||
"module": "ecdh_generic",
|
||||
"priority": 100,
|
||||
"refcnt": 1,
|
||||
"selftest": "passed",
|
||||
"internal": "no",
|
||||
"type": "kpp"
|
||||
},
|
||||
{
|
||||
"name": "blake2b-512",
|
||||
"driver": "blake2b-512-generic",
|
||||
"module": "blake2b_generic",
|
||||
"priority": 100,
|
||||
"refcnt": 1,
|
||||
"selftest": "passed",
|
||||
"internal": "no",
|
||||
"type": "shash",
|
||||
"blocksize": 128,
|
||||
"digestsize": 64
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/crypto | jc --proc_crypto -p -r
|
||||
[
|
||||
{
|
||||
"name": "ecdh",
|
||||
"driver": "ecdh-generic",
|
||||
"module": "ecdh_generic",
|
||||
"priority": "100",
|
||||
"refcnt": "1",
|
||||
"selftest": "passed",
|
||||
"internal": "no",
|
||||
"type": "kpp"
|
||||
},
|
||||
{
|
||||
"name": "blake2b-512",
|
||||
"driver": "blake2b-512-generic",
|
||||
"module": "blake2b_generic",
|
||||
"priority": "100",
|
||||
"refcnt": "1",
|
||||
"selftest": "passed",
|
||||
"internal": "no",
|
||||
"type": "shash",
|
||||
"blocksize": "128",
|
||||
"digestsize": "64"
|
||||
},
|
||||
{
|
||||
"name": "blake2b-384",
|
||||
"driver": "blake2b-384-generic",
|
||||
"module": "blake2b_generic",
|
||||
"priority": "100",
|
||||
"refcnt": "1",
|
||||
"selftest": "passed",
|
||||
"internal": "no",
|
||||
"type": "shash",
|
||||
"blocksize": "128",
|
||||
"digestsize": "48"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_crypto.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)
|
||||
103
docs/parsers/proc_devices.md
Normal file
103
docs/parsers/proc_devices.md
Normal file
@@ -0,0 +1,103 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_devices"></a>
|
||||
|
||||
# jc.parsers.proc\_devices
|
||||
|
||||
jc - JSON Convert `/proc/devices` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/devices | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/devices
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/devices | jc --proc-devices
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_devices_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_devices', proc_devices_file)
|
||||
|
||||
Schema:
|
||||
|
||||
Since devices can be members of multiple groups, the value for each device
|
||||
is a list.
|
||||
|
||||
{
|
||||
"character": {
|
||||
"<device number>": [
|
||||
string
|
||||
]
|
||||
},
|
||||
"block": {
|
||||
"<device number>": [
|
||||
string
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/devices | jc --proc -p
|
||||
{
|
||||
"character": {
|
||||
"1": [
|
||||
"mem"
|
||||
],
|
||||
"4": [
|
||||
"/dev/vc/0",
|
||||
"tty",
|
||||
"ttyS"
|
||||
],
|
||||
"5": [
|
||||
"/dev/tty",
|
||||
"/dev/console",
|
||||
"/dev/ptmx",
|
||||
"ttyprintk"
|
||||
],
|
||||
"block": {
|
||||
"7": [
|
||||
"loop"
|
||||
],
|
||||
"8": [
|
||||
"sd"
|
||||
],
|
||||
"9": [
|
||||
"md"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
<a id="jc.parsers.proc_devices.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
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
202
docs/parsers/proc_diskstats.md
Normal file
202
docs/parsers/proc_diskstats.md
Normal file
@@ -0,0 +1,202 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_diskstats"></a>
|
||||
|
||||
# jc.parsers.proc\_diskstats
|
||||
|
||||
jc - JSON Convert `/proc/diskstats` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/diskstats | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/diskstats
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/diskstats | jc --proc-diskstats
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_diskstats_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_diskstats', proc_diskstats_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"maj": integer,
|
||||
"min": integer,
|
||||
"device": string,
|
||||
"reads_completed": integer,
|
||||
"reads_merged": integer,
|
||||
"sectors_read": integer,
|
||||
"read_time_ms": integer,
|
||||
"writes_completed": integer,
|
||||
"writes_merged": integer,
|
||||
"sectors_written": integer,
|
||||
"write_time_ms": integer,
|
||||
"io_in_progress": integer,
|
||||
"io_time_ms": integer,
|
||||
"weighted_io_time_ms": integer,
|
||||
"discards_completed_successfully": integer,
|
||||
"discards_merged": integer,
|
||||
"sectors_discarded": integer,
|
||||
"discarding_time_ms": integer,
|
||||
"flush_requests_completed_successfully": integer,
|
||||
"flushing_time_ms": integer
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/diskstats | jc --proc -p
|
||||
[
|
||||
{
|
||||
"maj": 7,
|
||||
"min": 0,
|
||||
"device": "loop0",
|
||||
"reads_completed": 48,
|
||||
"reads_merged": 0,
|
||||
"sectors_read": 718,
|
||||
"read_time_ms": 19,
|
||||
"writes_completed": 0,
|
||||
"writes_merged": 0,
|
||||
"sectors_written": 0,
|
||||
"write_time_ms": 0,
|
||||
"io_in_progress": 0,
|
||||
"io_time_ms": 36,
|
||||
"weighted_io_time_ms": 19,
|
||||
"discards_completed_successfully": 0,
|
||||
"discards_merged": 0,
|
||||
"sectors_discarded": 0,
|
||||
"discarding_time_ms": 0,
|
||||
"flush_requests_completed_successfully": 0,
|
||||
"flushing_time_ms": 0
|
||||
},
|
||||
{
|
||||
"maj": 7,
|
||||
"min": 1,
|
||||
"device": "loop1",
|
||||
"reads_completed": 41,
|
||||
"reads_merged": 0,
|
||||
"sectors_read": 688,
|
||||
"read_time_ms": 17,
|
||||
"writes_completed": 0,
|
||||
"writes_merged": 0,
|
||||
"sectors_written": 0,
|
||||
"write_time_ms": 0,
|
||||
"io_in_progress": 0,
|
||||
"io_time_ms": 28,
|
||||
"weighted_io_time_ms": 17,
|
||||
"discards_completed_successfully": 0,
|
||||
"discards_merged": 0,
|
||||
"sectors_discarded": 0,
|
||||
"discarding_time_ms": 0,
|
||||
"flush_requests_completed_successfully": 0,
|
||||
"flushing_time_ms": 0
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/diskstats | jc --proc_diskstats -p -r
|
||||
[
|
||||
{
|
||||
"maj": "7",
|
||||
"min": "0",
|
||||
"device": "loop0",
|
||||
"reads_completed": "48",
|
||||
"reads_merged": "0",
|
||||
"sectors_read": "718",
|
||||
"read_time_ms": "19",
|
||||
"writes_completed": "0",
|
||||
"writes_merged": "0",
|
||||
"sectors_written": "0",
|
||||
"write_time_ms": "0",
|
||||
"io_in_progress": "0",
|
||||
"io_time_ms": "36",
|
||||
"weighted_io_time_ms": "19",
|
||||
"discards_completed_successfully": "0",
|
||||
"discards_merged": "0",
|
||||
"sectors_discarded": "0",
|
||||
"discarding_time_ms": "0",
|
||||
"flush_requests_completed_successfully": "0",
|
||||
"flushing_time_ms": "0"
|
||||
},
|
||||
{
|
||||
"maj": "7",
|
||||
"min": "1",
|
||||
"device": "loop1",
|
||||
"reads_completed": "41",
|
||||
"reads_merged": "0",
|
||||
"sectors_read": "688",
|
||||
"read_time_ms": "17",
|
||||
"writes_completed": "0",
|
||||
"writes_merged": "0",
|
||||
"sectors_written": "0",
|
||||
"write_time_ms": "0",
|
||||
"io_in_progress": "0",
|
||||
"io_time_ms": "28",
|
||||
"weighted_io_time_ms": "17",
|
||||
"discards_completed_successfully": "0",
|
||||
"discards_merged": "0",
|
||||
"sectors_discarded": "0",
|
||||
"discarding_time_ms": "0",
|
||||
"flush_requests_completed_successfully": "0",
|
||||
"flushing_time_ms": "0"
|
||||
},
|
||||
{
|
||||
"maj": "7",
|
||||
"min": "2",
|
||||
"device": "loop2",
|
||||
"reads_completed": "119",
|
||||
"reads_merged": "0",
|
||||
"sectors_read": "2956",
|
||||
"read_time_ms": "18",
|
||||
"writes_completed": "0",
|
||||
"writes_merged": "0",
|
||||
"sectors_written": "0",
|
||||
"write_time_ms": "0",
|
||||
"io_in_progress": "0",
|
||||
"io_time_ms": "56",
|
||||
"weighted_io_time_ms": "18",
|
||||
"discards_completed_successfully": "0",
|
||||
"discards_merged": "0",
|
||||
"sectors_discarded": "0",
|
||||
"discarding_time_ms": "0",
|
||||
"flush_requests_completed_successfully": "0",
|
||||
"flushing_time_ms": "0"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_diskstats.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)
|
||||
126
docs/parsers/proc_driver_rtc.md
Normal file
126
docs/parsers/proc_driver_rtc.md
Normal file
@@ -0,0 +1,126 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_driver_rtc"></a>
|
||||
|
||||
# jc.parsers.proc\_driver\_rtc
|
||||
|
||||
jc - JSON Convert `/proc/driver/rtc` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/driver/rtc | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/driver/rtc
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/driver/rtc | jc --proc-driver-rtc
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_driver_rtc_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_driver_rtc', proc_driver_rtc_file)
|
||||
|
||||
Schema:
|
||||
|
||||
"yes" and "no" values are converted to `true`/`false`. Integer conversions
|
||||
are attempted. If you do not want this behavior, then use `--raw` (cli) or
|
||||
`raw=True` (module).
|
||||
|
||||
{
|
||||
"rtc_time": string,
|
||||
"rtc_date": string,
|
||||
"alrm_time": string,
|
||||
"alrm_date": string,
|
||||
"alarm_IRQ": boolean,
|
||||
"alrm_pending": boolean,
|
||||
"update IRQ enabled": boolean,
|
||||
"periodic IRQ enabled": boolean,
|
||||
"periodic IRQ frequency": integer,
|
||||
"max user IRQ frequency": integer,
|
||||
"24hr": boolean,
|
||||
"periodic_IRQ": boolean,
|
||||
"update_IRQ": boolean,
|
||||
"HPET_emulated": boolean,
|
||||
"BCD": boolean,
|
||||
"DST_enable": boolean,
|
||||
"periodic_freq": integer,
|
||||
"batt_status": string
|
||||
}
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/driver/rtc | jc --proc -p
|
||||
{
|
||||
"rtc_time": "16:09:21",
|
||||
"rtc_date": "2022-09-03",
|
||||
"alrm_time": "00:00:00",
|
||||
"alrm_date": "2022-09-03",
|
||||
"alarm_IRQ": false,
|
||||
"alrm_pending": false,
|
||||
"update IRQ enabled": false,
|
||||
"periodic IRQ enabled": false,
|
||||
"periodic IRQ frequency": 1024,
|
||||
"max user IRQ frequency": 64,
|
||||
"24hr": true,
|
||||
"periodic_IRQ": false,
|
||||
"update_IRQ": false,
|
||||
"HPET_emulated": true,
|
||||
"BCD": true,
|
||||
"DST_enable": false,
|
||||
"periodic_freq": 1024,
|
||||
"batt_status": "okay"
|
||||
}
|
||||
|
||||
$ cat /proc/driver/rtc | jc --proc -p -r
|
||||
{
|
||||
"rtc_time": "16:09:21",
|
||||
"rtc_date": "2022-09-03",
|
||||
"alrm_time": "00:00:00",
|
||||
"alrm_date": "2022-09-03",
|
||||
"alarm_IRQ": "no",
|
||||
"alrm_pending": "no",
|
||||
"update IRQ enabled": "no",
|
||||
"periodic IRQ enabled": "no",
|
||||
"periodic IRQ frequency": "1024",
|
||||
"max user IRQ frequency": "64",
|
||||
"24hr": "yes",
|
||||
"periodic_IRQ": "no",
|
||||
"update_IRQ": "no",
|
||||
"HPET_emulated": "yes",
|
||||
"BCD": "yes",
|
||||
"DST_enable": "no",
|
||||
"periodic_freq": "1024",
|
||||
"batt_status": "okay"
|
||||
}
|
||||
|
||||
<a id="jc.parsers.proc_driver_rtc.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
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
81
docs/parsers/proc_filesystems.md
Normal file
81
docs/parsers/proc_filesystems.md
Normal file
@@ -0,0 +1,81 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_filesystems"></a>
|
||||
|
||||
# jc.parsers.proc\_filesystems
|
||||
|
||||
jc - JSON Convert `/proc/filesystems` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/filesystems | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/filesystems
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/filesystems | jc --proc-filesystems
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_filesystems_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_filesystems', proc_filesystems_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"filesystem": string,
|
||||
"nodev": boolean
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/filesystems | jc --proc -p
|
||||
[
|
||||
{
|
||||
"filesystem": "sysfs",
|
||||
"nodev": true
|
||||
},
|
||||
{
|
||||
"filesystem": "tmpfs",
|
||||
"nodev": true
|
||||
},
|
||||
{
|
||||
"filesystem": "bdev",
|
||||
"nodev": true
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_filesystems.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)
|
||||
133
docs/parsers/proc_interrupts.md
Normal file
133
docs/parsers/proc_interrupts.md
Normal file
@@ -0,0 +1,133 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_interrupts"></a>
|
||||
|
||||
# jc.parsers.proc\_interrupts
|
||||
|
||||
jc - JSON Convert `/proc/interrupts` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/interrupts | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/interrupts
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/interrupts | jc --proc-interrupts
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_interrupts_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_interrupts', proc_interrupts_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"irq": string,
|
||||
"cpu_num": integer,
|
||||
"interrupts": [
|
||||
integer
|
||||
],
|
||||
"type": string,
|
||||
"device": [
|
||||
string
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/interrupts | jc --proc -p
|
||||
[
|
||||
{
|
||||
"irq": "0",
|
||||
"cpu_num": 2,
|
||||
"interrupts": [
|
||||
18,
|
||||
0
|
||||
],
|
||||
"type": "IO-APIC",
|
||||
"device": [
|
||||
"2-edge",
|
||||
"timer"
|
||||
]
|
||||
},
|
||||
{
|
||||
"irq": "1",
|
||||
"cpu_num": 2,
|
||||
"interrupts": [
|
||||
0,
|
||||
73
|
||||
],
|
||||
"type": "IO-APIC",
|
||||
"device": [
|
||||
"1-edge",
|
||||
"i8042"
|
||||
]
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/interrupts | jc --proc-interrupts -p -r
|
||||
[
|
||||
{
|
||||
"irq": "0",
|
||||
"cpu_num": 2,
|
||||
"interrupts": [
|
||||
"18",
|
||||
"0"
|
||||
],
|
||||
"type": "IO-APIC",
|
||||
"device": [
|
||||
"2-edge",
|
||||
"timer"
|
||||
]
|
||||
},
|
||||
{
|
||||
"irq": "1",
|
||||
"cpu_num": 2,
|
||||
"interrupts": [
|
||||
"0",
|
||||
"73"
|
||||
],
|
||||
"type": "IO-APIC",
|
||||
"device": [
|
||||
"1-edge",
|
||||
"i8042"
|
||||
]
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_interrupts.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)
|
||||
85
docs/parsers/proc_iomem.md
Normal file
85
docs/parsers/proc_iomem.md
Normal file
@@ -0,0 +1,85 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_iomem"></a>
|
||||
|
||||
# jc.parsers.proc\_iomem
|
||||
|
||||
jc - JSON Convert `/proc/iomem` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/iomem | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/iomem
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/iomem | jc --proc-iomem
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_iomem_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_iomem', proc_iomem_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"start": string,
|
||||
"end": string,
|
||||
"device": string
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/iomem | jc --proc -p
|
||||
[
|
||||
{
|
||||
"start": "00000000",
|
||||
"end": "00000fff",
|
||||
"device": "Reserved"
|
||||
},
|
||||
{
|
||||
"start": "00001000",
|
||||
"end": "0009e7ff",
|
||||
"device": "System RAM"
|
||||
},
|
||||
{
|
||||
"start": "0009e800",
|
||||
"end": "0009ffff",
|
||||
"device": "Reserved"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_iomem.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)
|
||||
85
docs/parsers/proc_ioports.md
Normal file
85
docs/parsers/proc_ioports.md
Normal file
@@ -0,0 +1,85 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_ioports"></a>
|
||||
|
||||
# jc.parsers.proc\_ioports
|
||||
|
||||
jc - JSON Convert `/proc/ioports` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/ioports | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/ioports
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/ioports | jc --proc-ioports
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_ioports_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_ioports', proc_ioports_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"start": string,
|
||||
"end": string,
|
||||
"device": string
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/ioports | jc --proc -p
|
||||
[
|
||||
{
|
||||
"start": "0000",
|
||||
"end": "0cf7",
|
||||
"device": "PCI Bus 0000:00"
|
||||
},
|
||||
{
|
||||
"start": "0000",
|
||||
"end": "001f",
|
||||
"device": "dma1"
|
||||
},
|
||||
{
|
||||
"start": "0020",
|
||||
"end": "0021",
|
||||
"device": "PNP0001:00"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_ioports.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)
|
||||
88
docs/parsers/proc_loadavg.md
Normal file
88
docs/parsers/proc_loadavg.md
Normal file
@@ -0,0 +1,88 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_loadavg"></a>
|
||||
|
||||
# jc.parsers.proc\_loadavg
|
||||
|
||||
jc - JSON Convert `/proc/loadavg` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/loadavg | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/loadavg
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/loadavg | jc --proc-loadavg
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_loadavg_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_loadavg', proc_loadavg_file)
|
||||
|
||||
Schema:
|
||||
|
||||
All values are integers.
|
||||
|
||||
{
|
||||
"load_1m": float,
|
||||
"load_5m": float,
|
||||
"load_15m": float,
|
||||
"running": integer,
|
||||
"available": integer,
|
||||
"last_pid": integer
|
||||
}
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/loadavg | jc --proc -p
|
||||
{
|
||||
"load_1m": 0.0,
|
||||
"load_5m": 0.01,
|
||||
"load_15m": 0.03,
|
||||
"running": 2,
|
||||
"available": 111,
|
||||
"last_pid": 2039
|
||||
}
|
||||
|
||||
$ cat /proc/loadavg | jc --proc -p -r
|
||||
{
|
||||
"load_1m": "0.00",
|
||||
"load_5m": "0.01",
|
||||
"load_15m": "0.03",
|
||||
"running": "2",
|
||||
"available": "111",
|
||||
"last_pid": "2039"
|
||||
}
|
||||
|
||||
<a id="jc.parsers.proc_loadavg.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
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
130
docs/parsers/proc_locks.md
Normal file
130
docs/parsers/proc_locks.md
Normal file
@@ -0,0 +1,130 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_locks"></a>
|
||||
|
||||
# jc.parsers.proc\_locks
|
||||
|
||||
jc - JSON Convert `/proc/locks` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/locks | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/locks
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/locks | jc --proc-locks
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_locks_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_locks', proc_locks_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"id": integer,
|
||||
"class": string,
|
||||
"type": string,
|
||||
"access": string,
|
||||
"pid": integer,
|
||||
"maj": string,
|
||||
"min": string,
|
||||
"inode": integer,
|
||||
"start": string,
|
||||
"end": string
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/locks | jc --proc -p
|
||||
[
|
||||
{
|
||||
"id": 1,
|
||||
"class": "POSIX",
|
||||
"type": "ADVISORY",
|
||||
"access": "WRITE",
|
||||
"pid": 877,
|
||||
"maj": "00",
|
||||
"min": "19",
|
||||
"inode": 812,
|
||||
"start": "0",
|
||||
"end": "EOF"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"class": "FLOCK",
|
||||
"type": "ADVISORY",
|
||||
"access": "WRITE",
|
||||
"pid": 854,
|
||||
"maj": "00",
|
||||
"min": "19",
|
||||
"inode": 805,
|
||||
"start": "0",
|
||||
"end": "EOF"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/locks | jc --proc-locks -p -r
|
||||
[
|
||||
{
|
||||
"id": "1",
|
||||
"class": "POSIX",
|
||||
"type": "ADVISORY",
|
||||
"access": "WRITE",
|
||||
"pid": "877",
|
||||
"maj": "00",
|
||||
"min": "19",
|
||||
"inode": "812",
|
||||
"start": "0",
|
||||
"end": "EOF"
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"class": "FLOCK",
|
||||
"type": "ADVISORY",
|
||||
"access": "WRITE",
|
||||
"pid": "854",
|
||||
"maj": "00",
|
||||
"min": "19",
|
||||
"inode": "805",
|
||||
"start": "0",
|
||||
"end": "EOF"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_locks.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)
|
||||
118
docs/parsers/proc_meminfo.md
Normal file
118
docs/parsers/proc_meminfo.md
Normal file
@@ -0,0 +1,118 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_meminfo"></a>
|
||||
|
||||
# jc.parsers.proc\_meminfo
|
||||
|
||||
jc - JSON Convert `/proc/meminfo` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/meminfo | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/meminfo
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/meminfo | jc --proc-meminfo
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_meminfo_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_meminfo', proc_meminfo_file)
|
||||
|
||||
Schema:
|
||||
|
||||
All values are integers.
|
||||
|
||||
{
|
||||
<keyName> integer
|
||||
}
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/meminfo | jc --proc -p
|
||||
{
|
||||
"MemTotal": 3997272,
|
||||
"MemFree": 2760316,
|
||||
"MemAvailable": 3386876,
|
||||
"Buffers": 40452,
|
||||
"Cached": 684856,
|
||||
"SwapCached": 0,
|
||||
"Active": 475816,
|
||||
"Inactive": 322064,
|
||||
"Active(anon)": 70216,
|
||||
"Inactive(anon)": 148,
|
||||
"Active(file)": 405600,
|
||||
"Inactive(file)": 321916,
|
||||
"Unevictable": 19476,
|
||||
"Mlocked": 19476,
|
||||
"SwapTotal": 3996668,
|
||||
"SwapFree": 3996668,
|
||||
"Dirty": 152,
|
||||
"Writeback": 0,
|
||||
"AnonPages": 92064,
|
||||
"Mapped": 79464,
|
||||
"Shmem": 1568,
|
||||
"KReclaimable": 188216,
|
||||
"Slab": 288096,
|
||||
"SReclaimable": 188216,
|
||||
"SUnreclaim": 99880,
|
||||
"KernelStack": 5872,
|
||||
"PageTables": 1812,
|
||||
"NFS_Unstable": 0,
|
||||
"Bounce": 0,
|
||||
"WritebackTmp": 0,
|
||||
"CommitLimit": 5995304,
|
||||
"Committed_AS": 445240,
|
||||
"VmallocTotal": 34359738367,
|
||||
"VmallocUsed": 21932,
|
||||
"VmallocChunk": 0,
|
||||
"Percpu": 107520,
|
||||
"HardwareCorrupted": 0,
|
||||
"AnonHugePages": 0,
|
||||
"ShmemHugePages": 0,
|
||||
"ShmemPmdMapped": 0,
|
||||
"FileHugePages": 0,
|
||||
"FilePmdMapped": 0,
|
||||
"HugePages_Total": 0,
|
||||
"HugePages_Free": 0,
|
||||
"HugePages_Rsvd": 0,
|
||||
"HugePages_Surp": 0,
|
||||
"Hugepagesize": 2048,
|
||||
"Hugetlb": 0,
|
||||
"DirectMap4k": 192320,
|
||||
"DirectMap2M": 4001792,
|
||||
"DirectMap1G": 2097152
|
||||
}
|
||||
|
||||
<a id="jc.parsers.proc_meminfo.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
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
132
docs/parsers/proc_modules.md
Normal file
132
docs/parsers/proc_modules.md
Normal file
@@ -0,0 +1,132 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_modules"></a>
|
||||
|
||||
# jc.parsers.proc\_modules
|
||||
|
||||
jc - JSON Convert `/proc/modules` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/modules | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/modules
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/modules | jc --proc-modules
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_modules_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_modules', proc_modules_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"module": string,
|
||||
"size": integer,
|
||||
"used": integer,
|
||||
"used_by": [
|
||||
string
|
||||
],
|
||||
"status": string,
|
||||
"location": string
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/modules | jc --proc -p
|
||||
[
|
||||
{
|
||||
"module": "binfmt_misc",
|
||||
"size": 24576,
|
||||
"used": 1,
|
||||
"used_by": [],
|
||||
"status": "Live",
|
||||
"location": "0xffffffffc0ab4000"
|
||||
},
|
||||
{
|
||||
"module": "vsock_loopback",
|
||||
"size": 16384,
|
||||
"used": 0,
|
||||
"used_by": [],
|
||||
"status": "Live",
|
||||
"location": "0xffffffffc0a14000"
|
||||
},
|
||||
{
|
||||
"module": "vmw_vsock_virtio_transport_common",
|
||||
"size": 36864,
|
||||
"used": 1,
|
||||
"used_by": [
|
||||
"vsock_loopback"
|
||||
],
|
||||
"status": "Live",
|
||||
"location": "0xffffffffc0a03000"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/modules | jc --proc-modules -p -r
|
||||
[
|
||||
{
|
||||
"module": "binfmt_misc",
|
||||
"size": "24576",
|
||||
"used": "1",
|
||||
"used_by": [],
|
||||
"status": "Live",
|
||||
"location": "0xffffffffc0ab4000"
|
||||
},
|
||||
{
|
||||
"module": "vsock_loopback",
|
||||
"size": "16384",
|
||||
"used": "0",
|
||||
"used_by": [],
|
||||
"status": "Live",
|
||||
"location": "0xffffffffc0a14000"
|
||||
},
|
||||
{
|
||||
"module": "vmw_vsock_virtio_transport_common",
|
||||
"size": "36864",
|
||||
"used": "1",
|
||||
"used_by": [
|
||||
"vsock_loopback"
|
||||
],
|
||||
"status": "Live",
|
||||
"location": "0xffffffffc0a03000"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_modules.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)
|
||||
111
docs/parsers/proc_mtrr.md
Normal file
111
docs/parsers/proc_mtrr.md
Normal file
@@ -0,0 +1,111 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_mtrr"></a>
|
||||
|
||||
# jc.parsers.proc\_mtrr
|
||||
|
||||
jc - JSON Convert `/proc/mtrr` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/mtrr | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/mtrr
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/mtrr | jc --proc-mtrr
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_mtrr_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_mtrr', proc_mtrr_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"register": string,
|
||||
"type": string,
|
||||
"base": string,
|
||||
"base_mb": integer,
|
||||
"size": integer,
|
||||
"count": integer,
|
||||
"<key>": string # additional key/values are strings
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/mtrr | jc --proc -p
|
||||
[
|
||||
{
|
||||
"register": "reg00",
|
||||
"type": "write-back",
|
||||
"base": "0x000000000",
|
||||
"base_mb": 0,
|
||||
"size": 2048,
|
||||
"count": 1
|
||||
},
|
||||
{
|
||||
"register": "reg01",
|
||||
"type": "write-back",
|
||||
"base": "0x080000000",
|
||||
"base_mb": 2048,
|
||||
"size": 1024,
|
||||
"count": 1
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/mtrr | jc --proc-mtrr -p -r
|
||||
[
|
||||
{
|
||||
"register": "reg00",
|
||||
"type": "write-back",
|
||||
"base": "0x000000000",
|
||||
"base_mb": "0",
|
||||
"size": "2048MB",
|
||||
"count": "1"
|
||||
},
|
||||
{
|
||||
"register": "reg01",
|
||||
"type": "write-back",
|
||||
"base": "0x080000000",
|
||||
"base_mb": "2048",
|
||||
"size": "1024MB",
|
||||
"count": "1"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_mtrr.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)
|
||||
81
docs/parsers/proc_net_arp.md
Normal file
81
docs/parsers/proc_net_arp.md
Normal file
@@ -0,0 +1,81 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_net_arp"></a>
|
||||
|
||||
# jc.parsers.proc\_net\_arp
|
||||
|
||||
jc - JSON Convert `/proc/net/arp` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/net/arp | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/net/arp
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/net/arp | jc --proc-net-arp
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_net_arp_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_net_arp', proc_net_arp_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"IP_address": string,
|
||||
"HW_type": string,
|
||||
"Flags": string,
|
||||
"HW_address": string,
|
||||
"Mask": string,
|
||||
"Device": string
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/net/arp | jc --proc -p
|
||||
[
|
||||
{
|
||||
"IP_address": "192.168.71.254",
|
||||
"HW_type": "0x1",
|
||||
"Flags": "0x2",
|
||||
"HW_address": "00:50:56:f3:2f:ae",
|
||||
"Mask": "*",
|
||||
"Device": "ens33"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_net_arp.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)
|
||||
127
docs/parsers/proc_net_dev.md
Normal file
127
docs/parsers/proc_net_dev.md
Normal file
@@ -0,0 +1,127 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_net_dev"></a>
|
||||
|
||||
# jc.parsers.proc\_net\_dev
|
||||
|
||||
jc - JSON Convert `/proc/net/dev` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/net/dev | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/net/dev
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/net/dev | jc --proc-net-dev
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_net_dev_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_net_dev', proc_net_dev_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"interface": string,
|
||||
"r_bytes": integer,
|
||||
"r_packets": integer,
|
||||
"r_errs": integer,
|
||||
"r_drop": integer,
|
||||
"r_fifo": integer,
|
||||
"r_frame": integer,
|
||||
"r_compressed": integer,
|
||||
"r_multicast": integer,
|
||||
"t_bytes": integer,
|
||||
"t_packets": integer,
|
||||
"t_errs": integer,
|
||||
"t_drop": integer,
|
||||
"t_fifo": integer,
|
||||
"t_colls": integer,
|
||||
"t_carrier": integer,
|
||||
"t_compressed": integer
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/net/dev | jc --proc -p
|
||||
[
|
||||
{
|
||||
"interface": "lo",
|
||||
"r_bytes": 13222,
|
||||
"r_packets": 152,
|
||||
"r_errs": 0,
|
||||
"r_drop": 0,
|
||||
"r_fifo": 0,
|
||||
"r_frame": 0,
|
||||
"r_compressed": 0,
|
||||
"r_multicast": 0,
|
||||
"t_bytes": 13222,
|
||||
"t_packets": 152,
|
||||
"t_errs": 0,
|
||||
"t_drop": 0,
|
||||
"t_fifo": 0,
|
||||
"t_colls": 0,
|
||||
"t_carrier": 0,
|
||||
"t_compressed": 0
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/net/dev | jc --proc-net-dev -p -r
|
||||
[
|
||||
{
|
||||
"interface": "lo:",
|
||||
"r_bytes": "13222",
|
||||
"r_packets": "152",
|
||||
"r_errs": "0",
|
||||
"r_drop": "0",
|
||||
"r_fifo": "0",
|
||||
"r_frame": "0",
|
||||
"r_compressed": "0",
|
||||
"r_multicast": "0",
|
||||
"t_bytes": "13222",
|
||||
"t_packets": "152",
|
||||
"t_errs": "0",
|
||||
"t_drop": "0",
|
||||
"t_fifo": "0",
|
||||
"t_colls": "0",
|
||||
"t_carrier": "0",
|
||||
"t_compressed": "0"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_net_dev.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)
|
||||
105
docs/parsers/proc_net_dev_mcast.md
Normal file
105
docs/parsers/proc_net_dev_mcast.md
Normal file
@@ -0,0 +1,105 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_net_dev_mcast"></a>
|
||||
|
||||
# jc.parsers.proc\_net\_dev\_mcast
|
||||
|
||||
jc - JSON Convert `/proc/net/dev_mcast` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/net/dev_mcast | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/net/dev_mcast
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/net/dev_mcast | jc --proc-net-dev-mcast
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_net_dev_mcast_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_net_dev_mcast', proc_net_dev_mcast_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"index": integer,
|
||||
"interface": string,
|
||||
"dmi_u": integer,
|
||||
"dmi_g": integer,
|
||||
"dmi_address": string
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/net/dev_mcast | jc --proc -p
|
||||
[
|
||||
{
|
||||
"index": 2,
|
||||
"interface": "ens33",
|
||||
"dmi_u": 1,
|
||||
"dmi_g": 0,
|
||||
"dmi_address": "333300000001"
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"interface": "ens33",
|
||||
"dmi_u": 1,
|
||||
"dmi_g": 0,
|
||||
"dmi_address": "01005e000001"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/net/dev_mcast | jc --proc-net-dev-mcast -p -r
|
||||
[
|
||||
{
|
||||
"index": "2",
|
||||
"interface": "ens33",
|
||||
"dmi_u": "1",
|
||||
"dmi_g": "0",
|
||||
"dmi_address": "333300000001"
|
||||
},
|
||||
{
|
||||
"index": "2",
|
||||
"interface": "ens33",
|
||||
"dmi_u": "1",
|
||||
"dmi_g": "0",
|
||||
"dmi_address": "01005e000001"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_net_dev_mcast.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)
|
||||
88
docs/parsers/proc_net_if_inet6.md
Normal file
88
docs/parsers/proc_net_if_inet6.md
Normal file
@@ -0,0 +1,88 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_net_if_inet6"></a>
|
||||
|
||||
# jc.parsers.proc\_net\_if\_inet6
|
||||
|
||||
jc - JSON Convert `/proc/net/if_inet6` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/net/if_inet6 | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/net/if_inet6
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/net/if_inet6 | jc --proc-net-if-inet6
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_net_if_inet6_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_net_if_inet6', proc_net_if_inet6_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"address": string,
|
||||
"index": string,
|
||||
"prefix": string,
|
||||
"scope": string,
|
||||
"flags": string,
|
||||
"name": string
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/net/if_inet6 | jc --proc -p
|
||||
[
|
||||
{
|
||||
"address": "fe80000000000000020c29fffea4e315",
|
||||
"index": "02",
|
||||
"prefix": "40",
|
||||
"scope": "20",
|
||||
"flags": "80",
|
||||
"name": "ens33"
|
||||
},
|
||||
{
|
||||
"address": "00000000000000000000000000000001",
|
||||
"index": "01",
|
||||
"prefix": "80",
|
||||
"scope": "10",
|
||||
"flags": "80",
|
||||
"name": "lo"
|
||||
}
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_net_if_inet6.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)
|
||||
152
docs/parsers/proc_net_igmp.md
Normal file
152
docs/parsers/proc_net_igmp.md
Normal file
@@ -0,0 +1,152 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_net_igmp"></a>
|
||||
|
||||
# jc.parsers.proc\_net\_igmp
|
||||
|
||||
jc - JSON Convert `/proc/net/igmp` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/net/igmp | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/net/igmp
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/net/igmp | jc --proc-net-igmp
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_net_igmp_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_net_igmp', proc_net_igmp_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"index": integer,
|
||||
"device": string,
|
||||
"count": integer,
|
||||
"querier": string,
|
||||
"groups": [
|
||||
{
|
||||
"address": string,
|
||||
"users": integer,
|
||||
"timer": string,
|
||||
"reporter": integer
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/net/igmp | jc --proc -p
|
||||
[
|
||||
{
|
||||
"index": 0,
|
||||
"device": "lo",
|
||||
"count": 0,
|
||||
"querier": "V3",
|
||||
"groups": [
|
||||
{
|
||||
"address": "010000E0",
|
||||
"users": 1,
|
||||
"timer": "0:00000000",
|
||||
"reporter": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"device": "eth0",
|
||||
"count": 26,
|
||||
"querier": "V2",
|
||||
"groups": [
|
||||
{
|
||||
"address": "260301E0",
|
||||
"users": 1,
|
||||
"timer": "0:00000000",
|
||||
"reporter": 1
|
||||
},
|
||||
{
|
||||
"address": "9B0101E0",
|
||||
"users": 1,
|
||||
"timer": "0:00000000",
|
||||
"reporter": 1
|
||||
},
|
||||
]
|
||||
}
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/net/igmp | jc --proc-net-igmp -p -r
|
||||
[
|
||||
{
|
||||
"index": "0",
|
||||
"device": "lo",
|
||||
"count": "0",
|
||||
"querier": "V3",
|
||||
"groups": [
|
||||
{
|
||||
"address": "010000E0",
|
||||
"users": "1",
|
||||
"timer": "0:00000000",
|
||||
"reporter": "0"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"index": "2",
|
||||
"device": "eth0",
|
||||
"count": "26",
|
||||
"querier": "V2",
|
||||
"groups": [
|
||||
{
|
||||
"address": "260301E0",
|
||||
"users": "1",
|
||||
"timer": "0:00000000",
|
||||
"reporter": "1"
|
||||
},
|
||||
{
|
||||
"address": "9B0101E0",
|
||||
"users": "1",
|
||||
"timer": "0:00000000",
|
||||
"reporter": "1"
|
||||
},
|
||||
]
|
||||
}
|
||||
...
|
||||
}
|
||||
|
||||
<a id="jc.parsers.proc_net_igmp.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)
|
||||
125
docs/parsers/proc_net_igmp6.md
Normal file
125
docs/parsers/proc_net_igmp6.md
Normal file
@@ -0,0 +1,125 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_net_igmp6"></a>
|
||||
|
||||
# jc.parsers.proc\_net\_igmp6
|
||||
|
||||
jc - JSON Convert `/proc/net/igmp6` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/net/igmp6 | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/net/igmp6
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/net/igmp6 | jc --proc-net-igmp6
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_net_igmp6_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_net_igmp6', proc_net_igmp6_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"index": integer,
|
||||
"name": string,
|
||||
"address": string,
|
||||
"users": integer,
|
||||
"group": string,
|
||||
"reporters": integer
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/net/igmp6 | jc --proc -p
|
||||
[
|
||||
{
|
||||
"index": 1,
|
||||
"name": "lo",
|
||||
"address": "ff020000000000000000000000000001",
|
||||
"users": 1,
|
||||
"group": "0000000C",
|
||||
"reporters": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"name": "lo",
|
||||
"address": "ff010000000000000000000000000001",
|
||||
"users": 1,
|
||||
"group": "00000008",
|
||||
"reporters": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"name": "ens33",
|
||||
"address": "ff0200000000000000000001ffa4e315",
|
||||
"users": 1,
|
||||
"group": "00000004",
|
||||
"reporters": 0
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/net/igmp6 | jc --proc-net-igmp6 -p -r
|
||||
[
|
||||
{
|
||||
"index": "1",
|
||||
"name": "lo",
|
||||
"address": "ff020000000000000000000000000001",
|
||||
"users": "1",
|
||||
"group": "0000000C",
|
||||
"reporters": "0"
|
||||
},
|
||||
{
|
||||
"index": "1",
|
||||
"name": "lo",
|
||||
"address": "ff010000000000000000000000000001",
|
||||
"users": "1",
|
||||
"group": "00000008",
|
||||
"reporters": "0"
|
||||
},
|
||||
{
|
||||
"index": "2",
|
||||
"name": "ens33",
|
||||
"address": "ff0200000000000000000001ffa4e315",
|
||||
"users": "1",
|
||||
"group": "00000004",
|
||||
"reporters": "0"
|
||||
}
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_net_igmp6.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)
|
||||
89
docs/parsers/proc_net_ipv6_route.md
Normal file
89
docs/parsers/proc_net_ipv6_route.md
Normal file
@@ -0,0 +1,89 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_net_ipv6_route"></a>
|
||||
|
||||
# jc.parsers.proc\_net\_ipv6\_route
|
||||
|
||||
jc - JSON Convert `/proc/net/ipv6_route` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/net/ipv6_route | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/net/ipv6_route
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/net/ipv6_route | jc --proc-net-ipv6-route
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_net_ipv6_route_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_net_ipv6_route', proc_net_ipv6_route_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"dest_net": string,
|
||||
"dest_prefix": string,
|
||||
"source_net": string,
|
||||
"source_prefix": string,
|
||||
"next_hop": string,
|
||||
"metric": string,
|
||||
"ref_count": string,
|
||||
"use_count": string,
|
||||
"flags": string,
|
||||
"device": string
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/net/ipv6_route | jc --proc -p
|
||||
[
|
||||
{
|
||||
"dest_net": "00000000000000000000000000000001",
|
||||
"dest_prefix": "80",
|
||||
"source_net": "00000000000000000000000000000000",
|
||||
"source_prefix": "00",
|
||||
"next_hop": "00000000000000000000000000000000",
|
||||
"metric": "00000100",
|
||||
"ref_count": "00000001",
|
||||
"use_count": "00000000",
|
||||
"flags": "00000001",
|
||||
"device": "lo"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_net_ipv6_route.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)
|
||||
130
docs/parsers/proc_net_netlink.md
Normal file
130
docs/parsers/proc_net_netlink.md
Normal file
@@ -0,0 +1,130 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_net_netlink"></a>
|
||||
|
||||
# jc.parsers.proc\_net\_netlink
|
||||
|
||||
jc - JSON Convert `/proc/net/netlink` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/net/netlink | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/net/netlink
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/net/netlink | jc --proc-net-netlink
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_net_netlink_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_net_netlink', proc_net_netlink_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"sk": string,
|
||||
"Eth": integer,
|
||||
"Pid": integer,
|
||||
"Groups": string,
|
||||
"Rmem": integer,
|
||||
"Wmem": integer,
|
||||
"Dump": integer,
|
||||
"Locks": integer,
|
||||
"Drops": integer,
|
||||
"Inode": integer
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/net/netlink | jc --proc -p
|
||||
[
|
||||
{
|
||||
"sk": "ffff9b61adaff000",
|
||||
"Eth": 0,
|
||||
"Pid": 1,
|
||||
"Groups": "800405d5",
|
||||
"Rmem": 0,
|
||||
"Wmem": 0,
|
||||
"Dump": 0,
|
||||
"Locks": 2,
|
||||
"Drops": 0,
|
||||
"Inode": 29791
|
||||
},
|
||||
{
|
||||
"sk": "ffff9b61a792a000",
|
||||
"Eth": 0,
|
||||
"Pid": 837,
|
||||
"Groups": "00000111",
|
||||
"Rmem": 0,
|
||||
"Wmem": 0,
|
||||
"Dump": 0,
|
||||
"Locks": 2,
|
||||
"Drops": 0,
|
||||
"Inode": 35337
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/net/netlink | jc --proc-net-netlink -p -r
|
||||
[
|
||||
{
|
||||
"sk": "ffff9b61adaff000",
|
||||
"Eth": "0",
|
||||
"Pid": "1",
|
||||
"Groups": "800405d5",
|
||||
"Rmem": "0",
|
||||
"Wmem": "0",
|
||||
"Dump": "0",
|
||||
"Locks": "2",
|
||||
"Drops": "0",
|
||||
"Inode": "29791"
|
||||
},
|
||||
{
|
||||
"sk": "ffff9b61a792a000",
|
||||
"Eth": "0",
|
||||
"Pid": "837",
|
||||
"Groups": "00000111",
|
||||
"Rmem": "0",
|
||||
"Wmem": "0",
|
||||
"Dump": "0",
|
||||
"Locks": "2",
|
||||
"Drops": "0",
|
||||
"Inode": "35337"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_net_netlink.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)
|
||||
324
docs/parsers/proc_net_netstat.md
Normal file
324
docs/parsers/proc_net_netstat.md
Normal file
@@ -0,0 +1,324 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_net_netstat"></a>
|
||||
|
||||
# jc.parsers.proc\_net\_netstat
|
||||
|
||||
jc - JSON Convert `/proc/net/netstat` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/net/netstat | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/net/netstat
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/net/netstat | jc --proc-net-netstat
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_net_netstat_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_net_netstat', proc_net_netstat_file)
|
||||
|
||||
Schema:
|
||||
|
||||
All values except "type" are integers
|
||||
|
||||
[
|
||||
{
|
||||
"type": string,
|
||||
"<key>": integer
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/net/netstat | jc --proc -p
|
||||
[
|
||||
{
|
||||
"SyncookiesSent": 0,
|
||||
"SyncookiesRecv": 0,
|
||||
"SyncookiesFailed": 0,
|
||||
"EmbryonicRsts": 0,
|
||||
"PruneCalled": 0,
|
||||
"RcvPruned": 0,
|
||||
"OfoPruned": 0,
|
||||
"OutOfWindowIcmps": 0,
|
||||
"LockDroppedIcmps": 0,
|
||||
"ArpFilter": 0,
|
||||
"TW": 3,
|
||||
"TWRecycled": 0,
|
||||
"TWKilled": 0,
|
||||
"PAWSActive": 0,
|
||||
"PAWSEstab": 0,
|
||||
"DelayedACKs": 10,
|
||||
"DelayedACKLocked": 53,
|
||||
"DelayedACKLost": 0,
|
||||
"ListenOverflows": 0,
|
||||
"ListenDrops": 0,
|
||||
"TCPHPHits": 2387,
|
||||
"TCPPureAcks": 12711,
|
||||
"TCPHPAcks": 53535,
|
||||
"TCPRenoRecovery": 0,
|
||||
"TCPSackRecovery": 0,
|
||||
"TCPSACKReneging": 0,
|
||||
"TCPSACKReorder": 0,
|
||||
"TCPRenoReorder": 0,
|
||||
"TCPTSReorder": 0,
|
||||
"TCPFullUndo": 0,
|
||||
"TCPPartialUndo": 0,
|
||||
"TCPDSACKUndo": 0,
|
||||
"TCPLossUndo": 0,
|
||||
"TCPLostRetransmit": 0,
|
||||
"TCPRenoFailures": 0,
|
||||
"TCPSackFailures": 0,
|
||||
"TCPLossFailures": 0,
|
||||
"TCPFastRetrans": 0,
|
||||
"TCPSlowStartRetrans": 0,
|
||||
"TCPTimeouts": 0,
|
||||
"TCPLossProbes": 0,
|
||||
"TCPLossProbeRecovery": 0,
|
||||
"TCPRenoRecoveryFail": 0,
|
||||
"TCPSackRecoveryFail": 0,
|
||||
"TCPRcvCollapsed": 0,
|
||||
"TCPBacklogCoalesce": 2883,
|
||||
"TCPDSACKOldSent": 0,
|
||||
"TCPDSACKOfoSent": 0,
|
||||
"TCPDSACKRecv": 0,
|
||||
"TCPDSACKOfoRecv": 0,
|
||||
"TCPAbortOnData": 0,
|
||||
"TCPAbortOnClose": 1,
|
||||
"TCPAbortOnMemory": 0,
|
||||
"TCPAbortOnTimeout": 0,
|
||||
"TCPAbortOnLinger": 0,
|
||||
"TCPAbortFailed": 0,
|
||||
"TCPMemoryPressures": 0,
|
||||
"TCPMemoryPressuresChrono": 0,
|
||||
"TCPSACKDiscard": 0,
|
||||
"TCPDSACKIgnoredOld": 0,
|
||||
"TCPDSACKIgnoredNoUndo": 0,
|
||||
"TCPSpuriousRTOs": 0,
|
||||
"TCPMD5NotFound": 0,
|
||||
"TCPMD5Unexpected": 0,
|
||||
"TCPMD5Failure": 0,
|
||||
"TCPSackShifted": 0,
|
||||
"TCPSackMerged": 0,
|
||||
"TCPSackShiftFallback": 0,
|
||||
"TCPBacklogDrop": 0,
|
||||
"PFMemallocDrop": 0,
|
||||
"TCPMinTTLDrop": 0,
|
||||
"TCPDeferAcceptDrop": 0,
|
||||
"IPReversePathFilter": 0,
|
||||
"TCPTimeWaitOverflow": 0,
|
||||
"TCPReqQFullDoCookies": 0,
|
||||
"TCPReqQFullDrop": 0,
|
||||
"TCPRetransFail": 0,
|
||||
"TCPRcvCoalesce": 151,
|
||||
"TCPOFOQueue": 0,
|
||||
"TCPOFODrop": 0,
|
||||
"TCPOFOMerge": 0,
|
||||
"TCPChallengeACK": 0,
|
||||
"TCPSYNChallenge": 0,
|
||||
"TCPFastOpenActive": 0,
|
||||
"TCPFastOpenActiveFail": 0,
|
||||
"TCPFastOpenPassive": 0,
|
||||
"TCPFastOpenPassiveFail": 0,
|
||||
"TCPFastOpenListenOverflow": 0,
|
||||
"TCPFastOpenCookieReqd": 0,
|
||||
"TCPFastOpenBlackhole": 0,
|
||||
"TCPSpuriousRtxHostQueues": 0,
|
||||
"BusyPollRxPackets": 0,
|
||||
"TCPAutoCorking": 28376,
|
||||
"TCPFromZeroWindowAdv": 0,
|
||||
"TCPToZeroWindowAdv": 0,
|
||||
"TCPWantZeroWindowAdv": 0,
|
||||
"TCPSynRetrans": 0,
|
||||
"TCPOrigDataSent": 119438,
|
||||
"TCPHystartTrainDetect": 3,
|
||||
"TCPHystartTrainCwnd": 60,
|
||||
"TCPHystartDelayDetect": 0,
|
||||
"TCPHystartDelayCwnd": 0,
|
||||
"TCPACKSkippedSynRecv": 0,
|
||||
"TCPACKSkippedPAWS": 0,
|
||||
"TCPACKSkippedSeq": 0,
|
||||
"TCPACKSkippedFinWait2": 0,
|
||||
"TCPACKSkippedTimeWait": 0,
|
||||
"TCPACKSkippedChallenge": 0,
|
||||
"TCPWinProbe": 0,
|
||||
"TCPKeepAlive": 6,
|
||||
"TCPMTUPFail": 0,
|
||||
"TCPMTUPSuccess": 0,
|
||||
"TCPDelivered": 119453,
|
||||
"TCPDeliveredCE": 0,
|
||||
"TCPAckCompressed": 0,
|
||||
"TCPZeroWindowDrop": 0,
|
||||
"TCPRcvQDrop": 0,
|
||||
"TCPWqueueTooBig": 0,
|
||||
"TCPFastOpenPassiveAltKey": 0,
|
||||
"TcpTimeoutRehash": 0,
|
||||
"TcpDuplicateDataRehash": 0,
|
||||
"type": "TcpExt"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/net/netstat | jc --proc-net-netstat -p -r
|
||||
[
|
||||
{
|
||||
"SyncookiesSent": "0",
|
||||
"SyncookiesRecv": "0",
|
||||
"SyncookiesFailed": "0",
|
||||
"EmbryonicRsts": "0",
|
||||
"PruneCalled": "0",
|
||||
"RcvPruned": "0",
|
||||
"OfoPruned": "0",
|
||||
"OutOfWindowIcmps": "0",
|
||||
"LockDroppedIcmps": "0",
|
||||
"ArpFilter": "0",
|
||||
"TW": "3",
|
||||
"TWRecycled": "0",
|
||||
"TWKilled": "0",
|
||||
"PAWSActive": "0",
|
||||
"PAWSEstab": "0",
|
||||
"DelayedACKs": "10",
|
||||
"DelayedACKLocked": "53",
|
||||
"DelayedACKLost": "0",
|
||||
"ListenOverflows": "0",
|
||||
"ListenDrops": "0",
|
||||
"TCPHPHits": "2387",
|
||||
"TCPPureAcks": "12711",
|
||||
"TCPHPAcks": "53535",
|
||||
"TCPRenoRecovery": "0",
|
||||
"TCPSackRecovery": "0",
|
||||
"TCPSACKReneging": "0",
|
||||
"TCPSACKReorder": "0",
|
||||
"TCPRenoReorder": "0",
|
||||
"TCPTSReorder": "0",
|
||||
"TCPFullUndo": "0",
|
||||
"TCPPartialUndo": "0",
|
||||
"TCPDSACKUndo": "0",
|
||||
"TCPLossUndo": "0",
|
||||
"TCPLostRetransmit": "0",
|
||||
"TCPRenoFailures": "0",
|
||||
"TCPSackFailures": "0",
|
||||
"TCPLossFailures": "0",
|
||||
"TCPFastRetrans": "0",
|
||||
"TCPSlowStartRetrans": "0",
|
||||
"TCPTimeouts": "0",
|
||||
"TCPLossProbes": "0",
|
||||
"TCPLossProbeRecovery": "0",
|
||||
"TCPRenoRecoveryFail": "0",
|
||||
"TCPSackRecoveryFail": "0",
|
||||
"TCPRcvCollapsed": "0",
|
||||
"TCPBacklogCoalesce": "2883",
|
||||
"TCPDSACKOldSent": "0",
|
||||
"TCPDSACKOfoSent": "0",
|
||||
"TCPDSACKRecv": "0",
|
||||
"TCPDSACKOfoRecv": "0",
|
||||
"TCPAbortOnData": "0",
|
||||
"TCPAbortOnClose": "1",
|
||||
"TCPAbortOnMemory": "0",
|
||||
"TCPAbortOnTimeout": "0",
|
||||
"TCPAbortOnLinger": "0",
|
||||
"TCPAbortFailed": "0",
|
||||
"TCPMemoryPressures": "0",
|
||||
"TCPMemoryPressuresChrono": "0",
|
||||
"TCPSACKDiscard": "0",
|
||||
"TCPDSACKIgnoredOld": "0",
|
||||
"TCPDSACKIgnoredNoUndo": "0",
|
||||
"TCPSpuriousRTOs": "0",
|
||||
"TCPMD5NotFound": "0",
|
||||
"TCPMD5Unexpected": "0",
|
||||
"TCPMD5Failure": "0",
|
||||
"TCPSackShifted": "0",
|
||||
"TCPSackMerged": "0",
|
||||
"TCPSackShiftFallback": "0",
|
||||
"TCPBacklogDrop": "0",
|
||||
"PFMemallocDrop": "0",
|
||||
"TCPMinTTLDrop": "0",
|
||||
"TCPDeferAcceptDrop": "0",
|
||||
"IPReversePathFilter": "0",
|
||||
"TCPTimeWaitOverflow": "0",
|
||||
"TCPReqQFullDoCookies": "0",
|
||||
"TCPReqQFullDrop": "0",
|
||||
"TCPRetransFail": "0",
|
||||
"TCPRcvCoalesce": "151",
|
||||
"TCPOFOQueue": "0",
|
||||
"TCPOFODrop": "0",
|
||||
"TCPOFOMerge": "0",
|
||||
"TCPChallengeACK": "0",
|
||||
"TCPSYNChallenge": "0",
|
||||
"TCPFastOpenActive": "0",
|
||||
"TCPFastOpenActiveFail": "0",
|
||||
"TCPFastOpenPassive": "0",
|
||||
"TCPFastOpenPassiveFail": "0",
|
||||
"TCPFastOpenListenOverflow": "0",
|
||||
"TCPFastOpenCookieReqd": "0",
|
||||
"TCPFastOpenBlackhole": "0",
|
||||
"TCPSpuriousRtxHostQueues": "0",
|
||||
"BusyPollRxPackets": "0",
|
||||
"TCPAutoCorking": "28376",
|
||||
"TCPFromZeroWindowAdv": "0",
|
||||
"TCPToZeroWindowAdv": "0",
|
||||
"TCPWantZeroWindowAdv": "0",
|
||||
"TCPSynRetrans": "0",
|
||||
"TCPOrigDataSent": "119438",
|
||||
"TCPHystartTrainDetect": "3",
|
||||
"TCPHystartTrainCwnd": "60",
|
||||
"TCPHystartDelayDetect": "0",
|
||||
"TCPHystartDelayCwnd": "0",
|
||||
"TCPACKSkippedSynRecv": "0",
|
||||
"TCPACKSkippedPAWS": "0",
|
||||
"TCPACKSkippedSeq": "0",
|
||||
"TCPACKSkippedFinWait2": "0",
|
||||
"TCPACKSkippedTimeWait": "0",
|
||||
"TCPACKSkippedChallenge": "0",
|
||||
"TCPWinProbe": "0",
|
||||
"TCPKeepAlive": "6",
|
||||
"TCPMTUPFail": "0",
|
||||
"TCPMTUPSuccess": "0",
|
||||
"TCPDelivered": "119453",
|
||||
"TCPDeliveredCE": "0",
|
||||
"TCPAckCompressed": "0",
|
||||
"TCPZeroWindowDrop": "0",
|
||||
"TCPRcvQDrop": "0",
|
||||
"TCPWqueueTooBig": "0",
|
||||
"TCPFastOpenPassiveAltKey": "0",
|
||||
"TcpTimeoutRehash": "0",
|
||||
"TcpDuplicateDataRehash": "0",
|
||||
"type": "TcpExt"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_net_netstat.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)
|
||||
95
docs/parsers/proc_net_packet.md
Normal file
95
docs/parsers/proc_net_packet.md
Normal file
@@ -0,0 +1,95 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_net_packet"></a>
|
||||
|
||||
# jc.parsers.proc\_net\_packet
|
||||
|
||||
jc - JSON Convert `/proc/net/packet` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/net/packet | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/net/packet
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/net/packet | jc --proc-net-packet
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_net_packet_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_net_packet', proc_net_packet_file)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
"sk": string,
|
||||
"RefCnt": integer,
|
||||
"Type": integer,
|
||||
"Proto": string,
|
||||
"Iface": integer,
|
||||
"R": integer,
|
||||
"Rmem": integer,
|
||||
"User": integer,
|
||||
"Inode": integer
|
||||
}
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/net/packet | jc --proc -p
|
||||
{
|
||||
"sk": "ffff9b61b56c1800",
|
||||
"RefCnt": 3,
|
||||
"Type": 3,
|
||||
"Proto": "88cc",
|
||||
"Iface": 2,
|
||||
"R": 1,
|
||||
"Rmem": 0,
|
||||
"User": 101,
|
||||
"Inode": 34754
|
||||
}
|
||||
|
||||
$ cat /proc/net/packet | jc --proc-net-packet -p -r
|
||||
{
|
||||
"sk": "ffff9b61b56c1800",
|
||||
"RefCnt": "3",
|
||||
"Type": "3",
|
||||
"Proto": "88cc",
|
||||
"Iface": "2",
|
||||
"R": "1",
|
||||
"Rmem": "0",
|
||||
"User": "101",
|
||||
"Inode": "34754"
|
||||
}
|
||||
|
||||
<a id="jc.parsers.proc_net_packet.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
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
157
docs/parsers/proc_net_protocols.md
Normal file
157
docs/parsers/proc_net_protocols.md
Normal file
@@ -0,0 +1,157 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_net_protocols"></a>
|
||||
|
||||
# jc.parsers.proc\_net\_protocols
|
||||
|
||||
jc - JSON Convert `/proc/net/protocols` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/net/protocols | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/net/protocols
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/net/protocols | jc --proc-net-protocols
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_net_protocols_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_net_protocols', proc_net_protocols_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"protocol": string,
|
||||
"size": integer,
|
||||
"sockets": integer,
|
||||
"memory": integer,
|
||||
"press": string,
|
||||
"maxhdr": integer,
|
||||
"slab": boolean,
|
||||
"module": string,
|
||||
"cl": boolean,
|
||||
"co": boolean,
|
||||
"di": boolean,
|
||||
"ac": boolean,
|
||||
"io": boolean,
|
||||
"in": boolean,
|
||||
"de": boolean,
|
||||
"sh": boolean,
|
||||
"ss": boolean,
|
||||
"gs": boolean,
|
||||
"se": boolean,
|
||||
"re": boolean,
|
||||
"sp": boolean,
|
||||
"bi": boolean,
|
||||
"br": boolean,
|
||||
"ha": boolean,
|
||||
"uh": boolean,
|
||||
"gp": boolean,
|
||||
"em": boolean,
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/net/protocols | jc --proc -p
|
||||
[
|
||||
{
|
||||
"protocol": "AF_VSOCK",
|
||||
"size": 1216,
|
||||
"sockets": 0,
|
||||
"memory": -1,
|
||||
"press": "NI",
|
||||
"maxhdr": 0,
|
||||
"slab": true,
|
||||
"module": "vsock",
|
||||
"cl": false,
|
||||
"co": false,
|
||||
"di": false,
|
||||
"ac": false,
|
||||
"io": false,
|
||||
"in": false,
|
||||
"de": false,
|
||||
"sh": false,
|
||||
"ss": false,
|
||||
"gs": false,
|
||||
"se": false,
|
||||
"re": false,
|
||||
"sp": false,
|
||||
"bi": false,
|
||||
"br": false,
|
||||
"ha": false,
|
||||
"uh": false,
|
||||
"gp": false,
|
||||
"em": false
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/net/protocols | jc --proc-net-protocols -p -r
|
||||
[
|
||||
{
|
||||
"protocol": "AF_VSOCK",
|
||||
"size": "1216",
|
||||
"sockets": "0",
|
||||
"memory": "-1",
|
||||
"press": "NI",
|
||||
"maxhdr": "0",
|
||||
"slab": "yes",
|
||||
"module": "vsock",
|
||||
"cl": "n",
|
||||
"co": "n",
|
||||
"di": "n",
|
||||
"ac": "n",
|
||||
"io": "n",
|
||||
"in": "n",
|
||||
"de": "n",
|
||||
"sh": "n",
|
||||
"ss": "n",
|
||||
"gs": "n",
|
||||
"se": "n",
|
||||
"re": "n",
|
||||
"sp": "n",
|
||||
"bi": "n",
|
||||
"br": "n",
|
||||
"ha": "n",
|
||||
"uh": "n",
|
||||
"gp": "n",
|
||||
"em": "n"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_net_protocols.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)
|
||||
109
docs/parsers/proc_net_route.md
Normal file
109
docs/parsers/proc_net_route.md
Normal file
@@ -0,0 +1,109 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_net_route"></a>
|
||||
|
||||
# jc.parsers.proc\_net\_route
|
||||
|
||||
jc - JSON Convert `/proc/net/route` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/net/route | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/net/route
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/net/route | jc --proc-net-route
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_net_route_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_net_route', proc_net_route_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"Iface": string,
|
||||
"Destination": string,
|
||||
"Gateway": string,
|
||||
"Flags": string,
|
||||
"RefCnt": integer,
|
||||
"Use": integer,
|
||||
"Metric": integer,
|
||||
"Mask": string,
|
||||
"MTU": integer,
|
||||
"Window": integer,
|
||||
"IRTT": integer
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/net/route | jc --proc -p
|
||||
[
|
||||
{
|
||||
"Iface": "ens33",
|
||||
"Destination": "00000000",
|
||||
"Gateway": "0247A8C0",
|
||||
"Flags": "0003",
|
||||
"RefCnt": 0,
|
||||
"Use": 0,
|
||||
"Metric": 100,
|
||||
"Mask": "00000000",
|
||||
"MTU": 0,
|
||||
"Window": 0,
|
||||
"IRTT": 0
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/net/route | jc --proc-net-route -p -r
|
||||
[
|
||||
{
|
||||
"Iface": "ens33",
|
||||
"Destination": "00000000",
|
||||
"Gateway": "0247A8C0",
|
||||
"Flags": "0003",
|
||||
"RefCnt": "0",
|
||||
"Use": "0",
|
||||
"Metric": "100",
|
||||
"Mask": "00000000",
|
||||
"MTU": "0",
|
||||
"Window": "0",
|
||||
"IRTT": "0"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_net_route.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)
|
||||
100
docs/parsers/proc_net_unix.md
Normal file
100
docs/parsers/proc_net_unix.md
Normal file
@@ -0,0 +1,100 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_net_unix"></a>
|
||||
|
||||
# jc.parsers.proc\_net\_unix
|
||||
|
||||
jc - JSON Convert `/proc/net/unix` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/net/unix | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/net/unix
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/net/unix | jc --proc-net-unix
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_net_unix_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_net_unix', proc_net_unix_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"Num": string,
|
||||
"RefCount": string,
|
||||
"Protocol": string,
|
||||
"Flags": string,
|
||||
"Type": string,
|
||||
"St": string,
|
||||
"Inode": integer,
|
||||
"Path": string
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/net/unix | jc --proc -p
|
||||
[
|
||||
{
|
||||
"Num": "ffff9b61ac49c400:",
|
||||
"RefCount": "00000002",
|
||||
"Protocol": "00000000",
|
||||
"Flags": "00010000",
|
||||
"Type": "0001",
|
||||
"St": "01",
|
||||
"Inode": 42776,
|
||||
"Path": "/var/snap/lxd/common/lxd/unix.socket"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/net/unix | jc --proc-net-unix -p -r
|
||||
[
|
||||
{
|
||||
"Num": "ffff9b61ac49c400:",
|
||||
"RefCount": "00000002",
|
||||
"Protocol": "00000000",
|
||||
"Flags": "00010000",
|
||||
"Type": "0001",
|
||||
"St": "01",
|
||||
"Inode": "42776",
|
||||
"Path": "/var/snap/lxd/common/lxd/unix.socket"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_net_unix.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)
|
||||
141
docs/parsers/proc_pagetypeinfo.md
Normal file
141
docs/parsers/proc_pagetypeinfo.md
Normal file
@@ -0,0 +1,141 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_pagetypeinfo"></a>
|
||||
|
||||
# jc.parsers.proc\_pagetypeinfo
|
||||
|
||||
jc - JSON Convert `/proc/pagetypeinfo` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/pagetypeinfo | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/pagetypeinfo
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/pagetypeinfo | jc --proc-pagetypeinfo
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_pagetypeinfo_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_pagetypeinfo', proc_pagetypeinfo_file)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
"page_block_order": integer,
|
||||
"pages_per_block": integer,
|
||||
"free_pages": [
|
||||
{
|
||||
"node": integer,
|
||||
"zone": string,
|
||||
"type": string,
|
||||
"free": [
|
||||
integer # [0]
|
||||
]
|
||||
],
|
||||
"num_blocks_type": [
|
||||
{
|
||||
"node": integer,
|
||||
"zone": string,
|
||||
"unmovable": integer,
|
||||
"movable": integer,
|
||||
"reclaimable": integer,
|
||||
"high_atomic": integer,
|
||||
"isolate": integer
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
[0] array index correlates to the Order number.
|
||||
E.g. free[0] is the value for Order 0
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/pagetypeinfo | jc --proc -p
|
||||
{
|
||||
"page_block_order": 9,
|
||||
"pages_per_block": 512,
|
||||
"free_pages": [
|
||||
{
|
||||
"node": 0,
|
||||
"zone": "DMA",
|
||||
"type": "Unmovable",
|
||||
"free": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
...
|
||||
],
|
||||
"num_blocks_type": [
|
||||
{
|
||||
"node": 0,
|
||||
"zone": "DMA",
|
||||
"unmovable": 1,
|
||||
"movable": 7,
|
||||
"reclaimable": 0,
|
||||
"high_atomic": 0,
|
||||
"isolate": 0
|
||||
},
|
||||
{
|
||||
"node": 0,
|
||||
"zone": "DMA32",
|
||||
"unmovable": 8,
|
||||
"movable": 1472,
|
||||
"reclaimable": 48,
|
||||
"high_atomic": 0,
|
||||
"isolate": 0
|
||||
},
|
||||
{
|
||||
"node": 0,
|
||||
"zone": "Normal",
|
||||
"unmovable": 120,
|
||||
"movable": 345,
|
||||
"reclaimable": 47,
|
||||
"high_atomic": 0,
|
||||
"isolate": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
<a id="jc.parsers.proc_pagetypeinfo.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
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
100
docs/parsers/proc_partitions.md
Normal file
100
docs/parsers/proc_partitions.md
Normal file
@@ -0,0 +1,100 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_partitions"></a>
|
||||
|
||||
# jc.parsers.proc\_partitions
|
||||
|
||||
jc - JSON Convert `/proc/partitions` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/partitions | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/partitions
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/partitions | jc --proc-partitions
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_partitions_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_partitions', proc_partitions_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"major": integer,
|
||||
"minor": integer,
|
||||
"num_blocks": integer,
|
||||
"name": string
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/partitions | jc --proc -p
|
||||
[
|
||||
{
|
||||
"major": 7,
|
||||
"minor": 0,
|
||||
"num_blocks": 56896,
|
||||
"name": "loop0"
|
||||
},
|
||||
{
|
||||
"major": 7,
|
||||
"minor": 1,
|
||||
"num_blocks": 56868,
|
||||
"name": "loop1"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/partitions | jc --proc-partitions -p -r
|
||||
[
|
||||
{
|
||||
"major": "7",
|
||||
"minor": "0",
|
||||
"num_blocks": "56896",
|
||||
"name": "loop0"
|
||||
},
|
||||
{
|
||||
"major": "7",
|
||||
"minor": "1",
|
||||
"num_blocks": "56868",
|
||||
"name": "loop1"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_partitions.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)
|
||||
127
docs/parsers/proc_pid_fdinfo.md
Normal file
127
docs/parsers/proc_pid_fdinfo.md
Normal file
@@ -0,0 +1,127 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_pid_fdinfo"></a>
|
||||
|
||||
# jc.parsers.proc\_pid\_fdinfo
|
||||
|
||||
jc - JSON Convert `/proc/<pid>/fdinfo/<fd>` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/1/fdinfo/5 | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/1/fdinfo/5
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/1/fdinfo/5 | jc --proc-pid-fdinfo
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_pid_fdinfo_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_pid_fdinfo', proc_pid_fdinfo_file)
|
||||
|
||||
Schema:
|
||||
|
||||
Any unspecified fields are strings.
|
||||
|
||||
{
|
||||
"pos": integer,
|
||||
"flags": integer,
|
||||
"mnt_id": integer,
|
||||
"scm_fds": string,
|
||||
"ino": integer,
|
||||
"lock": string,
|
||||
"epoll": {
|
||||
"tfd": integer,
|
||||
"events": string,
|
||||
"data": string,
|
||||
"pos": integer,
|
||||
"ino": string,
|
||||
"sdev": string
|
||||
},
|
||||
"inotify": {
|
||||
"wd": integer,
|
||||
"ino": string,
|
||||
"sdev": string,
|
||||
"mask": string,
|
||||
"ignored_mask": string,
|
||||
"fhandle-bytes": string,
|
||||
"fhandle-type": string,
|
||||
"f_handle": string
|
||||
},
|
||||
"fanotify": {
|
||||
"flags": string,
|
||||
"event-flags": string,
|
||||
"mnt_id": string,
|
||||
"mflags": string,
|
||||
"mask": string,
|
||||
"ignored_mask": string,
|
||||
"ino": string,
|
||||
"sdev": string,
|
||||
"fhandle-bytes": string,
|
||||
"fhandle-type": string,
|
||||
"f_handle": string
|
||||
},
|
||||
"clockid": integer,
|
||||
"ticks": integer,
|
||||
"settime flags": integer,
|
||||
"it_value": [
|
||||
integer
|
||||
],
|
||||
"it_interval": [
|
||||
integer
|
||||
]
|
||||
}
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/1/fdinfo/5 | jc --proc -p
|
||||
{
|
||||
"pos": 0,
|
||||
"flags": 2,
|
||||
"mnt_id": 9,
|
||||
"ino": 63107,
|
||||
"clockid": 0,
|
||||
"ticks": 0,
|
||||
"settime flags": 1,
|
||||
"it_value": [
|
||||
0,
|
||||
49406829
|
||||
],
|
||||
"it_interval": [
|
||||
1,
|
||||
0
|
||||
]
|
||||
}
|
||||
|
||||
<a id="jc.parsers.proc_pid_fdinfo.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
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
74
docs/parsers/proc_pid_io.md
Normal file
74
docs/parsers/proc_pid_io.md
Normal file
@@ -0,0 +1,74 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_pid_io"></a>
|
||||
|
||||
# jc.parsers.proc\_pid\_io
|
||||
|
||||
jc - JSON Convert `/proc/<pid>/io` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/1/io | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/1/io
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/1/io | jc --proc-pid-io
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_pid_io_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_pid_io', proc_pid_io_file)
|
||||
|
||||
Schema:
|
||||
|
||||
All values are integers.
|
||||
|
||||
{
|
||||
<keyName> integer
|
||||
}
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/1/io | jc --proc -p
|
||||
{
|
||||
"rchar": 4699288382,
|
||||
"wchar": 2931802997,
|
||||
"syscr": 661897,
|
||||
"syscw": 890910,
|
||||
"read_bytes": 168468480,
|
||||
"write_bytes": 27357184,
|
||||
"cancelled_write_bytes": 16883712
|
||||
}
|
||||
|
||||
<a id="jc.parsers.proc_pid_io.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
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
125
docs/parsers/proc_pid_maps.md
Normal file
125
docs/parsers/proc_pid_maps.md
Normal file
@@ -0,0 +1,125 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_pid_maps"></a>
|
||||
|
||||
# jc.parsers.proc\_pid\_maps
|
||||
|
||||
jc - JSON Convert `/proc/<pid>/maps` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/1/maps | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/1/maps
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/1/maps | jc --proc-pid-maps
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_pid_maps_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_pid_maps', proc_pid_maps_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"start": string,
|
||||
"end": string,
|
||||
"perms": [
|
||||
string
|
||||
],
|
||||
"offset": string,
|
||||
"inode": integer,
|
||||
"pathname": string,
|
||||
"maj": string,
|
||||
"min": string
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/1/maps | jc --proc -p
|
||||
[
|
||||
{
|
||||
"perms": [
|
||||
"read",
|
||||
"private"
|
||||
],
|
||||
"offset": "00000000",
|
||||
"inode": 798126,
|
||||
"pathname": "/usr/lib/systemd/systemd",
|
||||
"start": "55a9e753c000",
|
||||
"end": "55a9e7570000",
|
||||
"maj": "fd",
|
||||
"min": "00"
|
||||
},
|
||||
{
|
||||
"perms": [
|
||||
"read",
|
||||
"execute",
|
||||
"private"
|
||||
],
|
||||
"offset": "00034000",
|
||||
"inode": 798126,
|
||||
"pathname": "/usr/lib/systemd/systemd",
|
||||
"start": "55a9e7570000",
|
||||
"end": "55a9e763a000",
|
||||
"maj": "fd",
|
||||
"min": "00"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/1/maps | jc --proc-pid-maps -p -r
|
||||
[
|
||||
{
|
||||
"address": "55a9e753c000-55a9e7570000",
|
||||
"perms": "r--p",
|
||||
"offset": "00000000",
|
||||
"dev": "fd:00",
|
||||
"inode": "798126",
|
||||
"pathname": "/usr/lib/systemd/systemd"
|
||||
},
|
||||
{
|
||||
"address": "55a9e7570000-55a9e763a000",
|
||||
"perms": "r-xp",
|
||||
"offset": "00034000",
|
||||
"dev": "fd:00",
|
||||
"inode": "798126",
|
||||
"pathname": "/usr/lib/systemd/systemd"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_pid_maps.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)
|
||||
170
docs/parsers/proc_pid_mountinfo.md
Normal file
170
docs/parsers/proc_pid_mountinfo.md
Normal file
@@ -0,0 +1,170 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_pid_mountinfo"></a>
|
||||
|
||||
# jc.parsers.proc\_pid\_mountinfo
|
||||
|
||||
jc - JSON Convert `/proc/<pid>/mountinfo` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/1/mountinfo | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/1/mountinfo
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/1/mountinfo | jc --proc-pid-mountinfo
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_pid_mountinfo_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_pid_mountinfo', proc_pid_mountinfo_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"mount_id": integer,
|
||||
"parent_id": integer,
|
||||
"maj": integer,
|
||||
"min": integer,
|
||||
"root": string,
|
||||
"mount_point": string,
|
||||
"mount_options": [
|
||||
string
|
||||
],
|
||||
"optional_fields": { # [0]
|
||||
"<key>": integer # [1]
|
||||
},
|
||||
"fs_type": string,
|
||||
"mount_source": string,
|
||||
"super_options": [
|
||||
integer # [2]
|
||||
],
|
||||
"super_options_fields": {
|
||||
"<key>": string
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
[0] if empty, then private mount
|
||||
[1] unbindable will always have a value of 0
|
||||
[2] integer conversions are attempted. Use --raw or raw=True for
|
||||
original string values.
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/1/mountinfo | jc --proc -p
|
||||
[
|
||||
{
|
||||
"mount_id": 24,
|
||||
"parent_id": 30,
|
||||
"maj": 0,
|
||||
"min": 22,
|
||||
"root": "/",
|
||||
"mount_point": "/sys",
|
||||
"mount_options": [
|
||||
"rw",
|
||||
"nosuid",
|
||||
"nodev",
|
||||
"noexec",
|
||||
"relatime"
|
||||
],
|
||||
"optional_fields": {
|
||||
"master": 1,
|
||||
"shared": 7
|
||||
},
|
||||
"fs_type": "sysfs",
|
||||
"mount_source": "sysfs",
|
||||
"super_options": [
|
||||
"rw"
|
||||
]
|
||||
},
|
||||
{
|
||||
"mount_id": 25,
|
||||
"parent_id": 30,
|
||||
"maj": 0,
|
||||
"min": 23,
|
||||
"root": "/",
|
||||
"mount_point": "/proc",
|
||||
"mount_options": [
|
||||
"rw",
|
||||
"nosuid",
|
||||
"nodev",
|
||||
"noexec",
|
||||
"relatime"
|
||||
],
|
||||
"optional_fields": {
|
||||
"shared": 14
|
||||
},
|
||||
"fs_type": "proc",
|
||||
"mount_source": "proc",
|
||||
"super_options": [
|
||||
"rw"
|
||||
]
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/1/mountinfo | jc --proc-pid-mountinfo -p -r
|
||||
[
|
||||
{
|
||||
"mount_id": "24",
|
||||
"parent_id": "30",
|
||||
"maj": "0",
|
||||
"min": "22",
|
||||
"root": "/",
|
||||
"mount_point": "/sys",
|
||||
"mount_options": "rw,nosuid,nodev,noexec,relatime",
|
||||
"optional_fields": "master:1 shared:7 ",
|
||||
"fs_type": "sysfs",
|
||||
"mount_source": "sysfs",
|
||||
"super_options": "rw"
|
||||
},
|
||||
{
|
||||
"mount_id": "25",
|
||||
"parent_id": "30",
|
||||
"maj": "0",
|
||||
"min": "23",
|
||||
"root": "/",
|
||||
"mount_point": "/proc",
|
||||
"mount_options": "rw,nosuid,nodev,noexec,relatime",
|
||||
"optional_fields": "shared:14 ",
|
||||
"fs_type": "proc",
|
||||
"mount_source": "proc",
|
||||
"super_options": "rw"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_pid_mountinfo.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)
|
||||
126
docs/parsers/proc_pid_numa_maps.md
Normal file
126
docs/parsers/proc_pid_numa_maps.md
Normal file
@@ -0,0 +1,126 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_pid_numa_maps"></a>
|
||||
|
||||
# jc.parsers.proc\_pid\_numa\_maps
|
||||
|
||||
jc - JSON Convert `/proc/<pid>/numa_maps` file parser
|
||||
|
||||
This parser will attempt to convert number values to integers. If that is
|
||||
not desired, please use the `--raw` option (cli) or `raw=True` argument
|
||||
(module).
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/1/numa_maps | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/1/numa_maps
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/1/numa_maps | jc --proc-pid-numa-maps
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_pid_numa_maps_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_pid_numa_maps', proc_pid_numa_maps_file)
|
||||
|
||||
Schema:
|
||||
|
||||
Integer conversion for Key/value pairs will be attempted.
|
||||
|
||||
[
|
||||
{
|
||||
"address": string,
|
||||
"policy": string,
|
||||
"<key>": string/integer,
|
||||
"options": [
|
||||
string # [0]
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
[0] remaining individual words that are not part of a key/value pair
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/1/numa_maps | jc --proc -p
|
||||
[
|
||||
{
|
||||
"address": "7f53b5083000",
|
||||
"policy": "default",
|
||||
"file": "/usr/lib/x86_64-linux-gnu/ld-2.32.so",
|
||||
"anon": 2,
|
||||
"dirty": 2,
|
||||
"N0": 2,
|
||||
"kernelpagesize_kB": 4
|
||||
},
|
||||
{
|
||||
"address": "7ffd1b23e000",
|
||||
"policy": "default",
|
||||
"anon": 258,
|
||||
"dirty": 258,
|
||||
"N0": 258,
|
||||
"kernelpagesize_kB": 4,
|
||||
"options": [
|
||||
"stack"
|
||||
]
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/1/numa_maps | jc --proc-pid-numa-maps -p -r
|
||||
[
|
||||
{
|
||||
"address": "7f53b5083000",
|
||||
"policy": "default",
|
||||
"file": "/usr/lib/x86_64-linux-gnu/ld-2.32.so",
|
||||
"anon": "2",
|
||||
"dirty": "2",
|
||||
"N0": "2",
|
||||
"kernelpagesize_kB": "4"
|
||||
},
|
||||
{
|
||||
"address": "7ffd1b23e000",
|
||||
"policy": "default",
|
||||
"anon": "258",
|
||||
"dirty": "258",
|
||||
"N0": "258",
|
||||
"kernelpagesize_kB": "4",
|
||||
"options": [
|
||||
"stack"
|
||||
]
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_pid_numa_maps.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)
|
||||
191
docs/parsers/proc_pid_smaps.md
Normal file
191
docs/parsers/proc_pid_smaps.md
Normal file
@@ -0,0 +1,191 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_pid_smaps"></a>
|
||||
|
||||
# jc.parsers.proc\_pid\_smaps
|
||||
|
||||
jc - JSON Convert `/proc/<pid>/smaps` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/1/smaps | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/1/smaps
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/1/smaps | jc --proc-pid-smaps
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_pid_smaps_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_pid_smaps', proc_pid_smaps_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"start": string,
|
||||
"end": string,
|
||||
"perms": [
|
||||
string
|
||||
],
|
||||
"offset": string,
|
||||
"maj": string,
|
||||
"min": string,
|
||||
"inode": integer,
|
||||
"pathname": string,
|
||||
"Size": integer,
|
||||
"KernelPageSize": integer,
|
||||
"MMUPageSize": integer,
|
||||
"Rss": integer,
|
||||
"Pss": integer,
|
||||
"Shared_Clean": integer,
|
||||
"Shared_Dirty": integer,
|
||||
"Private_Clean": integer,
|
||||
"Private_Dirty": integer,
|
||||
"Referenced": integer,
|
||||
"Anonymous": integer,
|
||||
"LazyFree": integer,
|
||||
"AnonHugePages": integer,
|
||||
"ShmemPmdMapped": integer,
|
||||
"FilePmdMapped": integer,
|
||||
"Shared_Hugetlb": integer,
|
||||
"Private_Hugetlb": integer,
|
||||
"Swap": integer,
|
||||
"SwapPss": integer,
|
||||
"Locked": integer,
|
||||
"THPeligible": integer,
|
||||
"VmFlags": [
|
||||
string
|
||||
],
|
||||
"VmFlags_pretty": [
|
||||
string
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/1/smaps | jc --proc -p
|
||||
[
|
||||
{
|
||||
"start": "55a9e753c000",
|
||||
"end": "55a9e7570000",
|
||||
"perms": [
|
||||
"read",
|
||||
"private"
|
||||
],
|
||||
"offset": "00000000",
|
||||
"maj": "fd",
|
||||
"min": "00",
|
||||
"inode": 798126,
|
||||
"pathname": "/usr/lib/systemd/systemd",
|
||||
"Size": 208,
|
||||
"KernelPageSize": 4,
|
||||
"MMUPageSize": 4,
|
||||
"Rss": 208,
|
||||
"Pss": 104,
|
||||
"Shared_Clean": 208,
|
||||
"Shared_Dirty": 0,
|
||||
"Private_Clean": 0,
|
||||
"Private_Dirty": 0,
|
||||
"Referenced": 208,
|
||||
"Anonymous": 0,
|
||||
"LazyFree": 0,
|
||||
"AnonHugePages": 0,
|
||||
"ShmemPmdMapped": 0,
|
||||
"FilePmdMapped": 0,
|
||||
"Shared_Hugetlb": 0,
|
||||
"Private_Hugetlb": 0,
|
||||
"Swap": 0,
|
||||
"SwapPss": 0,
|
||||
"Locked": 0,
|
||||
"THPeligible": 0,
|
||||
"VmFlags": [
|
||||
"rd",
|
||||
"mr",
|
||||
"mw",
|
||||
"me",
|
||||
"dw",
|
||||
"sd"
|
||||
],
|
||||
"VmFlags_pretty": [
|
||||
"readable",
|
||||
"may read",
|
||||
"may write",
|
||||
"may execute",
|
||||
"disabled write to the mapped file",
|
||||
"soft-dirty flag"
|
||||
]
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
$ cat /proc/1/smaps | jc --proc-pid-smaps -p -r
|
||||
[
|
||||
{
|
||||
"start": "55a9e753c000",
|
||||
"end": "55a9e7570000",
|
||||
"perms": "r--p",
|
||||
"offset": "00000000",
|
||||
"maj": "fd",
|
||||
"min": "00",
|
||||
"inode": "798126",
|
||||
"pathname": "/usr/lib/systemd/systemd",
|
||||
"Size": "208 kB",
|
||||
"KernelPageSize": "4 kB",
|
||||
"MMUPageSize": "4 kB",
|
||||
"Rss": "208 kB",
|
||||
"Pss": "104 kB",
|
||||
"Shared_Clean": "208 kB",
|
||||
"Shared_Dirty": "0 kB",
|
||||
"Private_Clean": "0 kB",
|
||||
"Private_Dirty": "0 kB",
|
||||
"Referenced": "208 kB",
|
||||
"Anonymous": "0 kB",
|
||||
"LazyFree": "0 kB",
|
||||
"AnonHugePages": "0 kB",
|
||||
"ShmemPmdMapped": "0 kB",
|
||||
"FilePmdMapped": "0 kB",
|
||||
"Shared_Hugetlb": "0 kB",
|
||||
"Private_Hugetlb": "0 kB",
|
||||
"Swap": "0 kB",
|
||||
"SwapPss": "0 kB",
|
||||
"Locked": "0 kB",
|
||||
"THPeligible": "0",
|
||||
"VmFlags": "rd mr mw me dw sd"
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_pid_smaps.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)
|
||||
226
docs/parsers/proc_pid_stat.md
Normal file
226
docs/parsers/proc_pid_stat.md
Normal file
@@ -0,0 +1,226 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_pid_stat"></a>
|
||||
|
||||
# jc.parsers.proc\_pid\_stat
|
||||
|
||||
jc - JSON Convert `/proc/<pid>/stat` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/1/stat | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/1/stat
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/1/stat | jc --proc-pid-stat
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_pid_stat_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_pid_stat', proc_pid_stat_file)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
"pid": integer,
|
||||
"comm": string,
|
||||
"state": string,
|
||||
"state_pretty": string,
|
||||
"ppid": integer,
|
||||
"pgrp": integer,
|
||||
"session": integer,
|
||||
"tty_nr": integer,
|
||||
"tpg_id": integer,
|
||||
"flags": integer,
|
||||
"minflt": integer,
|
||||
"cminflt": integer,
|
||||
"majflt": integer,
|
||||
"cmajflt": integer,
|
||||
"utime": integer,
|
||||
"stime": integer,
|
||||
"cutime": integer,
|
||||
"cstime": integer,
|
||||
"priority": integer,
|
||||
"nice": integer,
|
||||
"num_threads": integer,
|
||||
"itrealvalue": integer,
|
||||
"starttime": integer,
|
||||
"vsize": integer,
|
||||
"rss": integer,
|
||||
"rsslim": integer,
|
||||
"startcode": integer,
|
||||
"endcode": integer,
|
||||
"startstack": integer,
|
||||
"kstkeep": integer,
|
||||
"kstkeip": integer,
|
||||
"signal": integer,
|
||||
"blocked": integer,
|
||||
"sigignore": integer,
|
||||
"sigcatch": integer,
|
||||
"wchan": integer,
|
||||
"nswap": integer,
|
||||
"cnswap": integer,
|
||||
"exit_signal": integer,
|
||||
"processor": integer,
|
||||
"rt_priority": integer,
|
||||
"policy": integer,
|
||||
"delayacct_blkio_ticks": integer,
|
||||
"guest_time": integer,
|
||||
"cguest_time": integer,
|
||||
"start_data": integer,
|
||||
"end_data": integer,
|
||||
"start_brk": integer,
|
||||
"arg_start": integer,
|
||||
"arg_end": integer,
|
||||
"env_start": integer,
|
||||
"env_end": integer,
|
||||
"exit_code": integer,
|
||||
}
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/1/stat | jc --proc -p
|
||||
{
|
||||
"pid": 1,
|
||||
"comm": "systemd",
|
||||
"state": "S",
|
||||
"ppid": 0,
|
||||
"pgrp": 1,
|
||||
"session": 1,
|
||||
"tty_nr": 0,
|
||||
"tpg_id": -1,
|
||||
"flags": 4194560,
|
||||
"minflt": 23478,
|
||||
"cminflt": 350218,
|
||||
"majflt": 99,
|
||||
"cmajflt": 472,
|
||||
"utime": 107,
|
||||
"stime": 461,
|
||||
"cutime": 2672,
|
||||
"cstime": 4402,
|
||||
"priority": 20,
|
||||
"nice": 0,
|
||||
"num_threads": 1,
|
||||
"itrealvalue": 0,
|
||||
"starttime": 128,
|
||||
"vsize": 174063616,
|
||||
"rss": 3313,
|
||||
"rsslim": 18446744073709551615,
|
||||
"startcode": 94188219072512,
|
||||
"endcode": 94188219899461,
|
||||
"startstack": 140725059845296,
|
||||
"kstkeep": 0,
|
||||
"kstkeip": 0,
|
||||
"signal": 0,
|
||||
"blocked": 671173123,
|
||||
"sigignore": 4096,
|
||||
"sigcatch": 1260,
|
||||
"wchan": 1,
|
||||
"nswap": 0,
|
||||
"cnswap": 0,
|
||||
"exit_signal": 17,
|
||||
"processor": 0,
|
||||
"rt_priority": 0,
|
||||
"policy": 0,
|
||||
"delayacct_blkio_ticks": 18,
|
||||
"guest_time": 0,
|
||||
"cguest_time": 0,
|
||||
"start_data": 94188220274448,
|
||||
"end_data": 94188220555504,
|
||||
"start_brk": 94188243599360,
|
||||
"arg_start": 140725059845923,
|
||||
"arg_end": 140725059845934,
|
||||
"env_start": 140725059845934,
|
||||
"env_end": 140725059846125,
|
||||
"exit_code": 0,
|
||||
"state_pretty": "Sleeping in an interruptible wait"
|
||||
}
|
||||
|
||||
$ cat /proc/1/stat | jc --proc-pid-stat -p -r
|
||||
{
|
||||
"pid": 1,
|
||||
"comm": "systemd",
|
||||
"state": "S",
|
||||
"ppid": 0,
|
||||
"pgrp": 1,
|
||||
"session": 1,
|
||||
"tty_nr": 0,
|
||||
"tpg_id": -1,
|
||||
"flags": 4194560,
|
||||
"minflt": 23478,
|
||||
"cminflt": 350218,
|
||||
"majflt": 99,
|
||||
"cmajflt": 472,
|
||||
"utime": 107,
|
||||
"stime": 461,
|
||||
"cutime": 2672,
|
||||
"cstime": 4402,
|
||||
"priority": 20,
|
||||
"nice": 0,
|
||||
"num_threads": 1,
|
||||
"itrealvalue": 0,
|
||||
"starttime": 128,
|
||||
"vsize": 174063616,
|
||||
"rss": 3313,
|
||||
"rsslim": 18446744073709551615,
|
||||
"startcode": 94188219072512,
|
||||
"endcode": 94188219899461,
|
||||
"startstack": 140725059845296,
|
||||
"kstkeep": 0,
|
||||
"kstkeip": 0,
|
||||
"signal": 0,
|
||||
"blocked": 671173123,
|
||||
"sigignore": 4096,
|
||||
"sigcatch": 1260,
|
||||
"wchan": 1,
|
||||
"nswap": 0,
|
||||
"cnswap": 0,
|
||||
"exit_signal": 17,
|
||||
"processor": 0,
|
||||
"rt_priority": 0,
|
||||
"policy": 0,
|
||||
"delayacct_blkio_ticks": 18,
|
||||
"guest_time": 0,
|
||||
"cguest_time": 0,
|
||||
"start_data": 94188220274448,
|
||||
"end_data": 94188220555504,
|
||||
"start_brk": 94188243599360,
|
||||
"arg_start": 140725059845923,
|
||||
"arg_end": 140725059845934,
|
||||
"env_start": 140725059845934,
|
||||
"env_end": 140725059846125,
|
||||
"exit_code": 0
|
||||
}
|
||||
|
||||
<a id="jc.parsers.proc_pid_stat.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
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
78
docs/parsers/proc_pid_statm.md
Normal file
78
docs/parsers/proc_pid_statm.md
Normal file
@@ -0,0 +1,78 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_pid_statm"></a>
|
||||
|
||||
# jc.parsers.proc\_pid\_statm
|
||||
|
||||
jc - JSON Convert `/proc/<pid>/statm` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/1/statm | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/1/statm
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/1/statm | jc --proc-pid-statm
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_pid_statm_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_pid_statm', proc_pid_statm_file)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
"size": integer,
|
||||
"resident": integer,
|
||||
"shared": integer,
|
||||
"text": integer,
|
||||
"lib": integer,
|
||||
"data": integer,
|
||||
"dt": integer
|
||||
}
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/1/statm | jc --proc -p
|
||||
{
|
||||
"size": 42496,
|
||||
"resident": 3313,
|
||||
"shared": 2169,
|
||||
"text": 202,
|
||||
"lib": 0,
|
||||
"data": 5180,
|
||||
"dt": 0
|
||||
}
|
||||
|
||||
<a id="jc.parsers.proc_pid_statm.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
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
295
docs/parsers/proc_pid_status.md
Normal file
295
docs/parsers/proc_pid_status.md
Normal file
@@ -0,0 +1,295 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_pid_status"></a>
|
||||
|
||||
# jc.parsers.proc\_pid\_status
|
||||
|
||||
jc - JSON Convert `/proc/<pid>/status` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/1/status | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/1/status
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/1/status | jc --proc-pid-status
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_pid_status_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_pid_status', proc_pid_status_file)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
"Name": string,
|
||||
"Umask": string,
|
||||
"State": string,
|
||||
"State_pretty": string,
|
||||
"Tgid": integer,
|
||||
"Ngid": integer,
|
||||
"Pid": integer,
|
||||
"PPid": integer,
|
||||
"TracerPid": integer,
|
||||
"Uid": [
|
||||
integer
|
||||
],
|
||||
"Gid": [
|
||||
integer
|
||||
],
|
||||
"FDSize": integer,
|
||||
"Groups": string,
|
||||
"NStgid": integer,
|
||||
"NSpid": integer,
|
||||
"NSpgid": integer,
|
||||
"NSsid": integer,
|
||||
"VmPeak": integer,
|
||||
"VmSize": integer,
|
||||
"VmLck": integer,
|
||||
"VmPin": integer,
|
||||
"VmHWM": integer,
|
||||
"VmRSS": integer,
|
||||
"RssAnon": integer,
|
||||
"RssFile": integer,
|
||||
"RssShmem": integer,
|
||||
"VmData": integer,
|
||||
"VmStk": integer,
|
||||
"VmExe": integer,
|
||||
"VmLib": integer,
|
||||
"VmPTE": integer,
|
||||
"VmSwap": integer,
|
||||
"HugetlbPages": integer,
|
||||
"CoreDumping": integer,
|
||||
"THP_enabled": integer,
|
||||
"Threads": integer,
|
||||
"SigQ": string,
|
||||
"SigQ_current": integer,
|
||||
"SigQ_limit": integer,
|
||||
"SigPnd": string,
|
||||
"ShdPnd": string,
|
||||
"SigBlk": string,
|
||||
"SigIgn": string,
|
||||
"SigCgt": string,
|
||||
"CapInh": string,
|
||||
"CapPrm": string,
|
||||
"CapEff": string,
|
||||
"CapBnd": string,
|
||||
"CapAmb": string,
|
||||
"NoNewPrivs": integer,
|
||||
"Seccomp": integer,
|
||||
"Speculation_Store_Bypass": string,
|
||||
"Cpus_allowed": [
|
||||
string
|
||||
],
|
||||
"Cpus_allowed_list": string,
|
||||
"Mems_allowed": [
|
||||
string
|
||||
],
|
||||
"Mems_allowed_list": string,
|
||||
"voluntary_ctxt_switches": integer,
|
||||
"nonvoluntary_ctxt_switches": integer
|
||||
}
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/1/status | jc --proc -p
|
||||
{
|
||||
"Name": "systemd",
|
||||
"Umask": "0000",
|
||||
"State": "S",
|
||||
"Tgid": 1,
|
||||
"Ngid": 0,
|
||||
"Pid": 1,
|
||||
"PPid": 0,
|
||||
"TracerPid": 0,
|
||||
"Uid": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"Gid": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"FDSize": 128,
|
||||
"Groups": "",
|
||||
"NStgid": 1,
|
||||
"NSpid": 1,
|
||||
"NSpgid": 1,
|
||||
"NSsid": 1,
|
||||
"VmPeak": 235380,
|
||||
"VmSize": 169984,
|
||||
"VmLck": 0,
|
||||
"VmPin": 0,
|
||||
"VmHWM": 13252,
|
||||
"VmRSS": 13252,
|
||||
"RssAnon": 4576,
|
||||
"RssFile": 8676,
|
||||
"RssShmem": 0,
|
||||
"VmData": 19688,
|
||||
"VmStk": 1032,
|
||||
"VmExe": 808,
|
||||
"VmLib": 9772,
|
||||
"VmPTE": 96,
|
||||
"VmSwap": 0,
|
||||
"HugetlbPages": 0,
|
||||
"CoreDumping": 0,
|
||||
"THP_enabled": 1,
|
||||
"Threads": 1,
|
||||
"SigQ": "0/15245",
|
||||
"SigPnd": "0000000000000000",
|
||||
"ShdPnd": "0000000000000000",
|
||||
"SigBlk": "7be3c0fe28014a03",
|
||||
"SigIgn": "0000000000001000",
|
||||
"SigCgt": "00000001800004ec",
|
||||
"CapInh": "0000000000000000",
|
||||
"CapPrm": "000000ffffffffff",
|
||||
"CapEff": "000000ffffffffff",
|
||||
"CapBnd": "000000ffffffffff",
|
||||
"CapAmb": "0000000000000000",
|
||||
"NoNewPrivs": 0,
|
||||
"Seccomp": 0,
|
||||
"Speculation_Store_Bypass": "thread vulnerable",
|
||||
"Cpus_allowed": [
|
||||
"ffffffff",
|
||||
"ffffffff",
|
||||
"ffffffff",
|
||||
"ffffffff"
|
||||
],
|
||||
"Cpus_allowed_list": "0-127",
|
||||
"Mems_allowed": [
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000000",
|
||||
"00000001"
|
||||
],
|
||||
"Mems_allowed_list": "0",
|
||||
"voluntary_ctxt_switches": 1856,
|
||||
"nonvoluntary_ctxt_switches": 6620,
|
||||
"State_pretty": "sleeping",
|
||||
"SigQ_current": 0,
|
||||
"SigQ_limit": 15245
|
||||
}
|
||||
|
||||
$ cat /proc/1/status | jc --proc-pid-status -p -r
|
||||
{
|
||||
"Name": "systemd",
|
||||
"Umask": "0000",
|
||||
"State": "S (sleeping)",
|
||||
"Tgid": "1",
|
||||
"Ngid": "0",
|
||||
"Pid": "1",
|
||||
"PPid": "0",
|
||||
"TracerPid": "0",
|
||||
"Uid": "0\t0\t0\t0",
|
||||
"Gid": "0\t0\t0\t0",
|
||||
"FDSize": "128",
|
||||
"Groups": "",
|
||||
"NStgid": "1",
|
||||
"NSpid": "1",
|
||||
"NSpgid": "1",
|
||||
"NSsid": "1",
|
||||
"VmPeak": "235380 kB",
|
||||
"VmSize": "169984 kB",
|
||||
"VmLck": "0 kB",
|
||||
"VmPin": "0 kB",
|
||||
"VmHWM": "13252 kB",
|
||||
"VmRSS": "13252 kB",
|
||||
"RssAnon": "4576 kB",
|
||||
"RssFile": "8676 kB",
|
||||
"RssShmem": "0 kB",
|
||||
"VmData": "19688 kB",
|
||||
"VmStk": "1032 kB",
|
||||
"VmExe": "808 kB",
|
||||
"VmLib": "9772 kB",
|
||||
"VmPTE": "96 kB",
|
||||
"VmSwap": "0 kB",
|
||||
"HugetlbPages": "0 kB",
|
||||
"CoreDumping": "0",
|
||||
"THP_enabled": "1",
|
||||
"Threads": "1",
|
||||
"SigQ": "0/15245",
|
||||
"SigPnd": "0000000000000000",
|
||||
"ShdPnd": "0000000000000000",
|
||||
"SigBlk": "7be3c0fe28014a03",
|
||||
"SigIgn": "0000000000001000",
|
||||
"SigCgt": "00000001800004ec",
|
||||
"CapInh": "0000000000000000",
|
||||
"CapPrm": "000000ffffffffff",
|
||||
"CapEff": "000000ffffffffff",
|
||||
"CapBnd": "000000ffffffffff",
|
||||
"CapAmb": "0000000000000000",
|
||||
"NoNewPrivs": "0",
|
||||
"Seccomp": "0",
|
||||
"Speculation_Store_Bypass": "thread vulnerable",
|
||||
"Cpus_allowed": "ffffffff,ffffffff,ffffffff,ffffffff",
|
||||
"Cpus_allowed_list": "0-127",
|
||||
"Mems_allowed": "00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001",
|
||||
"Mems_allowed_list": "0",
|
||||
"voluntary_ctxt_switches": "1856",
|
||||
"nonvoluntary_ctxt_switches": "6620"
|
||||
}
|
||||
|
||||
<a id="jc.parsers.proc_pid_status.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
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
100
docs/parsers/proc_slabinfo.md
Normal file
100
docs/parsers/proc_slabinfo.md
Normal file
@@ -0,0 +1,100 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.proc_slabinfo"></a>
|
||||
|
||||
# jc.parsers.proc\_slabinfo
|
||||
|
||||
jc - JSON Convert `/proc/slabinfo` file parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat /proc/slabinfo | jc --proc
|
||||
|
||||
or
|
||||
|
||||
$ jc /proc/slabinfo
|
||||
|
||||
or
|
||||
|
||||
$ cat /proc/slabinfo | jc --proc-slabinfo
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc', proc_slabinfo_file)
|
||||
|
||||
or
|
||||
|
||||
import jc
|
||||
result = jc.parse('proc_slabinfo', proc_slabinfo_file)
|
||||
|
||||
Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"name": string,
|
||||
"active_objs": integer,
|
||||
"num_objs": integer,
|
||||
"obj_size": integer,
|
||||
"obj_per_slab": integer,
|
||||
"pages_per_slab": integer,
|
||||
"tunables": {
|
||||
"limit": integer,
|
||||
"batch_count": integer,
|
||||
"shared_factor": integer
|
||||
},
|
||||
"slabdata": {
|
||||
"active_slabs": integer,
|
||||
"num_slabs": integer,
|
||||
"shared_avail": integer
|
||||
}
|
||||
]
|
||||
|
||||
Examples:
|
||||
|
||||
$ cat /proc/slabinfo | jc --proc -p
|
||||
[
|
||||
{
|
||||
"name": "ext4_groupinfo_4k",
|
||||
"active_objs": 224,
|
||||
"num_objs": 224,
|
||||
"obj_size": 144,
|
||||
"obj_per_slab": 56,
|
||||
"pages_per_slab": 2,
|
||||
"tunables": {
|
||||
"limit": 0,
|
||||
"batch_count": 0,
|
||||
"shared_factor": 0
|
||||
},
|
||||
"slabdata": {
|
||||
"active_slabs": 4,
|
||||
"num_slabs": 4,
|
||||
"shared_avail": 0
|
||||
}
|
||||
},
|
||||
...
|
||||
]
|
||||
|
||||
<a id="jc.parsers.proc_slabinfo.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)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user