diff options
| -rwxr-xr-x | src/op_mode/cpu_summary.py | 36 | ||||
| -rwxr-xr-x | src/op_mode/show_cpu.py | 63 | ||||
| -rwxr-xr-x | src/op_mode/show_ram.py | 19 | ||||
| -rwxr-xr-x | src/op_mode/show_uptime.py | 27 | ||||
| -rwxr-xr-x | src/op_mode/show_version.py | 22 | 
5 files changed, 109 insertions, 58 deletions
| diff --git a/src/op_mode/cpu_summary.py b/src/op_mode/cpu_summary.py index cfd321522..3bdf5a718 100755 --- a/src/op_mode/cpu_summary.py +++ b/src/op_mode/cpu_summary.py @@ -1,6 +1,6 @@  #!/usr/bin/env python3  # -# Copyright (C) 2018 VyOS maintainers and contributors +# Copyright (C) 2018-2022 VyOS maintainers and contributors  #  # This program is free software; you can redistribute it and/or modify  # it under the terms of the GNU General Public License version 2 or later as @@ -19,18 +19,30 @@ from vyos.util import colon_separated_to_dict  FILE_NAME = '/proc/cpuinfo' -with open(FILE_NAME, 'r') as f: -    data_raw = f.read() +def get_raw_data(): +    with open(FILE_NAME, 'r') as f: +        data_raw = f.read() -data = colon_separated_to_dict(data_raw) +    data = colon_separated_to_dict(data_raw) -# Accumulate all data in a dict for future support for machine-readable output -cpu_data = {} -cpu_data['cpu_number'] = len(data['processor']) -cpu_data['models'] = list(set(data['model name'])) +    # Accumulate all data in a dict for future support for machine-readable output +    cpu_data = {} +    cpu_data['cpu_number'] = len(data['processor']) +    cpu_data['models'] = list(set(data['model name'])) -# Strip extra whitespace from CPU model names, /proc/cpuinfo is prone to that -cpu_data['models'] = map(lambda s: re.sub(r'\s+', ' ', s), cpu_data['models']) +    # Strip extra whitespace from CPU model names, /proc/cpuinfo is prone to that +    cpu_data['models'] = list(map(lambda s: re.sub(r'\s+', ' ', s), cpu_data['models'])) + +    return cpu_data + +def get_formatted_output(): +    cpu_data = get_raw_data() + +    out = "CPU(s): {0}\n".format(cpu_data['cpu_number']) +    out += "CPU model(s): {0}".format(",".join(cpu_data['models'])) + +    return out + +if __name__ == '__main__': +    print(get_formatted_output()) -print("CPU(s): {0}".format(cpu_data['cpu_number'])) -print("CPU model(s): {0}".format(",".join(cpu_data['models']))) diff --git a/src/op_mode/show_cpu.py b/src/op_mode/show_cpu.py index 0040e950d..9973d9789 100755 --- a/src/op_mode/show_cpu.py +++ b/src/op_mode/show_cpu.py @@ -21,7 +21,7 @@ from sys import exit  from vyos.util import popen, DEVNULL  OUT_TMPL_SRC = """ -{% if cpu %} +{%- if cpu -%}  {% if 'vendor' in cpu %}CPU Vendor:       {{cpu.vendor}}{% endif %}  {% if 'model' in cpu %}Model:            {{cpu.model}}{% endif %}  {% if 'cpus' in cpu %}Total CPUs:       {{cpu.cpus}}{% endif %} @@ -31,31 +31,42 @@ OUT_TMPL_SRC = """  {% if 'mhz' in cpu %}Current MHz:      {{cpu.mhz}}{% endif %}  {% if 'mhz_min' in cpu %}Minimum MHz:      {{cpu.mhz_min}}{% endif %}  {% if 'mhz_max' in cpu %}Maximum MHz:      {{cpu.mhz_max}}{% endif %} -{% endif %} +{%- endif -%}  """ -cpu = {} -cpu_json, code = popen('lscpu -J', stderr=DEVNULL) - -if code == 0: -    cpu_info = json.loads(cpu_json) -    if len(cpu_info) > 0 and 'lscpu' in cpu_info: -        for prop in cpu_info['lscpu']: -            if (prop['field'].find('Thread(s)') > -1): cpu['threads'] = prop['data'] -            if (prop['field'].find('Core(s)')) > -1: cpu['cores'] = prop['data'] -            if (prop['field'].find('Socket(s)')) > -1: cpu['sockets'] = prop['data'] -            if (prop['field'].find('CPU(s):')) > -1: cpu['cpus'] = prop['data'] -            if (prop['field'].find('CPU MHz')) > -1: cpu['mhz'] = prop['data'] -            if (prop['field'].find('CPU min MHz')) > -1: cpu['mhz_min'] = prop['data'] -            if (prop['field'].find('CPU max MHz')) > -1: cpu['mhz_max'] = prop['data'] -            if (prop['field'].find('Vendor ID')) > -1: cpu['vendor'] = prop['data'] -            if (prop['field'].find('Model name')) > -1: cpu['model'] = prop['data'] - -if len(cpu) > 0: -    tmp = { 'cpu':cpu } +def get_raw_data(): +    cpu = {} +    cpu_json, code = popen('lscpu -J', stderr=DEVNULL) + +    if code == 0: +        cpu_info = json.loads(cpu_json) +        if len(cpu_info) > 0 and 'lscpu' in cpu_info: +            for prop in cpu_info['lscpu']: +                if (prop['field'].find('Thread(s)') > -1): cpu['threads'] = prop['data'] +                if (prop['field'].find('Core(s)')) > -1: cpu['cores'] = prop['data'] +                if (prop['field'].find('Socket(s)')) > -1: cpu['sockets'] = prop['data'] +                if (prop['field'].find('CPU(s):')) > -1: cpu['cpus'] = prop['data'] +                if (prop['field'].find('CPU MHz')) > -1: cpu['mhz'] = prop['data'] +                if (prop['field'].find('CPU min MHz')) > -1: cpu['mhz_min'] = prop['data'] +                if (prop['field'].find('CPU max MHz')) > -1: cpu['mhz_max'] = prop['data'] +                if (prop['field'].find('Vendor ID')) > -1: cpu['vendor'] = prop['data'] +                if (prop['field'].find('Model name')) > -1: cpu['model'] = prop['data'] + +    return cpu + +def get_formatted_output(): +    cpu = get_raw_data() + +    tmp = {'cpu':cpu}      tmpl = Template(OUT_TMPL_SRC) -    print(tmpl.render(tmp)) -    exit(0) -else: -    print('CPU information could not be determined\n') -    exit(1) +    return tmpl.render(tmp) + +if __name__ == '__main__': +    cpu = get_raw_data() + +    if len(cpu) > 0: +        print(get_formatted_output()) +    else: +        print('CPU information could not be determined\n') +        exit(1) + diff --git a/src/op_mode/show_ram.py b/src/op_mode/show_ram.py index 5818ec132..2b0be3965 100755 --- a/src/op_mode/show_ram.py +++ b/src/op_mode/show_ram.py @@ -1,6 +1,6 @@  #!/usr/bin/env python3  # -# Copyright (C) 2021 VyOS maintainers and contributors +# Copyright (C) 2022 VyOS maintainers and contributors  #  # This program is free software; you can redistribute it and/or modify  # it under the terms of the GNU General Public License version 2 or later as @@ -55,10 +55,17 @@ def get_system_memory_human():      return mem -if __name__ == '__main__': -    mem = get_system_memory_human() +def get_raw_data(): +    return get_system_memory_human() + +def get_formatted_output(): +    mem = get_raw_data() -    print("Total: {}".format(mem["total"])) -    print("Free:  {}".format(mem["free"])) -    print("Used:  {}".format(mem["used"])) +    out = "Total: {}\n".format(mem["total"]) +    out += "Free:  {}\n".format(mem["free"]) +    out += "Used:  {}".format(mem["used"]) +    return out + +if __name__ == '__main__': +    print(get_formatted_output()) diff --git a/src/op_mode/show_uptime.py b/src/op_mode/show_uptime.py index c3dea52e6..1b5e33fa9 100755 --- a/src/op_mode/show_uptime.py +++ b/src/op_mode/show_uptime.py @@ -37,14 +37,27 @@ def get_load_averages():      return res -if __name__ == '__main__': +def get_raw_data():      from vyos.util import seconds_to_human -    print("Uptime: {}\n".format(seconds_to_human(get_uptime_seconds()))) +    res = {} +    res["uptime_seconds"] = get_uptime_seconds() +    res["uptime"] = seconds_to_human(get_uptime_seconds()) +    res["load_average"] = get_load_averages() + +    return res -    avgs = get_load_averages() +def get_formatted_output(): +    data = get_raw_data() -    print("Load averages:") -    print("1  minute:   {:.02f}%".format(avgs[1]*100)) -    print("5  minutes:  {:.02f}%".format(avgs[5]*100)) -    print("15 minutes:  {:.02f}%".format(avgs[15]*100)) +    out = "Uptime: {}\n\n".format(data["uptime"]) +    avgs = data["load_average"] +    out += "Load averages:\n" +    out += "1  minute:   {:.02f}%\n".format(avgs[1]*100) +    out += "5  minutes:  {:.02f}%\n".format(avgs[5]*100) +    out += "15 minutes:  {:.02f}%\n".format(avgs[15]*100) + +    return out + +if __name__ == '__main__': +    print(get_formatted_output()) diff --git a/src/op_mode/show_version.py b/src/op_mode/show_version.py index 7962e1e7b..b82ab6eca 100755 --- a/src/op_mode/show_version.py +++ b/src/op_mode/show_version.py @@ -26,10 +26,6 @@ from jinja2 import Template  from sys import exit  from vyos.util import call -parser = argparse.ArgumentParser() -parser.add_argument("-f", "--funny", action="store_true", help="Add something funny to the output") -parser.add_argument("-j", "--json", action="store_true", help="Produce JSON output") -  version_output_tmpl = """  Version:          VyOS {{version}}  Release train:    {{release_train}} @@ -51,7 +47,20 @@ Hardware UUID:    {{hardware_uuid}}  Copyright:        VyOS maintainers and contributors  """ +def get_raw_data(): +    version_data = vyos.version.get_full_version_data() +    return version_data + +def get_formatted_output(): +    version_data = get_raw_data() +    tmpl = Template(version_output_tmpl) +    return tmpl.render(version_data) +  if __name__ == '__main__': +    parser = argparse.ArgumentParser() +    parser.add_argument("-f", "--funny", action="store_true", help="Add something funny to the output") +    parser.add_argument("-j", "--json", action="store_true", help="Produce JSON output") +      args = parser.parse_args()      version_data = vyos.version.get_full_version_data() @@ -60,9 +69,8 @@ if __name__ == '__main__':          import json          print(json.dumps(version_data))          exit(0) - -    tmpl = Template(version_output_tmpl) -    print(tmpl.render(version_data)) +    else: +        print(get_formatted_output())      if args.funny:          print(vyos.limericks.get_random()) | 
