diff options
-rw-r--r-- | python/vyos/util.py | 23 | ||||
-rwxr-xr-x | src/helpers/read-saved-value.py | 28 |
2 files changed, 51 insertions, 0 deletions
diff --git a/python/vyos/util.py b/python/vyos/util.py index 1b16df76b..509b4ea00 100644 --- a/python/vyos/util.py +++ b/python/vyos/util.py @@ -968,3 +968,26 @@ def get_vrf_members(vrf: str) -> list: if 'ifname' in data: interfaces.append(data.get('ifname')) return interfaces + +def read_saved_value(path: list): + from vyos.defaults import directories + config_file = os.path.join(directories['config'], 'config.boot') + + if not isinstance(path, list) or not path: + return '' + from vyos.configtree import ConfigTree + try: + with open(config_file) as f: + config_string = f.read() + ct = ConfigTree(config_string) + except Exception: + return '' + if not ct.exists(path): + return '' + res = ct.return_values(path) + if len(res) == 1: + return res[0] + res = ct.list_nodes(path) + if len(res) == 1: + return ' '.join(res) + return res diff --git a/src/helpers/read-saved-value.py b/src/helpers/read-saved-value.py new file mode 100755 index 000000000..44d28832e --- /dev/null +++ b/src/helpers/read-saved-value.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2023 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 +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +from argparse import ArgumentParser +from vyos.util import read_saved_value + +if __name__ == '__main__': + parser = ArgumentParser() + parser.add_argument('--path', nargs='*') + args = parser.parse_args() + + out = read_saved_value(args.path) if args.path else '' + if isinstance(out, list): + out = ' '.join(out) + print(out) |