mirror of
https://github.com/kellyjonbrazil/jc.git
synced 2025-08-08 22:36:48 +02:00
add uname parser
This commit is contained in:
15
README.md
15
README.md
@@ -70,6 +70,7 @@ jc [parser] [options]
|
|||||||
- `--netstat` enables the `netstat` parser
|
- `--netstat` enables the `netstat` parser
|
||||||
- `--ps` enables the `ps` parser
|
- `--ps` enables the `ps` parser
|
||||||
- `--route` enables the `route` parser
|
- `--route` enables the `route` parser
|
||||||
|
- `--uname` enables the `uname -a` parser
|
||||||
|
|
||||||
### Options
|
### Options
|
||||||
- `-p` specifies whether to pretty format the JSON output
|
- `-p` specifies whether to pretty format the JSON output
|
||||||
@@ -561,6 +562,20 @@ $ route -n | jc --route -p
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
### uname -a
|
||||||
|
```
|
||||||
|
$ uname -a | jc --uname -p
|
||||||
|
{
|
||||||
|
"kernel_name": "Linux",
|
||||||
|
"node_name": "user-ubuntu",
|
||||||
|
"kernel_release": "4.15.0-65-generic",
|
||||||
|
"operating_system": "GNU/Linux",
|
||||||
|
"hardware_platform": "x86_64",
|
||||||
|
"processor": "x86_64",
|
||||||
|
"machine": "x86_64",
|
||||||
|
"kernel_version": "#74-Ubuntu SMP Tue Sep 17 17:06:04 UTC 2019"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## Contributions
|
## Contributions
|
||||||
Feel free to add/improve code or parsers!
|
Feel free to add/improve code or parsers!
|
||||||
|
@@ -6,6 +6,7 @@ jc changelog
|
|||||||
- Add free parser
|
- Add free parser
|
||||||
- Add lsblk parser
|
- Add lsblk parser
|
||||||
- Add mount parser
|
- Add mount parser
|
||||||
|
- Add uname parser
|
||||||
|
|
||||||
20191021 v0.6.4
|
20191021 v0.6.4
|
||||||
- Flatten netstat parser output
|
- Flatten netstat parser output
|
||||||
|
7
jc/jc.py
7
jc/jc.py
@@ -16,6 +16,7 @@ import jc.parsers.mount
|
|||||||
import jc.parsers.netstat
|
import jc.parsers.netstat
|
||||||
import jc.parsers.ps
|
import jc.parsers.ps
|
||||||
import jc.parsers.route
|
import jc.parsers.route
|
||||||
|
import jc.parsers.uname
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
@@ -55,6 +56,9 @@ def main():
|
|||||||
elif '--route' in sys.argv:
|
elif '--route' in sys.argv:
|
||||||
result = jc.parsers.route.parse(data)
|
result = jc.parsers.route.parse(data)
|
||||||
|
|
||||||
|
elif '--uname' in sys.argv:
|
||||||
|
result = jc.parsers.uname.parse(data)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
print('jc: missing arguments\n', file=sys.stderr)
|
print('jc: missing arguments\n', file=sys.stderr)
|
||||||
print('Usage: jc [parser] [options]\n', file=sys.stderr)
|
print('Usage: jc [parser] [options]\n', file=sys.stderr)
|
||||||
@@ -68,7 +72,8 @@ def main():
|
|||||||
print(' --mount mount parser', file=sys.stderr)
|
print(' --mount mount parser', file=sys.stderr)
|
||||||
print(' --netstat netstat parser', file=sys.stderr)
|
print(' --netstat netstat parser', file=sys.stderr)
|
||||||
print(' --ps ps parser', file=sys.stderr)
|
print(' --ps ps parser', file=sys.stderr)
|
||||||
print(' --route route parser\n', file=sys.stderr)
|
print(' --route route parser', file=sys.stderr)
|
||||||
|
print(' --uname uname parser\n', file=sys.stderr)
|
||||||
print('Options:', file=sys.stderr)
|
print('Options:', file=sys.stderr)
|
||||||
print(' -p pretty print output\n', file=sys.stderr)
|
print(' -p pretty print output\n', file=sys.stderr)
|
||||||
print('Example:', file=sys.stderr)
|
print('Example:', file=sys.stderr)
|
||||||
|
42
jc/parsers/uname.py
Normal file
42
jc/parsers/uname.py
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
"""jc - JSON CLI output utility uname Parser
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
specify --uname as the first argument if the piped input is coming from uname
|
||||||
|
|
||||||
|
Limitations:
|
||||||
|
must use 'uname -a'
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
$ uname -a | jc --uname -p
|
||||||
|
{
|
||||||
|
"kernel_name": "Linux",
|
||||||
|
"node_name": "user-ubuntu",
|
||||||
|
"kernel_release": "4.15.0-65-generic",
|
||||||
|
"operating_system": "GNU/Linux",
|
||||||
|
"hardware_platform": "x86_64",
|
||||||
|
"processor": "x86_64",
|
||||||
|
"machine": "x86_64",
|
||||||
|
"kernel_version": "#74-Ubuntu SMP Tue Sep 17 17:06:04 UTC 2019"
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def parse(data):
|
||||||
|
output = {}
|
||||||
|
parsed_line = data.split(maxsplit=3)
|
||||||
|
|
||||||
|
output['kernel_name'] = parsed_line.pop(0)
|
||||||
|
output['node_name'] = parsed_line.pop(0)
|
||||||
|
output['kernel_release'] = parsed_line.pop(0)
|
||||||
|
|
||||||
|
parsed_line = parsed_line[-1].rsplit(maxsplit=4)
|
||||||
|
|
||||||
|
output['operating_system'] = parsed_line.pop(-1)
|
||||||
|
output['hardware_platform'] = parsed_line.pop(-1)
|
||||||
|
output['processor'] = parsed_line.pop(-1)
|
||||||
|
output['machine'] = parsed_line.pop(-1)
|
||||||
|
|
||||||
|
output['kernel_version'] = parsed_line.pop(0)
|
||||||
|
|
||||||
|
return output
|
Reference in New Issue
Block a user