#!/usr/bin/env python3 # converts 'set system syslog host <address>:<port>' # to 'set system syslog host <address> port <port>' import sys import re from vyos.configtree import ConfigTree if len(sys.argv) < 2: print("Must specify file name!") sys.exit(1) file_name = sys.argv[1] with open(file_name, 'r') as f: config_file = f.read() config = ConfigTree(config_file) cbase = ['system', 'syslog', 'host'] if not config.exists(cbase): sys.exit(0) for host in config.list_nodes(cbase): if re.search(':[0-9]{1,5}$',host): h = re.search('^[a-zA-Z\-0-9\.]+', host).group(0) p = re.sub(':', '', re.search(':[0-9]+$', host).group(0)) config.set(cbase + [h]) config.set(cbase + [h, 'port'], value=p) for fac in config.list_nodes(cbase + [host, 'facility']): config.set(cbase + [h, 'facility', fac]) config.set_tag(cbase + [h, 'facility']) if config.exists(cbase + [host, 'facility', fac, 'protocol']): proto = config.return_value(cbase + [host, 'facility', fac, 'protocol']) config.set(cbase + [h, 'facility', fac, 'protocol'], value=proto) if config.exists(cbase + [host, 'facility', fac, 'level']): lvl = config.return_value(cbase + [host, 'facility', fac, 'level']) config.set(cbase + [h, 'facility', fac, 'level'], value=lvl) config.delete(cbase + [host]) try: open(file_name,'w').write(config.to_string()) except OSError as e: print("Failed to save the modified config: {}".format(e)) sys.exit(1)