diff options
| -rw-r--r-- | debian/vyos-1x.install | 1 | ||||
| -rwxr-xr-x | src/utils/vyos-show-config | 57 | 
2 files changed, 58 insertions, 0 deletions
diff --git a/debian/vyos-1x.install b/debian/vyos-1x.install index 7171911dc..fff6ebeab 100644 --- a/debian/vyos-1x.install +++ b/debian/vyos-1x.install @@ -25,6 +25,7 @@ srv/localui  usr/sbin  usr/bin/config-mgmt  usr/bin/initial-setup +usr/bin/vyos-show-config  usr/bin/vyos-config-file-query  usr/bin/vyos-config-to-commands  usr/bin/vyos-config-to-json diff --git a/src/utils/vyos-show-config b/src/utils/vyos-show-config new file mode 100755 index 000000000..152322fc1 --- /dev/null +++ b/src/utils/vyos-show-config @@ -0,0 +1,57 @@ +#!/usr/bin/env python3 +# Copyright (C) 2024 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/>. +# + +import os +import sys +import argparse + +from signal import signal, SIGPIPE, SIG_DFL + +def get_config(path): +    from vyos.utils.process import rc_cmd +    res, out  = rc_cmd(f"cli-shell-api showCfg {path}") +    if res > 0: +        print("Error: failed to retrieve the config", file=sys.stderr) +        sys.exit(1) +    else: +        return out + +def strip_config(config): +    from vyos.utils.strip_config import strip_config_source +    return strip_config_source(config) + +if __name__ == '__main__': +    signal(SIGPIPE,SIG_DFL) + +    parser = argparse.ArgumentParser() +    parser.add_argument("--strip-private", +      help="Strip private information from the config", +      action="store_true") + +    args, path_args = parser.parse_known_args() + +    config = get_config(" ".join(path_args)) + +    if args.strip_private: +        edit_level = os.getenv("VYATTA_EDIT_LEVEL") +        if (edit_level != "/") or (len(path_args) > 0): +            print("Error: show --strip-private only works at the top level", +              file=sys.stderr) +            sys.exit(1) +        else: +            print(strip_config(config)) +    else: +        print(config)  | 
