Python namorando com meu Huawei

Depois de uma chateação com um bug do BGPq4, onde o mesmo era para retornar a lista de AS no qual fazia parte do meu AS-SET e exportasse para Huawei no formato XPL utilizando a flag -u, o mesmo começou a bugar, fazendo com que eu perdesse a paciência — algo que, na nossa área, é ouro. Só conseguia exportar no modelo JSON e, depois disso, ainda precisava montar um script para modelar o resultado JSON no formato que eu realmente iria utilizar.
Como toda solução nasce de um problema…
Achei por bem começar a colocar a mão na massa. Pela facilidade, escolhi o Python.
Minha primeira dificuldade foi transliterar o comando whois que eu já usava nas minhas consultas de IRR, para que ele fosse modelado e me entregasse apenas os AS que eram membros do AS-SET.

Em Python ficando:

Resultado:

Explicação:
Função get_as_set_members(as_set):
- A função recebe como argumento um AS-SET.
- Usa o comando whois com o servidor bgp.net.br para buscar informações sobre o AS-SET.
- O comando subprocess.run() executa o comando no terminal e captura a saída.
- A expressão regular r”members:\s*(AS\d+)” é utilizada para extrair os números dos ASNs dos membros do AS-SET.
- A função retorna os ASNs encontrados, eliminando duplicatas e ordenando-os.
- No bloco if name == “__main__”, a função é chamada com um exemplo de AS-SET, e o resultado é impresso.
Essa pequena parte facilita a automação da consulta e coleta dos membros de um AS-SET
Depois disso, tive que me deparar com outra problemática: transformar esses dados coletados em uma configuração no padrão da linguagem CLI XPL, que utilizo no Huawei. Essa foi a minha primeira alteração no código mostrado acima — modelar os dados de forma a se enquadrarem em uma xpl as-path-list:

Resultado:

Explicação:
- A função recebe uma lista no qual a coloca como nome: PERMIT_TESTE_PYTHON3
- Coloca uma linha com meu comando em xpl e utiliza o nome da lista da função, pulando de linha em linha na lista, onde no qual é separada os mebros da lista por vírgula, e na ultima linha de membro, remove a vírgula, para se encquadrar na sintaxe do Huawei.
- Ao final somente mostro (print) toda a construção realizada.
Minha maior dificuldade foi de buscar, tratar e modelar a informação para Huawei no formato de XPL, pois o próximo passo eu já estava mais familiarizado que é o uso do queridinho Netmiko.

Creio que esse passo não precisa de explicações mais aprofundadas, já que é algo que a grande maioria dos analistas de redes já conhece. Abaixo, deixo apenas um trecho da execução real do script, escondendo minhas credenciais.

Pronto somente rodar todo o script, e VOILÀ.
Exemplo prático para tal script é: Bloquear seus clientes de transito no PTT através da Community 65000, Bloquear todo mundo e conversando apenas com quem permitir através da 65001, ip-prefix-list, as-path-list, tudo automatizado de acordo com o seu IRR, vai da sua imaginação. Dica importante para quem vende transito, obrigue seus clientes a criarem e atualizarem seus IRR, dessa forma a automação fica coisa fina.
Por: Bruno Cavalcante
