0% acharam este documento útil (0 voto)
5 visualizações

Mod 21 - Programability

Enviado por

mxrscrt
Direitos autorais
© © All Rights Reserved
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
5 visualizações

Mod 21 - Programability

Enviado por

mxrscrt
Direitos autorais
© © All Rights Reserved
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 33

Programação e

Automação de Redes
Introdução

• Novos protocolos, tecnologias e modos de entrega e O&M estão surgindo


no campo da engenharia de rede. As redes convencionais enfrentam
desafios de novos requisitos de conexão, como requisitos para
computação em nuvem e inteligência artificial (IA). As empresas também
estão buscando agilidade de serviço, flexibilidade e elasticidade. Nesse
contexto, a automação de rede se torna cada vez mais importante.
• A programação e automação da rede simplificam a configuração, o
gerenciamento, o monitoramento e as operações da rede para
engenheiros e melhoram a implantação e a eficiência de O&M. Este curso
é para ajudar os engenheiros de rede a entender a programação Python e
implementar a automação de rede.
Objetivos
• Ao concluir este curso, você deve ser capaz de:
• Descrever as dificuldades de O&M de rede convencional.
• Entenda a implementação da automação de rede.
• Compreender a classificação das linguagens de programação.
• Descrever o estilo de código Python.
• Descrever o uso básico do Python telnetlib.
Conteúdo

1. Introdução à Programação e Automação de Redes

2. Visão geral da linguagem de programação e Python

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.

Cenários típicos de O&M

Inúmeros dispositivos As seguintes cenas de trabalho lhe são familiares?


Operações complexas 1. Atualização de dispositivo: Milhares de dispositivos de rede residem em uma rede
Baixa eficiência ativa. Você tem que atualizar periodicamente os dispositivos em lotes.
2. Auditoria de configuração: uma empresa precisa auditar a configuração de
dispositivos todos os anos. Por exemplo, a empresa exige que o STelnet seja
habilitado em todos os dispositivos e que a segurança do spanning tree seja
configurada em switches Ethernet. Nesse caso, você precisa descobrir rapidamente
os dispositivos que não atendem aos requisitos.
3. Mudança de configuração: Devido aos requisitos de segurança da rede, as contas e
senhas dos dispositivos precisam ser alteradas a cada três meses. Você tem que
excluir a conta original e criar uma conta em milhares de dispositivos de rede.

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

1. Introdução à Programação e Automação de Redes

2. Visão geral da linguagem de programação e Python

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.

Linguagem compilada Linguagem interpretada


(Código fonte) (Código fonte)

Compilador
Interpretador: Interpreta
o código-fonte linha por
linha.
Arquivo executável

Sistema operacional (Windows/Linux/Mac OS)

CPU (arquitetura x86/ARM)


Pilha de Tecnologia de Computação e
Processo de Execução de Programas
Pilha de Tecnologia de Computação Processo de Execução do Programa

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.

Módulo de objeto: Código executável:


Programa de
Código fonte módulo de programa de
Compilador linguagem Montador Ligador Carregador Memória
C/C++ linguagem de linguagem de
Assembly
máquina máquina

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

Função de biblioteca Funções de biblioteca


Arquivo de classe arquivo .pyc
Java Python (linguagem de
(código de byte) (código de byte)
(linguagem de máquina) máquina)

JVM PVM
O que é Python?
• Python é uma linguagem de programação de alto nível totalmente aberta. Seu autor é Guido Van Rossum.

Vantagens do Python: Desvantagens do Python:


• É uma linguagem interpretada dinamicamente com sintaxe elegante. Ele • Roda devagar. É uma linguagem
permite que os alunos se concentrem na lógica do programa em vez de interpretada que é executada sem ser
aprender detalhes de sintaxe. compilada. O código é traduzido linha por
• Suporta programação orientada a processos e objetos. linha em tempo de execução em código de
• Fornece bibliotecas de terceiros abundantes. máquina que a CPU pode entender, o que é
• É apelidado de linguagem de cola porque pode chamar código escrito demorado.
em outras línguas.

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ódigo fonte Python 1. Instale o Python e o ambiente em execução em um


sistema operacional.

2. Compilar código fonte Python.


Compilador
3. O compilador executa o código-fonte do Python e
gera um arquivo .pyc (código de byte).
arquivo .pyc (código de
byte) 4. Uma VM Python converte o código de byte na
linguagem de máquina.
Execução da VM Python 5. O hardware executa a linguagem de máquina.
Introdução ao código Python - Execução
interativa
• O Python é executado em modo interativo ou de script.
• A programação interativa não requer a criação de arquivos de script e o código é escrito no modo interativo do
interpretador 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

print("Hello world!") 1. Entrada -- C:\Users\Richard>python demo.py


a=1 2. Saída -- Olá mundo
b=2 3. Saída -- 3
print ( a + b )

1 Escreva um arquivo de script Python 2 Execute o arquivo de script.


(.py).
Guia de Estilo de Código para Python
• Regras de estilo de código referem-se a regras de nomenclatura, recuo de código e modos de segmentação de código e declaração
que devem ser cumpridos quando Python é usado para escrever código. Boas regras de estilo ajudam a melhorar a legibilidade do
código e facilitam a manutenção e modificação do código.
• Por exemplo, as seguintes regras para usar ponto-e-vírgula, parênteses, linhas em branco e espaços são recomendadas:

Ponto e Vírgula Linha em branco


• Um ponto e vírgula pode ser adicionado no final de uma • Diferentes funções ou blocos de instruções podem ser
linha em Python, mas não é recomendado separar as separados por espaços. Uma linha em branco ajuda a
instruções. diferenciar dois segmentos de código, melhorando a
legibilidade do código.
• Recomenda-se que cada frase esteja em uma linha
separada.

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.

1. Atribua um valor -- User_ID = 10 print ( User_ID )


2. Atribua um valor -- user_id = 20 print ( user_id )
3. Atribua uma string User_Name = ‘Richard’ print ( User_Name )
-- Count = 1 + 1 print ( Count )
4. Atribua um valor -- 4_passwd = "Huawei" print ( 4_passwd )
5. Identificador incorreto -

print() é uma função interna do Python e é usada para produzir conteúdo entre parênteses.

Pergunta: Qual é a saída do comando de impressão à direita?


Guia de Estilo de Código para Python -
Indentação de Código
• Em programas Python, o recuo de código representa o escopo de um bloco de código. Se um bloco de código
contiver duas ou mais instruções, as instruções devem ter o mesmo recuo. Para Python, o recuo de código é uma
regra de sintaxe que usa recuo de código e dois pontos para distinguir entre camadas de código.
• Ao escrever código, você é aconselhado a usar quatro espaços para recuo. Se a indentação incorreta for usada no
código do programa, uma mensagem de erro IndentationError será exibida durante a execução do código.

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 linha única -- # Atribua uma string ao a.


a = “Python”
print (a)

“””
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.

Declaração do intérprete -- #!/usr/bin/env python


Declaração de formato de codificação -- #-*- coding:utf-8 -*-

Comentário do módulo ou sequência de Descrição de um documento (docstring)


documentos --
Este documento destina-se a...
“””

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.

1 Escreva um arquivo de script 2 Importar um módulo.


Python (.py).
Classes e Métodos Python
• Uma classe é uma coleção de propriedades e métodos que são os mesmos. A palavra-chave class é usada para
definir uma classe.
• A função de uma classe instanciada é chamada de método. Quando você define um método, uma classe deve conter
a palavra-chave self, que indica a instância da classe.

demo.py

class Dog(): #Defina uma classe. test.py


def sit(self): #Define um método.
|||UNTRANSLATED_CONTENT_START||| print(“A dog is now import demo
sitting.")|||UNTRANSLATED_CONTENT_END|||
demo.Dog.sit
Richard = Dog() #A classe é instanciada.
print (type(Richard.sit)) #A função de um tipo instanciado é chamada de
método.
print (type (Dog.sit)) #O tipo é função. Resultado da execução:

Resultado da execução: Um cachorro já está sentado.


<class 'method' >
<class 'method' > <class 'function'>
<class 'function' >

1 Escreva um arquivo de script 2 Importar um


Python (.py). módulo.
Introdução ao telnetlib
• telnetlib é um módulo na biblioteca Python padrão. Ele fornece a classe telnetlib.Telnet para implementar a função Telnet.
• Métodos diferentes na classe telnetlib.Telnet são chamados para implementar funções diferentes.

Importe a classe Telnet do módulo telnetlib. -- from telnetlib import Telnet


Crie uma conexão Telnet para um servidor especificado. -- tn = Telnet(host=None, port=0[, timeout])
Invocar o método read_all(). -- tn.read_all()

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.

Telnet.close() Feche a conexão.


Conteúdo

1. Introdução à Programação e Automação de Redes

2. Visão geral da linguagem de programação e Python

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.

Verifique o procedimento de Verifique o


Configurar Telnet. Escreva código Python.
login Telnet. resultado.

192.168.10.10 192.168.10.20

GE1/0/10
Servidor Cliente Telnet
Telnet

• O processo de implementação é o seguinte :


• Configure o serviço Telnet.
• Verifique e visualize manualmente o procedimento de login Telnet como uma referência para a implementação do código.
• Compilar e executar código Python.
• Verifique o resultado.
Caso: Fazer login em um dispositivo usando
telnetlib
Configurar Telnet. Verifique o procedimento de Verifique o
Escreva código Python.
login Telnet. resultado.

192.168.10.10 192.168.10.20

GE1/0/10
Servidor Cliente Telnet
Telnet

Configure o endereço IP da interface


no dispositivo: Configure o serviço Telnet.

[Huawei] interface GE 1/0/0 [Huawei] user-interface vty 0 4


[Huawei -GE1/0/0] ip add 192.168.10.10 24 [Huawei-ui-vty0-4] authentication-mode password
[Huawei -GE1/0/0] quit [Huawei-ui-vty0-4] set authentication password simple Huawei@123
[Huawei-ui-vty0-4] protocol inbound telnet
[Huawei-ui-vty0-4] user privilege level 15
[Huawei-ui-vty0-4] quit
[Huawei] telnet server enable
Caso: Fazer login em um dispositivo usando
telnetlib
Verifique o procedimento de login
Configurar Telnet. Escreva código Python. Verifique o resultado.
Telnet.

192.168.10.10 192.168.10.20

GE1/0/10
Servidor Cliente Telnet
Telnet

Login Telnet:

1 Execute um comando C:\Users\Richard>telnet 192.168.10.10


de login.
Saída de comando Autenticação de login
Senha:
2 Digite uma senha. Info: The max number of VTY users is 5, and the number of current VTY users on line is 1.
Saída de comando
The current login time is 2020-01-15 21:12:57.
<Huawei>
Caso: Fazer login em um dispositivo usando
telnetlib
Verifique o procedimento de
Configurar Telnet. Escreva código Python. Verifique o resultado.
login Telnet.

192.168.10.10 192.168.10.20

GE1/0/10
Servidor Cliente Telnet
Telnet

Importa o módulo. -- import


Define o endereço IP de um host. -- telnetlib
Define a senha para fazer login no dispositivo. -- host = '192.168.10.10'
password = 'Huawei@123'
Faça login no host através do Telnet. --
Imprime os dados até que a Password: seja exibida. -- tn = telnetlib.Telnet(host)
Define uma senha ASCII e inicia uma nova linha. -- tn.read_until (b'Password:')
Imprime os dados até que<Huawei> sejam exibidos. -- tn.write (password.encode('ascii') + b"\n")
Fecha a conexão Telnet. -- print [tn.read_until (b'<Huawei>').decode('ascii’)]
tn.close ()
Caso: Executando Comparação de
Resultados
Verifique o procedimento de Verifique o
Configurar Telnet. Escreva código Python.
login Telnet. resultado.

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>

#Executar código Python no compilador.


Resultado da execução do Info: The max number of VTY users is 5, and the number
código Python: of current VTY users on line is 1.
The current login time is 2020-01-15 22:12:57.
<Huawei>
Quiz

1. Python é uma linguagem compilada. ( )


A. Verdadeira
B. Falsa
Resumo
• A automação de rede usa ferramentas para implementar
implantação, operação e O&M automatizados de rede, reduzindo
gradualmente a dependência das pessoas. Você pode usar uma
linguagem de programação ou ferramenta para implementar a
automação de rede.
• Python é uma linguagem de programação de alto nível totalmente
aberta que é uma sintaxe simples e fácil de aprender. Possui
bibliotecas padrão ricas e bibliotecas de terceiros, que são aplicáveis
ao campo de engenharia de rede.
• O módulo telnetlib do Python fornece a classe telnetlib.Telnet para
implementar a função Telnet. Ele ajuda você a entrar no mundo da
programação e automação de rede!
Obrigado

Você também pode gostar