2011-03-25 2 views
1

Je voudrais disposer de scripts pour exporter des données de configuration de type Juno vers des données de type "CSV" (séparé par des onglets) et retour. L'échantillon (et AFAIK suffisante) d'entrée peuvent être les suivantes:Scripts pour "exporter" des données de configuration de type Junos (arbre) vers des données CSV (table) et retour

firewall { 
    filter protect { 
     term "protocol bgp" { 
      from { 
       prefix-list { 
        bgp-peers; 
       } 
       protocol tcp; ## Any ideas how to preserve comments in output? 
       port bgp; 
      } 
      then accept; 
     } 
     term protocol_ntp { 
      from { 
       prefix-list { 
        "protocol ntp"; 
       } 
       protocol udp; 
       port ntp; 
      } 
      then accept; 
     } 
    } 
} 

La sortie attendue serait la suivante (barres « | » désignent les endroits où les onglets sont attendus):

firewall|filter protect|term "protocol bgp"|from|prefix-list|bgp-peers; 
firewall|filter protect|term "protocol bgp"|from|protocol tcp; 
firewall|filter protect|term "protocol bgp"|from|port bgp; 
firewall|filter protect|term "protocol bgp"|then accept; 
firewall|filter protect|term protocol_ntp|from|prefix-list|"protocol ntp"; 
firewall|filter protect|term protocol_ntp|from|protocol udp; 
firewall|filter protect|term protocol_ntp|from|port ntp; 
firewall|filter protect|term protocol_ntp|then accept; 

A premier coup d'oeil, le problème semble assez facile mais au second c'est pas à cause des doubles guillemets. Le problème est IMHO réductible à "tree-to-table" et "table-à-arbre" problème avec quelques manipulations de guillemets supplémentaires. Honnêtement, je ne sais pas pour faire cela correctement ...

Je préférerais des solutions dans l'ordre suivant par popularité (pour moi): en sed(1) (pourrait être très rapide), en awk(1) (pas aussi agréable que l'ancien à moi), dans perl(1) (pourquoi pas, si vous utilisez seulement Perl simple avec seulement strict et warnings modules) ou ANSI C sans bibliothèques supplémentaires, juste la base (je ne pense pas que quiconque voudrait écrire des parseurs pour moi ici à tout, mais on ne sait jamais).

Répondre

0

C'est beaucoup plus facile de convertir XML, qui Junos a un support intégré pour:

show configuration | display xml 

Ou mieux encore, essayez

show configuration | display set 
Questions connexes