Enviado em 26/09/2013 - 13:41h
Olá amigos, estou com uma lógica para desenvolver no meu shellscript, e antes de partir para loops mirabolantes e soluções mais pesadas para reinventar a roda, queria saber se grep, sed, awk, a combinação destes, etc possuem a capacidade de fazer o que desejo em uma única linha.
Estou em um projeto no qual tenho feito scripts para automatizar configurações em DSLAMs e roteadores da fabricante Alcatel.
Para isto minha ideia é baixar um "running conf" (no caso da ALU, um admin display-conf) do roteador e trato as informações de que preciso fora da caixa, para depois gerar comandos a serem efetuados nela.
Vamos ao que interessa.
supondo a seguinte configuração
(conteúdo variado para cima)
vpls 21499 customer 1 create
fdb-table-size 100000
send-flush-on-failure
remote-age 300
stp
shutdown
exit
sap 1/1/5:110 create
ingress
scheduler-policy "outside"
qos 101
exit
egress
scheduler-policy "outside"
qos 101
exit
exit
sap 2/1/5:110 create
ingress
scheduler-policy "outside"
qos 101
exit
egress
scheduler-policy "outside"
qos 101
exit
exit
mesh-sdp 10026:21499 create
force-vlan-vc-forwarding
no shutdown
exit
mac-move
no shutdown
exit
no shutdown
exit
(conteúdo variado para baixo)
O que eu quero é utilizando uma pattern com a única variável que terei (2/1/5 na linha "sap 2/1/5:110 create" por exemplo) pegar todo o conteúdo entre "vpls 21499 customer 1 create" e o ultimo "exit" do exemplo
Sei da existencia de after context e before context, porém não haverá numero de linhas certos para cima e para baixo na qual preciso pegar, nem mesmo o conteúdo entre o inicio (vpls) e o fim (ultimo exit) serão identicos.
Se não tiver nada assim terei que fazer um loop por cada vpls para saber se há a porta. Mais em fim, se alguém souber, vai simplificar a minha vida e reduzir o tempo de processamento de meu script.
Estou em um projeto no qual tenho feito scripts para automatizar configurações em DSLAMs e roteadores da fabricante Alcatel.
Para isto minha ideia é baixar um "running conf" (no caso da ALU, um admin display-conf) do roteador e trato as informações de que preciso fora da caixa, para depois gerar comandos a serem efetuados nela.
Vamos ao que interessa.
supondo a seguinte configuração
(conteúdo variado para cima)
vpls 21499 customer 1 create
fdb-table-size 100000
send-flush-on-failure
remote-age 300
stp
shutdown
exit
sap 1/1/5:110 create
ingress
scheduler-policy "outside"
qos 101
exit
egress
scheduler-policy "outside"
qos 101
exit
exit
sap 2/1/5:110 create
ingress
scheduler-policy "outside"
qos 101
exit
egress
scheduler-policy "outside"
qos 101
exit
exit
mesh-sdp 10026:21499 create
force-vlan-vc-forwarding
no shutdown
exit
mac-move
no shutdown
exit
no shutdown
exit
(conteúdo variado para baixo)
O que eu quero é utilizando uma pattern com a única variável que terei (2/1/5 na linha "sap 2/1/5:110 create" por exemplo) pegar todo o conteúdo entre "vpls 21499 customer 1 create" e o ultimo "exit" do exemplo
Sei da existencia de after context e before context, porém não haverá numero de linhas certos para cima e para baixo na qual preciso pegar, nem mesmo o conteúdo entre o inicio (vpls) e o fim (ultimo exit) serão identicos.
Se não tiver nada assim terei que fazer um loop por cada vpls para saber se há a porta. Mais em fim, se alguém souber, vai simplificar a minha vida e reduzir o tempo de processamento de meu script.