Mod 21 - Programability
Mod 21 - Programability
Automação de Redes
Introdução
3. Casos
Antecedentes: Dificuldades em O&M de Rede
Convencional
• O&M de rede convencional requer que os engenheiros de rede façam login manualmente em dispositivos de rede, consultem e
executem comandos de configuração e filtrem a saída do comando. Este modo de trabalho altamente dependente do ser humano é
demorado, ineficiente e difícil de auditar.
Dispositivo de rede
Automação de redes
• Automação de rede: As ferramentas são usadas para implementar implantação de rede automatizada, operações e O&M,
reduzindo gradualmente a dependência de humanos. Isso resolve os problemas convencionais de O&M da rede.
• Muitas ferramentas de código aberto, como Ansible, SaltStack, Puppet e Chef, estão disponíveis para automação de rede no setor.
Do ponto de vista da construção da capacidade de engenharia de rede, recomenda-se que os engenheiros adquiram a capacidade
de programação de código.
Palavras-chave de
Chef automação de rede Saltstack
Ferramenta
NMS
Ansible Python Scripts
automatizados
Shell
Automação de rede baseada em
programação
• Nos últimos anos, com o surgimento de tecnologias de automação de rede, os recursos de programação baseados
em Python tornaram-se um novo requisito de habilidade para engenheiros de rede.
• O script de automação escrito em Python pode executar operações repetidas, demoradas e baseadas em regras.
Exemplo: Implementação da configuração do dispositivo automatizado
Arquivo Python usando Python
Arquivo de configuração • O que a automação de rede pode fazer? O exemplo mais intuitivo de
automação de rede é a configuração automatizada de dispositivos.
Sysname SW1 SSH/Telnet
Esse processo pode ser dividido em duas etapas: escrever um arquivo
VLAN 10
description A de configuração e escrever código Python para enviar o arquivo de
Vlan20 configuração para um dispositivo.
description B Dispositivo • Escreva o script de configuração no modo CLI (interface de linha de
VLAN 30 de rede comando) e, em seguida, carregue o script para o dispositivo usando
description C
Telnet/SSH. Esse método é fácil de entender para engenheiros de
rede que estão começando a aprender programação e automação de
rede. Esta apresentação descreve como implementar a automação de
rede.
Conteúdo
3. Casos
Linguagens de Programação
• Uma linguagem de programação é usada para escrever um programa de computador e controlar o comportamento de um
computador.
• De acordo com se a compilação é necessária antes da execução de uma linguagem, a linguagem de programação pode ser
classificada na linguagem compilada e na linguagem interpretada que não precisa ser compilada.
Compilador
Interpretador: Interpreta
o código-fonte linha por
linha.
Arquivo executável
Aplicação
temp = v [k]; TEMP = V[K]
Algoritmo Linguagem de v[k] = v[k+1]; V[K] = V[K+1]
programação de v[k+1] = temp; V[K+1] = TEMP
Ordem crescente de complexidade
Software
Linguagem de alto nível alto nível C/C++ Fortran
Ordem crescente da abstração
Compilador Compilado
r
Linguagem Assembly
lw $t0, 0($ 2)
lw $t1, 4($ 2)
Código da Máquina Linguagem sw $t1, 0($ 2)
Assembly sw $t0, 4($ 2)
Arquitetura do Conjunto de Instruções
Montador
Micro-arquitetura
Hardware
0000 1001 1100 0110 1010 1111 0101 1000
1010 1111 0101 1000 0000 1001 1100 0110
Portões/Registros Código da 1100 0110 1010 1111 0101 1000 0000 1001
Máquina 0101 1000 0000 1001 1100 0110 1010 1111
Transistores
Conjunto de
Física Instrução 1 Data 1
instruções
Linguagem de Programação de Alto Nível -
Linguagem Compilada
• Linguagem Compilada: Antes de um programa em uma linguagem compilada ser executado, um processo de compilação é realizado
para compilar o programa em um arquivo de linguagem de máquina. O resultado da compilação pode ser usado diretamente sem
re-tradução durante a execução. Linguagens compiladas típicas incluem C/C++ e Go.
• Do código-fonte para o programa: O código-fonte precisa ser traduzido em instruções de máquina pelo compilador e montador e,
em seguida, o vinculador usa a função de biblioteca de links para gerar o programa de linguagem de máquina. A linguagem de
máquina deve corresponder ao conjunto de instruções da CPU, que é carregado na memória pelo carregador durante a execução e
executado pela CPU.
Biblioteca de destino:
função de biblioteca
(linguagem de máquina)
Linguagem de Programação de Alto Nível -
Linguagem Interpretada
• Linguagem interpretada: programas de linguagem interpretados não precisam ser compilados antes da execução. Eles são
traduzidos linha por linha durante a execução. Normalmente, Java e Python são linguagens interpretadas.
• Processo do código-fonte para programas: O código-fonte de uma linguagem interpretada é gerado pelo compilador e depois
interpretado e executado por uma máquina virtual (VM) (por exemplo, JVM/PVM). A VM protege as diferenças entre os conjuntos
de instruções da CPU. Portanto, a portabilidade da linguagem interpretada é relativamente boa.
Programa de linguagem
Programa Python
Java
Compilado
Compilador
r
JVM PVM
O que é Python?
• Python é uma linguagem de programação de alto nível totalmente aberta. Seu autor é Guido Van Rossum.
Com suporte para bibliotecas de terceiros abundantes e vantagens da linguagem Python, o Python pode ser usado em
muitos campos, como IA, ciência de dados, aplicativos e scripts para O&M automatizado.
Processo de Execução de Código Python
Processo de compilação e
execução de um programa Operação
Python
C:\Users\Richard>python
Python 3.7.4 (default, Aug 9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc.
on win32
Type "help", "copyright", "credits" or "license" for more information.
1. Entrada -- >>> print ("Olá mundo")
2. Saída -- Olá mundo
3. Entrada -- >>> a = 1
4. Entrada -- >>> b = 2
5. Entrada -- >>> print ( a + b )
6. Saída -- 3
>>>
Introdução ao código Python - Execução
baseada em script
• O código no modo script pode ser executado em vários compiladores Python ou em ambientes de desenvolvimento
integrados. Por exemplo, IDLE, Atom, Visual Studio, Pycharm e Anaconda fornecidos pelo Python podem ser usados.
demo.py
Parênteses Espaço
• Os parênteses podem ser usados para a continuação de • Espaços não são recomendados entre parênteses.
declarações longas. Evite parênteses desnecessários.
• Você pode determinar se deseja adicionar espaços em
ambas as extremidades de um operador.
Guia de Estilo de Código para Python -
Nomeação de Identificador
• Um identificador Python representa o nome de uma constante, variável, função ou outro objeto.
• Um identificador geralmente é composto de letras, dígitos e sublinhados, mas não pode começar com um dígito. Os identificadores
diferenciam maiúsculas de minúsculas e devem ser únicos. Se um identificador não estiver em conformidade com as regras, o
compilador emitirá uma mensagem SyntaxError ao executar o código.
print() é uma função interna do Python e é usada para produzir conteúdo entre parênteses.
if True:
Indentação correta -- print ("Olá")
else:
Indentação correta -- print (0)
a = “Python”
Indentação incorreta -- print (a)
Guia de Estilo de Código para Python -
Usando Comentários
• Comentários são explicações adicionadas aos programas para melhorar a legibilidade do programa. No programa
Python, os comentários são classificados em comentários de linha única e comentários de várias linhas.
• Um comentário de linha única começa com um sinal de hash (#).
• Um comentário de várias linhas pode conter várias linhas, que são incluídas em um par de três aspas ('''...' 'ou' '' ''...
'''').
“””
Comentário de várias A saída é Python.
linhas - “””
Guia de estilo de código para Python -
Estrutura de arquivo de código-fonte
• Um arquivo de código fonte Python completo geralmente consiste em declaração de formato de interpretador e
codificação, sequência de documentos, importação de módulos e execução de código.
• Se você precisar chamar uma classe de uma biblioteca padrão ou uma biblioteca de terceiros em um programa, use
a instrução "import" ou "from... import" para importar módulos relacionados. A instrução import está sempre após o
comentário do módulo ou string de documento (docstring) na parte superior do arquivo.
tempo de importação
Hora em que um módulo é importado -- …
O código está em execução...
Funções e Módulos Python
• Uma função é um bloco de código organizado e reutilizável que é usado para executar uma única ação relacionada. Pode melhorar
a modularidade do programa e a utilização do código. A função é definida usando a palavra-chave def.
• Um módulo é um arquivo Python salvo. Os módulos podem conter definições de funções, classes e variáveis que podem ser
utilizadas em outros programas Python. A única diferença entre um módulo e um programa Python regular é que o módulo é usado
para importar por outros programas. Portanto, um módulo geralmente não tem uma função principal.
demo.py test.py
def sit(): #Define uma função. import demo #Import a module.
print ('Um cachorro está sentado agora’)
demo.sit() #Chame uma função.
demo.sit() #Chame uma função.
Resultado da execução:
Resultado da execução:
Um cachorro já está sentado.
Um cachorro já está sentado. Um cachorro já está sentado.
demo.py
Método Funções
Leia os dados até que uma determinada sequência de bytes, esperada, seja encontrada ou até que os
Telnet.read_until (expected, timeout=None)
segundos de tempo limite tenham passado.
Telnet.read_all () Leia todos os dados até EOF como bytes; bloqueie até que a conexão seja fechada.
Leia tudo o que pode ser sem bloquear em E/S (ansioso). Aumente o EOFError se a conexão for fechada e
Telnet.read_very_eager() não houver dados produzidos disponíveis. Devolver b'' se não houver dados produzidos disponíveis de
outra forma. Não bloqueie a menos que esteja no meio de uma sequência IAC.
Telnet.write(buffer) Escreva uma string de bytes no soquete, duplicando quaisquer caracteres IAC.
3. Casos
Caso: Fazer login em um dispositivo usando
telnetlib
• Descrição do caso:
• Um dispositivo de rede funciona como um servidor Telnet, e o Python telnetlib precisa ser usado como um cliente Telnet para fazer
login no dispositivo.
192.168.10.10 192.168.10.20
GE1/0/10
Servidor Cliente Telnet
Telnet
192.168.10.10 192.168.10.20
GE1/0/10
Servidor Cliente Telnet
Telnet
192.168.10.10 192.168.10.20
GE1/0/10
Servidor Cliente Telnet
Telnet
Login Telnet:
192.168.10.10 192.168.10.20
GE1/0/10
Servidor Cliente Telnet
Telnet
C:\Users\Richard>telnet 192.168.10.10
Autenticação de login
Resultado de login Telnet
manual: Password:
Info: The max number of VTY users is 5, and the number of current VTY users on line is 1. The current
login time is 2020-01-15 21:12:57.
<Huawei>