Hola, después de tanto tiempo….
Por cierta cuestión en el trabajo por fin me di el tiempo de crear una herramienta para traducir formatos de configuración Juniper (JUNOS).
Para probar los resultados de esto, pongo el siguiente ejemplo de configuración que se quiere traducir de formato jerárquico a formato ‘set command’ de Junos.
protocols { bgp { path-selection always-compare-med; advertise-inactive; log-updown; group USER-A { type external; local-address x.x.x.x; export policy-A; peer-as XXX; neighbor y.y.y.y { description USER-A; } } group USER-A-v6 { type internal; local-address x:x:x::x; export policy-B; peer-as XXX; neighbor Y:Y:Y::Y { description USER-A-v6; } } } }
El script:
#!/usr/local/bin/python #Code by @aldogoliath --- 26-Feb-2016 import string target ='junos_config.txt' def main(): buff = [] for line in open(target,'r'): if '{\n' in line[-2:]: buff.append(line[:-2].strip()) if ';' in line: if len(buff) == 0: print 'set ' + line[:line.index(';')].strip() else: print 'set ' + string.join(buff) + ' ' + line[:line.index(';')].strip() if '}\n' in line: buff = buff[:-1] if __name__ == '__main__': main()
Ejecutando el código nos queda lo siguiente:
python blog_set-command.py set protocols bgp path-selection always-compare-med set protocols bgp advertise-inactive set protocols bgp log-updown set protocols bgp group USER-A type external set protocols bgp group USER-A local-address x.x.x.x set protocols bgp group USER-A export policy-A set protocols bgp group USER-A peer-as XXX set protocols bgp group USER-A neighbor y.y.y.y description USER-A set protocols bgp group USER-A-v6 type internal set protocols bgp group USER-A-v6 local-address x:x:x::x set protocols bgp group USER-A-v6 export policy-B set protocols bgp group USER-A-v6 peer-as XXX set protocols bgp group USER-A-v6 neighbor Y:Y:Y::Y description USER-A-v6
Nota: Cuando se tiene acceso directo al equipo el script es innecesario debido a que se pueden obtener los mismos resultados ejecutando ‘show configuration | display set’
Ojalá le sea útil a alguien.
Saludos y nos vemos pronto para contar los últimos acontecimientos después de 6 meses.
goliath