SlideShare uma empresa Scribd logo
1 de 105
Salvador, 19 de Setembro de 2018
III Congresso de TI Unifacs
AMPLIANDO OS HORIZONTES DOS PROFISSIONAIS
DE REDES ATRAVÉS DO PYTHON
Sergio Sampaio Spinola
1
Roteiro
e uma
Pergunta
E agora ? Profissionais de Redes precisam saber programar ?
O que é e onde se encontra o Python
O que é Python Networking
O poder das Bibliotecas: Scapy, Pysnmp, PyMongo, iPerf, Socket,
Microframeworks: Bottle, Flask
O que é JSON, YAML, RESTful...
Plataformas de Experimentação: o GNS-3
Obtendo dados de gerenciamento: SNMP
Exemplos de Usos e Aplicações
Por que programar ?
• Programar hoje está ao alcance de todos
• Existem vários domínios e aplicações
• Aplicações WEB, sistemas empresariais, sistemas financeiros de
transações, sistemas de comércio eletrônico, aplicações bancárias,
sistemas corporativos diversos, do RH ao Financeiro, Ciência de
Dados, Inteligência Artificial e NLP, assim como uma multitude de
Sistemas.
• E, existe sim, o universo da programação voltada para Redes !
E Por quê ?
• O mundo está virando quase que totalmente Software !
• Boa parte do mundo está indo para a Nuvem:
• Em breve pouco restará ao alcance de nossas mãos em termos de hardware,
com exceção de hardwares de acesso simples e estações de usuário, que irão
requerer ações de service desk/help desk de nível básico.
• Enquanto isto, e por causa disto tudo, a gerência e o monitoramento
tornam-se bem mais importantes, assim com sua automação
• Acesso a todos os itens e recursos em Nuvem podem e estão e até
mesmo recomenda-se que sejam acessados por meio de APIs
• É o mundo da API, pessoal !
O que é
Python
Datando de 1991, a linguagem de programação Python
tem sido considerada um preenchedor de gaps, uma
forma de automatizar tarefas costumeiras ou para
rapidamente construir protótipos de aplicações que
poderiam então ser implementadas em outras
linguagens.
Ao longo dos anos o Python emergiu como uma
linguagem de primeira linha aplicada ao desenvolvimento
de software, gerenciamento de infraestrutura e análise
de dados, tornando-se uma força consistente no mundo
das aplicações web e gerenciamento de sistemas.
Evoluiu ao ponto de tornar-se um elemento chave na
elaboração de software na análise de big data e
inteligência de máquina, servindo a múltiplos propósitos
com eficiência.
Python (de Monty Python) Criada
por Guido Van Rossum (*)
• Versões mais difundidas (2.7.X e
3.X), destaca-se em ciência de
dados, machine learning,
automação de sistemas, web,
desenvolvimento de APIs e além
• “The Zen of Python”
• Irreverência, abstração, cultura,
“alto nível”
O que é uma API ?
• API é um acrônimo para Application
Programming Interface, que é um
intermediário de software que permite
que duas aplicações se falem.
• Algo que pode ser chamado a partir de um pequeno programa, como um script.
• Desta forma, a partir de um simples script podemos realizar operações
ponderosas e precisamos apenas saber sobre a API, quanto custa e como
fazer o seu chamamento.
• É aí que o Python entra em cena e por isto que é muitas vezes chamado
de linguagem de “cola”.
O Mundo das APIs
Aceitação da
Linguagem
Python, Mitos
e Verdades
Largamente adotada e suportada
Bastante popular e cada vez mais usada entre os não
versados em programação e desenvolvimento de
sistemas, propria para aprendizado até por crianças
Linguagem interpretada, portanto de baixo desempenho
quando comparada com Java e C++, não orientada a
objetos, não apropriada prara grandes sisitemas e
programação Web.
Conta com um grande conjunto de bibliotecas, libraries e
serviços API, um dos pilares que a tornam extremamente
poderosa
Python possui um compromisso entre desempenho e
versatilidade, mas tudo é uma questão de contexto !
Linguagens mais Populares
Usos do Python
• No mundo das redes um uso mais imediato e bastante comum é como
linguagem de script em substituição ao bash script
• Implementa scritps poderosos que propiciam a automatização de
variadas tarefas rotineiras aplicadas ao cenário de dispositivos de
Networking, como o salvamento de configurações.
• Mas vai muito além de um substituto para shell scripts e bacthes.
• É também usada para automatizar o provisionamento de sistemas e
interagir com sistemas de provisionamento e configuração.
• Possui uma forte familiaridade com o formato de representação de
dados JSON e interage de forma direta, simples e fácil com APIs
RESTful.
Que
linguagem é
a melhor ?
Esta resposta depende tão somente do contexto, do propósito e
de quem usa.
Qual o nível de experiência e envolvimento do profissional com
programação ?
A que se destina ? Sistema Corporativo, Financeiro, ERP,
Enterprise, E-Commerce, Banco de Dados, Nuvem, Big Data, Data
Science, Networking, Web ... ?
A atividade de programação é a sua atividade fim ou o meio ?
Trabalha sozinho, em equipe, grupo, dupla... ?
Para resolver problemas pontuais e localizados ou um grande
sistema financeiro e de pagamentos integrado ?
Comparações entre Python e Java
• Existem muitas comparações entre Python e Java, como por exemplo:
https://www.educba.com/java-vs-python/
Comparações:
pontos que se
destacam
Java requer mais linhas de código em comparação a
Python
Python é bastante amigável com o formato de dados
JSON e possui facilidades para chamar APIs RESTful
Enquanto o Java requer o uso do símbolo “;” o Python
requer a obediência estrita somente à indentação
Em Java você precisa declarar cada tipo de dados, já em
Python a tipagem é dinâmica, porém forte.
Python é reconhecidamente mais fácil e menos verbosa
do ponto de vista do programador eventual
Os códigos em Python são mais fáceis de entender
(legibilidade) à primeira vista
Java versus Python: Compilada versus Interpretada
Curva de Aprendizado
• “Python é fácil de aprender e usar”
• Requer um investimento em tempo e esforço
relativamente pequeno para produzir os primeiros
programas.
• A sintaxe do Python foi projetada para privilegiar a
legibilidade e a objetividade.
• Possui uma quantidade substancial de bibliotecas para
manipulação de pacotes de redes e serviços de rede.
• Esta simplicidade tem tornado o Python uma linguagem
largamente adotada para o ensino de programação de
crianças e jovens, permitindo que novatos a adotem
rapidamente.
• A ideia de fundo é que os desenvolvedores gastem mais
tempo pensando no problema a ser resolvido e menos
tempo debruçados sobre a complexidade da linguagem ou
decifrando o Código de terceiros.
Ciência de
Dados e
Machine
Learning
Análises de dados sofisticadas têm se tornado uma das áreas
onde a linguagem Python tem sido bastante adotada. O Natural
Language Processing tem sido bastante empregado e a linguagem
conta com variadas bibliotecas que tornam a implementação
muito mais fácil, rápida e objetiva.
A vasta maioria das bibliotecas usadas para data science ou
machine learning possuem interfaces Python, tornando esta
linguagem a mais popular em termos de interface de alto nível
para bibliotecas de machine learning
As bibliotecas nativas Python e web web frameworks de terceiros
fornecem fomars de criar desde REST APIs em poucas linhas até
sites direcionados a dados.
As versões mais recentes suportam fortemente operações
assíncronas, permitindo que sites manipulem dezenas de
milhares de requisições por Segundo aplicando as bibliotecas
adequadas.
Tipagem dinâmica
• Referenciando especificamente o Python para explicar a questão:
Tipagem dinâmica significa que o próprio interpretador do Python
infere o tipo dos dados que uma variável recebe, sem a necessidade
que você, o usuário da linguagem diga de que tipo determinada
variável é. Exemplo de um script Python:
http://blog.abraseucodigo.com.br/python-uma-linguagem-de-tipagem-dinamica-e-forte.html
Sem blocos delimitadores, a indentação importa
O que é “Python Networking”
• O ferramental Python exerce um papel essencial em network programming.
• A Biblioteca padrão Python possui suporte completo a protocolos de rede,
codificação de decodificação de dados e outros conceitos de programação,
implementados de uma forma mais simples que outras linguagens.
• Um socket é o end-point em um fluxo de comunicação entre dois
programas ou canais de comunicação que operam sobre uma rede e são
criados usando socket API (Application Programming Interface).
• É possível operar diretamentre sobre os pacotes UDP e TCP
• A biblioteca Scapy permite até mesmo editar o conteúdo dos pacotes de
rede em camada 2 e 3.
https://www.w3schools.in/python-tutorial/network-programming/
Manipulação de arquivos do tipo texto
• A linguagem possui bibliotecas que permitem lidar facilmente com
dados gerados em CSV ou mesmo aqueles dispostos em um arquivo
texto
• O Python oferece variados recursos de “regex” tornando
extremamente simples e direto “pinçar”, filtrar, alterar, trocar e
remover informações em arquivos de texto comuns.
• Estes recursos permitem localizar a informação relevante em meio a
variados tipos de dados do tipo texto produzidos por equipamentos
diversos, tais como bilhetes, logs genéricos em texto, syslog, registros
em CSV e outras informações produzidas e oferecidas no formato de
texto, inclusive e-mail.
Os Sockets e
o Python
Sockets permitem a comunicação entre dois
diferentes processos na mesma máquina ou em
máquinas diferentes.
É uma forma de computadores se comunicarem
usando um file descriptor.
Para o programador um socket se parece e se
comporta como um file descriptor de baixo nível.
Desta forma, comandos como read() e write()
funcionam com sockets da mesma forma que
arquivos e pipes.
+
◊ Canal não-confiável
Host: 138.36.95.240 Host: 137.37.58.250
Processo
CLIENTE
Processo
SERVIDOR
D D D
D
D
roteador
datagrama
Sockets UDP
+
◊ Canal confiável
Host: 138.36.95.240 Host: 137.37.58.250
Stream de saída Stream de entrada
Processo
Processo
SERVIDOR
3 2 1
CLIENTE
4
1
roteador
Segmento TCP
3
Sockets TCP: Canal Confiável
Exemplo de
uso de Sockets
Problema: “Coletar os bilhetes SMDR gerados
em uma central telefônica IP, gravar em um
arquivo e posteriormente fazer filtragem,
seleção e elaborar estatísticas acerca das
ligações efetuadas e recebidas”
Solução: uma aplicação Python que cria um
socket que estabelece a conexão TCP através de
uma porta pré-determinada, adquire os dados
em um buffer e apensa os dados em um arquivo
texto.
Uma segunda aplicação faz a leitura dos dados,
separa os valores, realiza a filtragem dos dados
relevantes e armazena em um banco de dados
NoSQL, isto é, baseado em documentos, (e.g.,
MongoDB).
Leitura de Bilhetes de uma Central IP Office
Bilhetes SMDR
Station Message Detail Recording
• O equipamento envia os bilhetes que são coletados por uma rotina escrita
em Python, por meio de socket, e um arquivo de Log é Gerado.
• Em seguida uma rotina adicional em Python faz o “parsing” do arquivo de
bilhetes e realiza-se uma filtragem e o armazenamento das variáveis de
interesse em banco de dados para análise posterior.
Aplicação em Gerenciamento SNMP
• Protocolo largamente utilizado em ambientes de redes
• Funciona no modelo gerente-agente
• Baseado em Polling e/ou Trap através de portas específicas
• Aplicável ao gerenciamento de:
• Hosts genéricos Linux
• Switches
• Roteadores
• Impressoras inteligentes
• Firewalls
• Appliances de rede de usos diversos
30
Como se faz o Polling de um Objeto
SNMP GET
Exemplo: Leitura de Objetos (OIDs) via SNMP diretamente
• Plataformas e Softwares de gerenciamento são capazes de realizar todas as
leituras de dados que podem ser obtidos através de comandos de GET do
SNMP, e aquisição das variáveis MIBs, definidas pelos respectivos OIDs.
• Problema: “Queremos coletar apenas um determinado conjunto restrito de
variáveis e sinalizar alarmes específicos acerca de determinadas OIDs sem
necessidade de instalar um sistema completo de gerenciamento de
redes.”
• Em outras palavras: não quero instalar o Nagios, ou o Cacti, ou o Zabbix, ou
PRTG, WhatsUp, Solarwinds...
• Solução: Utilizando a biblioteca PySNMP é possível fazer a leitura de
qualquer OID desejada, sobre qualquer dispositivo, realizar a inferência
necessária, armazenar em banco de dados e gerar alarmes baseados em
thresholds”
Leitura de objetos do Asterisk
Biblioteca Pysnmp
O que fazer com os dados ?
• Você escolhe !
• Pode enviar para um banco de dados, como o MongoDB, por exemplo
e deixar os dados à disposição de algum outro sistema de
monitoramento, ou;
• Pode utilizar um biblioteca que permite encaminhar notificações para
o Telegram:
• from telegram.ext import Updater, InlineQueryHandler, CommandHandler
• Evidentemente, você pode enviar um e-mail com o alerta. Claro,
existe uma biblioteca que permite enviar e receber e-mails através do
Python.
Representação de Dados: JSON
• Desde sua introdução JSON (Java Script Object Notation) tem se tornado
rapidamente um padrão de fato para troca de informações.
• Vários recursos estão disponíveis em termos de APIs e armazenamento de
dados em uma base de documentos (NoSQL).
• Python suporta JSON nativamente !
• É uma representação que favorece a legibilidade
• Implementada, por exemplo, nas bibliotecas iperf e scapy
• Utilizada em APIs REST, amplamente utilizadas entre dispositivos de rede,
inclusive SDN
• Onde mais existe ? Ora, toda a descrição de dados nos serviços AWS da
Amazon adota a notação JSON !
Comparação JSON e XML
https://www.json.org/xml.html https://codebeautify.org/jsontoxml#copy
Representação XML
Representação JSON
Representação JSON/BSON
Representação JSON/BSON
40
Um cenário de experimentação
41
 Dmúltiplas chamadas escrição:
Dispositivos IP realizam de voz,
progressivas e variáveis, em
ambiente de telefonia IP, com
protocolo SIP, para um Server
(PBX) com duração de 20
segundos cada.
Context Database
DBaaS
MongoDB
Exemplo: Simulação e Controle de Chamadas VoIP
42
MOS e R-
Factor
Leituras
de QoS
Codec IP e porta destino Chamadas Simultâneas
Payload RTP
Grava o
arquivo em
csv!
Rotinas
executadas em
Python
1) Leitura do arquivo csv criado pelo Software
Startrinity
2) Filtragem dos dados coletados
3) Preparação dos dados em JSON
4) Conexão ao banco de dados MongoDB
5) Escrita no Banco de Dados
6) Polling do estado da variável no Banco de Dados
MongoDB em nuvem, filtragem e geração de alarmes
7) Reconfiguração do iptables provocada pelo alarme
Representações de dados de contexto em tempo real
44
Cenário: Comportamento
Filas x Ligações Simultâneas x MOS x Codec G.711
45
MongoDB e Mongolab
Bibliotecas
/Ferramentas:
iPerf/iPerf3
iPerf3 é uma ferramenta
para medições ativas
acerca da máxima banda
alcançável em redes IP.
Suporta vários parâmetros
de ajuste relacionados a
“timing”, buffers e
protocolos (TCP, UDP, SCTP
with IPv4 and IPv6).
Para cada teste é
reportada a banda, perda
e outros parâmetros.
Features do Iperf
• iPerf features
• TCP and SCTP
• Medição de banda
• Reporta MSS/MTU size e tamanhos de leitura observados.
• Suporte para tamanho de janela TCP.
• UDP
• Cliente pode criar UDP streams de banda especificada.
• Mede perda de pacotes
• Mede delay jitter
• Capaz de Multicast
Exemplo de utilização
Trabalhando
com
Simuladores
Simuladores de Rede atuais permitem emular redes reais
e simular ambientes plenamente operacionais
Possibilitam simular o ambiente real previamente à
instalação, permitindo analisar, prever e aplicar
adequações
Um exemplo é o GNS-3, uma ferramenta poderosa que
permite simular ambientes com roteadores com alto grau
de complexidade
Funciona com a imagem dos roteadores
Permite a captura e análise de pacotes e interação com o
ambiente externo, ou seja, sua rede local ou Internet
Permite interagir com máquinas virtuais
Exemplo
Interação direta
OSPF Discovery Tool
Descoberta dos Vizinhos por Roteador (ID e IP)
E o desenho de uma topologia...
Scapy
Scapy é um programa Python que permite ao usuário enviar,
fazer o sniff, dissecar e forjar pacotes de rede.
Estas capacidades permitem a construção de ferramentas
que podem agir como probe, realizar o scan ou simular
ataques.
A ferramenta Scapy é um programa poderoso que permite a
manipulação interativa com pacotes.
Permite forjar e decodificar pacotes de uma variedade
grande de protocolos, enviá-los, capturá-los, casar
requerimentos e respostas.
Scapy pode facilmente lidar com tarefas típicas tais como
scanning, tracerouting, probing, unit tests, ataques ou
descoberta de rede.
Pode substituir hping, arpspoof, arp-sk, arping, e
parcialmente o Nmap, tcpdump e tshark.
Pode ser incorporado a um programa em Python.
Usando o
Scapy
No Scapy usamos a função sniff() para capturar pacotes de rede
lsc() mostra a lista de comandos disponíveis.
ls() mostra todos os protocolos suportados
ls(protocol) permite visualizar todos os campos default para
qualquer protocol
Visualizar as camadas de pacotes com a função .summary()
Visualizar os conteúdos dos pacotes com a função .show()
Aprofundar em uma camada específica do pacote: pkts[3][2].summary()... onde o
primeiro índice define um pacote dentre uma lista de pkts e o segundo aponta para
uma camada daquele pacote específico.
Usando o método .command() packet irá devolver uma string de
commandos necessários para recriar o pacote resultante da operação de
sniff
Exemplos
• Welcome to Scapy (2.2.0)
• >>> send(IP(dst="10.1.99.2")/ICMP()/"HelloWorld")
• Sent 1 packets.
• >>>
• Envio de um endereço “spoofed”
• send(IP(src="10.1.99.100", dst="10.1.99.2")/ICMP()/"HelloWorld")
Captura pelo Wireshark
Envio de pacotes para diferentes portas
• >>> p=sr(IP(dst="10.1.99.2")/TCP(dport=[23,80,53]))
• Begin emission:
• .**Finished to send 3 packets.
• *
• Received 4 packets, got 3 answers, remaining 0 packets
• >>>
Efetuando um SYN Scan
• >>> p=sr(IP(dst="10.1.99.2")/TCP(sport=666,dport=[22,80,21,443], flags="S"))
• Begin emission:
• ***Finished to send 4 packets.
• *
• Received 4 packets, got 4 answers, remaining 0 packets
• >>> p
• (<Results: TCP:4 UDP:0 ICMP:0 Other:0>, <Unanswered: TCP:0 UDP:0 ICMP:0 Other:0>)
• >>> ans,unans=_
• >>> ans.summary()
• IP / TCP 10.1.99.25:666 > 10.1.99.2:ssh S ==> IP / TCP 10.1.99.2:ssh > 10.1.99.25:666 SA / Padding
• IP / TCP 10.1.99.25:666 > 10.1.99.2:http S ==> IP / TCP 10.1.99.2:http > 10.1.99.25:666 SA / Padding
• IP / TCP 10.1.99.25:666 > 10.1.99.2:ftp S ==> IP / TCP 10.1.99.2:ftp > 10.1.99.25:666 RA / Padding
• IP / TCP 10.1.99.25:666 > 10.1.99.2:https S ==> IP / TCP 10.1.99.2:https > 10.1.99.25:666 RA /
• Padding
• >>>
Um código Python com sniffing
• Configurar a interface em modo promíscuo
• Inicializa os contadores e o timeout
• Define os protocolos a serem filtrados
• Permite definir um nome para o arquivo de log
• Grava os dados de interesse coletados no arquivo de log
+
REST –
Representational
State Transfer
Um estilo de arquitetura que fornece padrões entre
sistemas de computação na Web tornando mais fácil a sua
comunicação
Sistemas REST-compliant são frequentemente
denominados RESTful systems, caracterizados por serem
stateless e separam as atribuições do cliente e servidor
Uma REST API define um conjunto de funções no qual
desenvolvedores podem realizer requerimentos e receber
respostas através do protocol HTTP, como um GET e POST
Em outras palavras, propicia a implementação de APIs em
que a informação é enviada e recebida como texto em
uma URL
+
Separação do
Cliente e
Servidor
No estilo REST a implementação
do cliente e do servidor pode ser
feita independentemente sem que
um conheça o outro.
Cada lado precisa conhecer
apenas o formato das
mensagens de envio de um para
outro, podendo serem mantidos
modulares e separados.
Provê a separação da
preocupação com a interface de
usuário em relação ao
armazenamento de dados,
aumentando a flexibilidade da
interface e ampliando a
escalabilidade.
O propósito é que ao utilizar a
interface REST interface,
clientes diferentes alcançam os
mesmos endpoints REST,
realizam as mesmas ações e
recebem as mesmas respostas.
Statelessness
No paradigma REST o servidor não precisa saber nada acerca do
estado do cliente e vice-versa.
Servidor e Cliente podem entender qualquer mensagem recebida,
mesmo desconhecendo mensagens anteriores.
Esta restrição é determinada pelo uso de recursos ao invés de
comandos e que são os substantivos da Web – descrevem qualquer
objeto , documento, ou coisa que precisa ser armazenada ou
enviada para outros serviços.
Interação através de operações e recursos padrão, não dependem
da implementação de interfaces.
Visa a confiabilidade, desempenho e escalabilidade, de tal forma
que os componentes possam ser gerenciados, atualizados e
reusados sem afetar o Sistema como um todo.
Requisições
e “Verbos”
REST requer que um cliente faça uma requisição ao servidor de forma a
recuperar ou modificar dados em um servidor, sendo emm geral composto de:
• HTTP verb, que define o tipo de operação a ser realizada
• Um cabeçalho, que permite ao cliente passar informação adianta sobre o requerimento
• Caminho de um recurso
• Mensagem opcional
4 HTTP verbs básicos são utilizaods em requerimentos para interagir com
recursos em um Sistema REST:
GET — recupera um recursos específico (pelo id) ou uma coleção de recursos
POST — cria um novo recurso
PUT — atualiza um recurso específico (por id)
DELETE — remove um recurso específico por id
Exemplo
Através de uma API REST é realiza a consulta a um
serviço de consulta a números de telefones
disponíveis como em um catálogo telefônico:
Opencnam, www.opencnam.com;
A informação é disponibilizada através do envio de
URIs devidamente preenchidas, no formato de API
REST, compreendendo por exemplo a consulta de
um número de telefone específico: +15551234567
O envio desta URL devidamente preenchida deve
retornar dados em formato JSON, onde o nome do
contato é “SAMPLE”.
+
Exemplo: Opencnam
URL, Query e Resposta JSON
Exemplo: RESTful API
Get: RESTful API
Microframeworks
Web
• Dois web frameworks bastante populares são o Flask e o
Bottle.
• Fornecem ferramentas, bibliotecas e tecnologias que
permitem construir uma aplicação Web.
• Esta aplicação poderá ser constituída por um conjunto de
páginas web, um blog, wiki, ou mesmo um website voltado
para o e-commerece, com acesso a bancos de dados.
• Tanto o Flask como o Bottle são parte de uma categoria
desnominada micro-framework.
• Micro-frameworks são usualmente constituídas com pouca
ou nenhuma dependência de bibliotecas externas.
• As vantagens são a leveza e simplicidade, especialmente
quando os requisitos da aplicação são igualmente leves.
• Por outro lado, a desvantagem pode ser que, nos casos em
que a implementação se demonstrar largamente aplicável, a
evolução da aplicação poderá ficar comprometida devido à
necessidade de adicionar plug ins e dependências, ou
mesmo pela limitação de recursos disponíveis.
Construindo um micro-servidor
WEB
• Estão disponíveis microframeworks que permitem
implementar serviços Web de forma rápida
• São apropriados para prototipagem e testes rápidos
• Permitem testar funções, métodos, chamadas e
comandos
• É possível construir rapidamente um serviço usando
um microframework como o Bottle, por exemplo
• O microframework Flask permite construir em
instantes um protótipo para finalidades de testes;
• É possível testar usando a Web pública por meio do
serviço Localtunnel
Um serviço pelo
Microframework Bottle
• Torna possível enviar comandos de GET e POST entre o
aplicativo em Python e a interface com o navegador.
• Neste script é disponibilizado um campo que permite
arbitrar um valor de atraso forçado no timestamp, que
introduz uma forma de simular um atraso temporal para
uma determinada aplicação.
• Este recurso foi empregado com o propósito de
exemplificar como um desvio no timestamp informado
de maneira assíncrona através de um input de usuário
poderia influenciar no processamento da aplicação.
URL REST e a resposta no Cliente/Servidor
Localtunnel
@bottle.route(“/”)
Exemplo de coleta
Automatização
simples de
configuração
• O problema a ser tratado é como automatizar o processo
de configuração de dispositivos em uma rede de tamanho
médio;
• Neste exemplo vamos considerar a rede de tamanho
médio como aquela composta por 500 usuários,
compreendendo 10 switches, switches L3 e dois
roteadores;
• Desta forma, estamos nos referindo a redes compostas
por um determinado número de dispositivos de rede e
cujas configurações podem ser armazenadas em um
repositório central como arquivos texto;
• Uma forma simples de realizar procedimentos de
restauração e reconfiguração é utilizar o próprio Telnet, o
que pode ser feito por meio de um script Python;
Como programar automaticamente roteadores de
forma simples ?
Outras formas e Exemplos
• O SSH pode ser usado ao invés do Telnet para enviar e receber
configurações dos dispositivos de rede
• Digamos que seja necessário fazer de tempos em tempos o backup de
configuração de 80 equipamentos.
• O equipamento fornece suporte apenas para uma aplicação GUI, ou
seja, é preciso entrar em um por um para baixar a configuração.
• Por outro lado, este equipamento oferece a possibilidade de baixar a
configuração através do TFTP porta UDP 69.
• O problema é que não tem aplicação alguma ?
Solução
• Procurar por um código que implemente o protocolo TFTP em UDP
em programa.
• Procurar este programa em Ptyhon.
• Uma vez encontrado, realizar as devidas adaptações e lançar o
programa.
• Voilà.
• Você acabou de automatizar o backup de 80 unidades ao mesmo
tempo ?
Outros problemas
• Temos 4000 pontos de rede
• O cliente reclama que está havendo erro em alguns pontos
• Como encontrar estes pontos ?
• Pense na OID que reporta erro em cada porta de switch
• E aí, você pode mandar varrer estas portas através do acesso ao
switch pela VLAN de gerência (tem que ter esta VLAN).
• O programa faz a interação e monta um mapa das portas com
problemas, por nome de switch e número de porta.
E tem muito mais...
• Tudo é API, certo ?
• O PBX IP envia posts com determinadas informações por meio de APIs
RESTful
• Quem pode receber estes Posts ?
• E em seguida coletar informação e passar adiante para o ... CRM !
• Basta montar um microframework Web com o Bottle e ... isto mesmo,
Python !
Requerimentos
• Python é uma linguagem altamente portável e já está presente
nativamente nas versões instaladas do Debian/Ubuntu/CentOs
• O Python possui duas versões “maiores”, sendo elas a 2.7.X e
as versões 3.6+
• Existem algumas diferenças de sintaxe e bibliotecas entre as
versões. Muitos exemplos existentes podem ser encontrados
na versão 2.7 e poderão não ser executados na versão 3.6+
• Os principais pontos de atenção são as diferenças entre as
versões e estão além do escopo desta apresentação;
• Um dos principais IDEs disponíveis para Python é o Pycharm,
livremente disponível na versão Community
• O requerimento inicial de hardware do Python é mínimo e
todos os exemplos e aplicações aqui apresentados podem ser
executados em um Raspberrian (Raspeberry Pi) !
• Empacotamento de programas Python em executáveis
padrão que funcionam em computadores sem o Python
isntalado: pyinstaller
Algumas ideias/aplicações
Tais máquinas/dispositivos podem exercer o papel de coletadores, armazenadores de dados coletados, analisadores
e atuadores, implementando funções específicas associadas ao gerenciamento de redes.
Uma máquina baseada em Raspberry Pi com 2GB possui requisitos necessários e suficientes para executar operações
complexas compreendendo todas as aplicações associadas às bibliotecas: Scapy, iPerf, Sockets, Pysnmp, etc...
Uma máquina Debian para Python pode empregar com relativa folga a configuração recomendada de 512MB de
memória RAM e 2GB de disco;
Pequenas aplicações Python podem ser instaladas/ativadas sobre máquinas virtuais de capacidade bastante
econômica
Conclusões
• Vimos brevemente o poder da linguagem Python e suas bibliotecas aplicadas aos
usos e necessidades no contexto de redes de comunicação, seja em:
• Simulação, análise e medição de pacotes em uma rede local
• Uso no gerenciamento de redes SNMP em diversas situações
• Na programação de dispositivos de rede
• Comunicação com dispositivos de rede via socket
• Manipulação ágil de arquivos texto e csv resultante de coletas
• Uso eficiente e concomitante com banco de dados NoSQL (como o MongoDB)
• A versatilidade da linguagem, flexibilidade e efetividade tornam o Python a
linguagem ideal para profissionais de rede “não programadores”
• Ideal para profissionais de redes que precisam aprimorar suas técnicas de
gerenciamento e suporte, permitindo de forma rápida que estes construam suas
próprias aplicações ou adaptar aplicações e ferramentas já existentes aos seus
propósitos particulares.
Recursos e Referências
• https://academy.gns3.com/
• https://www.gns3.com/
• http://snmplabs.com/pysnmp/examples/contents.html
• Spinola S., Sergio; Gestão de Contexto Aplicada ao Encaminhamento Adaptativo em Soluções
Convergentes; 2015. Dissertação de Mestrado. Disponível em:
https://pt.slideshare.net/ip10lab/gestao-contexto-qosqoe
• https://www.json.org/
• https://mlab.com/home
Python – por onde começar ?
• Existem diversas plataformas de aprendizado e cursos online na
Internet
• Gratuitos e/ou bastante acessíveis
• Por exemplo, para começar, a própria comunidade Python no Brasil:
• https://python.org.br/introducao/
Perguntas ?
Telnet
Credenciais de Acesso
• Utiliza as credenciais de acesso informadas pelo usuário
• Não é possível realizer o “push” de instruções sem possuir as
credenciais dos sistemas remotos.
• O modelo é “push-based” onde apenas o código necessário passado
para máquinas remotas (Ansible ‘modules’)
• Máquinas remotas não podem ver ou afetar outras máquinas em
termos de configuração .
• Nenhum recurso é consumido quando o Ansible não está
gerenciando.
• Tem sido usado em ambientes de alta segurança e performance.
Exemplos
Implementação de uma extensa atualização ao nível de cluster consistindo de:
• Consulting a configuration/settings repository for information about the involved
• Configuring the base OS on all machines and enforcing desired state
• Identifying a portion of the web application servers to update
• Signaling the monitoring system of an outage window prior to bringing the servers off line
• Signaling load balancers to take the application servers out of a load balanced pool
• Stopping the web application server
• Deploying or updating the web application server code, data, and content
• Starting the web application server
• Running appropriate tests on the new server and code
• Signaling the load balancers to put the application servers back into the load balanced pool
• Signaling the monitoring system to resume alerts on any detected issues on those servers
• Repeating this process for remaining application servers in a rolling update process
• Repeating these rolling update processes for other tiers such as database or content tiers
• Sending email reports and logging as desired when updates are complete
Automação de Operações em Networking
Ferramenta: Ansible
• ARQUITETURA, AGENTES E SEGURANÇA
• Uma das diferenças principais entre o Ansible e outras ferramentas
neste espaço é a sua arquitetura;
• Ansible é uma ferramenta “agentless” que implementa um modelo de
‘push’ - nenhum software precisa ser instalado nas máquinas
remotas para torná-las gerenciáveis
• O Ansible por default gerencia máquinas remotas sobre SSH (Linux)
ou WinRM (Windows), usando os frameworks de gerenciamento
remote já existentes nestas plataformas.
Telnet commands applied
Telnet para OSPF
Extensões
• Os módulos embarcados com o Ansible são implementados em
Python e PowerShell
• Novos módulos podem ser escritos em qualquer linguagem,
requerendo apenas tomar o JSON como entrada e produzir JSON
como saída.
Ansible
Recurso no Youtube
• https://www.youtube.com/watch?v=IhroIrV9_7w
• Automatizando com o Python;exemplo com o Telnet
Automação de Operações em Networking
Ferramenta: Ansible
• ARQUITETURA, AGENTES E SEGURANÇA
• Uma das diferenças principais entre o Ansible e outras ferramentas
neste espaço é a sua arquitetura;
• Ansible é uma ferramenta “agentless” que implementa um modelo de
‘push’ - nenhum software precisa ser instalado nas máquinas
remotas para torná-las gerenciáveis
• O Ansible por default gerencia máquinas remotas sobre SSH (Linux)
ou WinRM (Windows), usando os frameworks de gerenciamento
remote já existentes nestas plataformas.
Credenciais de Acesso
• Utiliza as credenciais de acesso informadas pelo usuário
• Não é possível realizer o “push” de instruções sem possuir as
credenciais dos sistemas remotos.
• O modelo é “push-based” onde apenas o código necessário passado
para máquinas remotas (Ansible ‘modules’)
• Máquinas remotas não podem ver ou afetar outras máquinas em
termos de configuração .
• Nenhum recurso é consumido quando o Ansible não está
gerenciando.
• Tem sido usado em ambientes de alta segurança e performance.
Exemplos
Implementação de uma extensa atualização ao nível de cluster consistindo de:
• Consulting a configuration/settings repository for information about the involved
• Configuring the base OS on all machines and enforcing desired state
• Identifying a portion of the web application servers to update
• Signaling the monitoring system of an outage window prior to bringing the servers off line
• Signaling load balancers to take the application servers out of a load balanced pool
• Stopping the web application server
• Deploying or updating the web application server code, data, and content
• Starting the web application server
• Running appropriate tests on the new server and code
• Signaling the load balancers to put the application servers back into the load balanced pool
• Signaling the monitoring system to resume alerts on any detected issues on those servers
• Repeating this process for remaining application servers in a rolling update process
• Repeating these rolling update processes for other tiers such as database or content tiers
• Sending email reports and logging as desired when updates are complete
Extensões
• Os módulos embarcados com o Ansible são implementados em
Python e PowerShell
• Novos módulos podem ser escritos em qualquer linguagem,
requerendo apenas tomar o JSON como entrada e produzir JSON
como saída.
Ansible
Aprenda
Python
rapidamente
This is an int (signed, 32bits) : 42
This is a long (signed, infinite): 42L
This is a str : "bellx07n" or ’bellx07n’ (" () ’)
This is a tuple (immutable): (1,4,"42")
This is a list (mutable): [4,2,"1"]
This is a dict (mutable): { "one":1 , "two":2 }

Mais conteúdo relacionado

Semelhante a Congresso iii unifacsv3

python_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfpython_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfProfIvanSaboia
 
The zen of python 2010
The zen of python 2010The zen of python 2010
The zen of python 2010Luiz Aldabalde
 
Python para iniciantes
Python para iniciantesPython para iniciantes
Python para iniciantesrichardsonlima
 
Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...
Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...
Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...Affinitas GmbH
 
Trabalho linguagem python
Trabalho linguagem  pythonTrabalho linguagem  python
Trabalho linguagem pythonBruno Maspoli
 
Linguagem de programação darwin
Linguagem de programação darwinLinguagem de programação darwin
Linguagem de programação darwindiokavalan
 
Habilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dadosHabilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dadosJeison Barros
 
Python django7semestre
Python django7semestre Python django7semestre
Python django7semestre Denis Vieira
 
Desenvolvimento web com python e web2py
Desenvolvimento web com python e web2pyDesenvolvimento web com python e web2py
Desenvolvimento web com python e web2pyRelsi Maron
 
Comparando python com outras linguagens de programação
Comparando python com outras linguagens de programaçãoComparando python com outras linguagens de programação
Comparando python com outras linguagens de programaçãoValore I/O
 
Por Que Python - #PUGCE
Por Que Python - #PUGCEPor Que Python - #PUGCE
Por Que Python - #PUGCETiago Freire
 
Aula - Introdução (Curso de Python Básico -- FATEC SENAI MT)
Aula - Introdução (Curso de Python Básico -- FATEC SENAI MT)Aula - Introdução (Curso de Python Básico -- FATEC SENAI MT)
Aula - Introdução (Curso de Python Básico -- FATEC SENAI MT)Filipe Chagas Ferraz
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonPaula Grangeiro
 
Junho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonJunho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonGrupo de Testes Carioca
 
Big data e python como cidadão de primeira classe para sistemas distribuído...
Big data e python como cidadão de primeira classe para sistemas distribuído...Big data e python como cidadão de primeira classe para sistemas distribuído...
Big data e python como cidadão de primeira classe para sistemas distribuído...Victor Godoy Poluceno
 
Apache Flink a Quarta Geração do Big Data
Apache Flink a Quarta Geração do Big DataApache Flink a Quarta Geração do Big Data
Apache Flink a Quarta Geração do Big DataAmbiente Livre
 
TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data
TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data
TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data tdc-globalcode
 

Semelhante a Congresso iii unifacsv3 (20)

python_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfpython_para_desenvolvedores.pdf
python_para_desenvolvedores.pdf
 
The zen of python 2010
The zen of python 2010The zen of python 2010
The zen of python 2010
 
Python para iniciantes
Python para iniciantesPython para iniciantes
Python para iniciantes
 
Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...
Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...
Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...
 
Trabalho linguagem python
Trabalho linguagem  pythonTrabalho linguagem  python
Trabalho linguagem python
 
Linguagem de programação darwin
Linguagem de programação darwinLinguagem de programação darwin
Linguagem de programação darwin
 
Habilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dadosHabilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dados
 
Python django7semestre
Python django7semestre Python django7semestre
Python django7semestre
 
LAMP Server
LAMP ServerLAMP Server
LAMP Server
 
Palestra OSCON 2011
Palestra OSCON 2011Palestra OSCON 2011
Palestra OSCON 2011
 
Desenvolvimento web com python e web2py
Desenvolvimento web com python e web2pyDesenvolvimento web com python e web2py
Desenvolvimento web com python e web2py
 
Comparando python com outras linguagens de programação
Comparando python com outras linguagens de programaçãoComparando python com outras linguagens de programação
Comparando python com outras linguagens de programação
 
Por Que Python - #PUGCE
Por Que Python - #PUGCEPor Que Python - #PUGCE
Por Que Python - #PUGCE
 
Aula - Introdução (Curso de Python Básico -- FATEC SENAI MT)
Aula - Introdução (Curso de Python Básico -- FATEC SENAI MT)Aula - Introdução (Curso de Python Básico -- FATEC SENAI MT)
Aula - Introdução (Curso de Python Básico -- FATEC SENAI MT)
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em python
 
Junho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonJunho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em python
 
Big data e python como cidadão de primeira classe para sistemas distribuído...
Big data e python como cidadão de primeira classe para sistemas distribuído...Big data e python como cidadão de primeira classe para sistemas distribuído...
Big data e python como cidadão de primeira classe para sistemas distribuído...
 
Apache Flink a Quarta Geração do Big Data
Apache Flink a Quarta Geração do Big DataApache Flink a Quarta Geração do Big Data
Apache Flink a Quarta Geração do Big Data
 
TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data
TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data
TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data
 

Mais de IP10

Negacionismo e populismo
Negacionismo  e  populismoNegacionismo  e  populismo
Negacionismo e populismoIP10
 
Tratado do negacionismo
Tratado do negacionismoTratado do negacionismo
Tratado do negacionismoIP10
 
Gestao contexto qos_qoe
Gestao contexto qos_qoeGestao contexto qos_qoe
Gestao contexto qos_qoeIP10
 
Razões para Migrar o PBX
Razões para Migrar o PBXRazões para Migrar o PBX
Razões para Migrar o PBXIP10
 
Introdução à Telefonia IP
Introdução à Telefonia IPIntrodução à Telefonia IP
Introdução à Telefonia IPIP10
 
Spectralink ip dect-server400_prdctover_final_100213
Spectralink ip dect-server400_prdctover_final_100213Spectralink ip dect-server400_prdctover_final_100213
Spectralink ip dect-server400_prdctover_final_100213IP10
 
Avaya ipo5000 r9
Avaya ipo5000 r9Avaya ipo5000 r9
Avaya ipo5000 r9IP10
 
Anamnese para um projeto de telefonia ip
Anamnese para um projeto de telefonia ipAnamnese para um projeto de telefonia ip
Anamnese para um projeto de telefonia ipIP10
 
Telefonia IP
Telefonia IPTelefonia IP
Telefonia IPIP10
 
Conceitos e Fundamentos da Telefonia IP
Conceitos e Fundamentos da Telefonia IPConceitos e Fundamentos da Telefonia IP
Conceitos e Fundamentos da Telefonia IPIP10
 
Fundamentos da Telefonia IP
Fundamentos da Telefonia IPFundamentos da Telefonia IP
Fundamentos da Telefonia IPIP10
 
Guia axis
Guia axisGuia axis
Guia axisIP10
 
Guia vo ip 02
Guia vo ip 02Guia vo ip 02
Guia vo ip 02IP10
 

Mais de IP10 (13)

Negacionismo e populismo
Negacionismo  e  populismoNegacionismo  e  populismo
Negacionismo e populismo
 
Tratado do negacionismo
Tratado do negacionismoTratado do negacionismo
Tratado do negacionismo
 
Gestao contexto qos_qoe
Gestao contexto qos_qoeGestao contexto qos_qoe
Gestao contexto qos_qoe
 
Razões para Migrar o PBX
Razões para Migrar o PBXRazões para Migrar o PBX
Razões para Migrar o PBX
 
Introdução à Telefonia IP
Introdução à Telefonia IPIntrodução à Telefonia IP
Introdução à Telefonia IP
 
Spectralink ip dect-server400_prdctover_final_100213
Spectralink ip dect-server400_prdctover_final_100213Spectralink ip dect-server400_prdctover_final_100213
Spectralink ip dect-server400_prdctover_final_100213
 
Avaya ipo5000 r9
Avaya ipo5000 r9Avaya ipo5000 r9
Avaya ipo5000 r9
 
Anamnese para um projeto de telefonia ip
Anamnese para um projeto de telefonia ipAnamnese para um projeto de telefonia ip
Anamnese para um projeto de telefonia ip
 
Telefonia IP
Telefonia IPTelefonia IP
Telefonia IP
 
Conceitos e Fundamentos da Telefonia IP
Conceitos e Fundamentos da Telefonia IPConceitos e Fundamentos da Telefonia IP
Conceitos e Fundamentos da Telefonia IP
 
Fundamentos da Telefonia IP
Fundamentos da Telefonia IPFundamentos da Telefonia IP
Fundamentos da Telefonia IP
 
Guia axis
Guia axisGuia axis
Guia axis
 
Guia vo ip 02
Guia vo ip 02Guia vo ip 02
Guia vo ip 02
 

Congresso iii unifacsv3

  • 1. Salvador, 19 de Setembro de 2018 III Congresso de TI Unifacs AMPLIANDO OS HORIZONTES DOS PROFISSIONAIS DE REDES ATRAVÉS DO PYTHON Sergio Sampaio Spinola 1
  • 2. Roteiro e uma Pergunta E agora ? Profissionais de Redes precisam saber programar ? O que é e onde se encontra o Python O que é Python Networking O poder das Bibliotecas: Scapy, Pysnmp, PyMongo, iPerf, Socket, Microframeworks: Bottle, Flask O que é JSON, YAML, RESTful... Plataformas de Experimentação: o GNS-3 Obtendo dados de gerenciamento: SNMP Exemplos de Usos e Aplicações
  • 3. Por que programar ? • Programar hoje está ao alcance de todos • Existem vários domínios e aplicações • Aplicações WEB, sistemas empresariais, sistemas financeiros de transações, sistemas de comércio eletrônico, aplicações bancárias, sistemas corporativos diversos, do RH ao Financeiro, Ciência de Dados, Inteligência Artificial e NLP, assim como uma multitude de Sistemas. • E, existe sim, o universo da programação voltada para Redes !
  • 4. E Por quê ? • O mundo está virando quase que totalmente Software ! • Boa parte do mundo está indo para a Nuvem: • Em breve pouco restará ao alcance de nossas mãos em termos de hardware, com exceção de hardwares de acesso simples e estações de usuário, que irão requerer ações de service desk/help desk de nível básico. • Enquanto isto, e por causa disto tudo, a gerência e o monitoramento tornam-se bem mais importantes, assim com sua automação • Acesso a todos os itens e recursos em Nuvem podem e estão e até mesmo recomenda-se que sejam acessados por meio de APIs • É o mundo da API, pessoal !
  • 5. O que é Python Datando de 1991, a linguagem de programação Python tem sido considerada um preenchedor de gaps, uma forma de automatizar tarefas costumeiras ou para rapidamente construir protótipos de aplicações que poderiam então ser implementadas em outras linguagens. Ao longo dos anos o Python emergiu como uma linguagem de primeira linha aplicada ao desenvolvimento de software, gerenciamento de infraestrutura e análise de dados, tornando-se uma força consistente no mundo das aplicações web e gerenciamento de sistemas. Evoluiu ao ponto de tornar-se um elemento chave na elaboração de software na análise de big data e inteligência de máquina, servindo a múltiplos propósitos com eficiência.
  • 6. Python (de Monty Python) Criada por Guido Van Rossum (*) • Versões mais difundidas (2.7.X e 3.X), destaca-se em ciência de dados, machine learning, automação de sistemas, web, desenvolvimento de APIs e além • “The Zen of Python” • Irreverência, abstração, cultura, “alto nível”
  • 7. O que é uma API ? • API é um acrônimo para Application Programming Interface, que é um intermediário de software que permite que duas aplicações se falem. • Algo que pode ser chamado a partir de um pequeno programa, como um script. • Desta forma, a partir de um simples script podemos realizar operações ponderosas e precisamos apenas saber sobre a API, quanto custa e como fazer o seu chamamento. • É aí que o Python entra em cena e por isto que é muitas vezes chamado de linguagem de “cola”.
  • 8. O Mundo das APIs
  • 9. Aceitação da Linguagem Python, Mitos e Verdades Largamente adotada e suportada Bastante popular e cada vez mais usada entre os não versados em programação e desenvolvimento de sistemas, propria para aprendizado até por crianças Linguagem interpretada, portanto de baixo desempenho quando comparada com Java e C++, não orientada a objetos, não apropriada prara grandes sisitemas e programação Web. Conta com um grande conjunto de bibliotecas, libraries e serviços API, um dos pilares que a tornam extremamente poderosa Python possui um compromisso entre desempenho e versatilidade, mas tudo é uma questão de contexto !
  • 11. Usos do Python • No mundo das redes um uso mais imediato e bastante comum é como linguagem de script em substituição ao bash script • Implementa scritps poderosos que propiciam a automatização de variadas tarefas rotineiras aplicadas ao cenário de dispositivos de Networking, como o salvamento de configurações. • Mas vai muito além de um substituto para shell scripts e bacthes. • É também usada para automatizar o provisionamento de sistemas e interagir com sistemas de provisionamento e configuração. • Possui uma forte familiaridade com o formato de representação de dados JSON e interage de forma direta, simples e fácil com APIs RESTful.
  • 12. Que linguagem é a melhor ? Esta resposta depende tão somente do contexto, do propósito e de quem usa. Qual o nível de experiência e envolvimento do profissional com programação ? A que se destina ? Sistema Corporativo, Financeiro, ERP, Enterprise, E-Commerce, Banco de Dados, Nuvem, Big Data, Data Science, Networking, Web ... ? A atividade de programação é a sua atividade fim ou o meio ? Trabalha sozinho, em equipe, grupo, dupla... ? Para resolver problemas pontuais e localizados ou um grande sistema financeiro e de pagamentos integrado ?
  • 13. Comparações entre Python e Java • Existem muitas comparações entre Python e Java, como por exemplo: https://www.educba.com/java-vs-python/
  • 14. Comparações: pontos que se destacam Java requer mais linhas de código em comparação a Python Python é bastante amigável com o formato de dados JSON e possui facilidades para chamar APIs RESTful Enquanto o Java requer o uso do símbolo “;” o Python requer a obediência estrita somente à indentação Em Java você precisa declarar cada tipo de dados, já em Python a tipagem é dinâmica, porém forte. Python é reconhecidamente mais fácil e menos verbosa do ponto de vista do programador eventual Os códigos em Python são mais fáceis de entender (legibilidade) à primeira vista
  • 15. Java versus Python: Compilada versus Interpretada
  • 16. Curva de Aprendizado • “Python é fácil de aprender e usar” • Requer um investimento em tempo e esforço relativamente pequeno para produzir os primeiros programas. • A sintaxe do Python foi projetada para privilegiar a legibilidade e a objetividade. • Possui uma quantidade substancial de bibliotecas para manipulação de pacotes de redes e serviços de rede. • Esta simplicidade tem tornado o Python uma linguagem largamente adotada para o ensino de programação de crianças e jovens, permitindo que novatos a adotem rapidamente. • A ideia de fundo é que os desenvolvedores gastem mais tempo pensando no problema a ser resolvido e menos tempo debruçados sobre a complexidade da linguagem ou decifrando o Código de terceiros.
  • 17.
  • 18. Ciência de Dados e Machine Learning Análises de dados sofisticadas têm se tornado uma das áreas onde a linguagem Python tem sido bastante adotada. O Natural Language Processing tem sido bastante empregado e a linguagem conta com variadas bibliotecas que tornam a implementação muito mais fácil, rápida e objetiva. A vasta maioria das bibliotecas usadas para data science ou machine learning possuem interfaces Python, tornando esta linguagem a mais popular em termos de interface de alto nível para bibliotecas de machine learning As bibliotecas nativas Python e web web frameworks de terceiros fornecem fomars de criar desde REST APIs em poucas linhas até sites direcionados a dados. As versões mais recentes suportam fortemente operações assíncronas, permitindo que sites manipulem dezenas de milhares de requisições por Segundo aplicando as bibliotecas adequadas.
  • 19. Tipagem dinâmica • Referenciando especificamente o Python para explicar a questão: Tipagem dinâmica significa que o próprio interpretador do Python infere o tipo dos dados que uma variável recebe, sem a necessidade que você, o usuário da linguagem diga de que tipo determinada variável é. Exemplo de um script Python: http://blog.abraseucodigo.com.br/python-uma-linguagem-de-tipagem-dinamica-e-forte.html
  • 20. Sem blocos delimitadores, a indentação importa
  • 21. O que é “Python Networking” • O ferramental Python exerce um papel essencial em network programming. • A Biblioteca padrão Python possui suporte completo a protocolos de rede, codificação de decodificação de dados e outros conceitos de programação, implementados de uma forma mais simples que outras linguagens. • Um socket é o end-point em um fluxo de comunicação entre dois programas ou canais de comunicação que operam sobre uma rede e são criados usando socket API (Application Programming Interface). • É possível operar diretamentre sobre os pacotes UDP e TCP • A biblioteca Scapy permite até mesmo editar o conteúdo dos pacotes de rede em camada 2 e 3. https://www.w3schools.in/python-tutorial/network-programming/
  • 22. Manipulação de arquivos do tipo texto • A linguagem possui bibliotecas que permitem lidar facilmente com dados gerados em CSV ou mesmo aqueles dispostos em um arquivo texto • O Python oferece variados recursos de “regex” tornando extremamente simples e direto “pinçar”, filtrar, alterar, trocar e remover informações em arquivos de texto comuns. • Estes recursos permitem localizar a informação relevante em meio a variados tipos de dados do tipo texto produzidos por equipamentos diversos, tais como bilhetes, logs genéricos em texto, syslog, registros em CSV e outras informações produzidas e oferecidas no formato de texto, inclusive e-mail.
  • 23. Os Sockets e o Python Sockets permitem a comunicação entre dois diferentes processos na mesma máquina ou em máquinas diferentes. É uma forma de computadores se comunicarem usando um file descriptor. Para o programador um socket se parece e se comporta como um file descriptor de baixo nível. Desta forma, comandos como read() e write() funcionam com sockets da mesma forma que arquivos e pipes.
  • 24. + ◊ Canal não-confiável Host: 138.36.95.240 Host: 137.37.58.250 Processo CLIENTE Processo SERVIDOR D D D D D roteador datagrama Sockets UDP
  • 25. + ◊ Canal confiável Host: 138.36.95.240 Host: 137.37.58.250 Stream de saída Stream de entrada Processo Processo SERVIDOR 3 2 1 CLIENTE 4 1 roteador Segmento TCP 3 Sockets TCP: Canal Confiável
  • 26. Exemplo de uso de Sockets Problema: “Coletar os bilhetes SMDR gerados em uma central telefônica IP, gravar em um arquivo e posteriormente fazer filtragem, seleção e elaborar estatísticas acerca das ligações efetuadas e recebidas” Solução: uma aplicação Python que cria um socket que estabelece a conexão TCP através de uma porta pré-determinada, adquire os dados em um buffer e apensa os dados em um arquivo texto. Uma segunda aplicação faz a leitura dos dados, separa os valores, realiza a filtragem dos dados relevantes e armazena em um banco de dados NoSQL, isto é, baseado em documentos, (e.g., MongoDB).
  • 27. Leitura de Bilhetes de uma Central IP Office
  • 28. Bilhetes SMDR Station Message Detail Recording • O equipamento envia os bilhetes que são coletados por uma rotina escrita em Python, por meio de socket, e um arquivo de Log é Gerado. • Em seguida uma rotina adicional em Python faz o “parsing” do arquivo de bilhetes e realiza-se uma filtragem e o armazenamento das variáveis de interesse em banco de dados para análise posterior.
  • 29. Aplicação em Gerenciamento SNMP • Protocolo largamente utilizado em ambientes de redes • Funciona no modelo gerente-agente • Baseado em Polling e/ou Trap através de portas específicas • Aplicável ao gerenciamento de: • Hosts genéricos Linux • Switches • Roteadores • Impressoras inteligentes • Firewalls • Appliances de rede de usos diversos
  • 30. 30 Como se faz o Polling de um Objeto SNMP GET
  • 31. Exemplo: Leitura de Objetos (OIDs) via SNMP diretamente • Plataformas e Softwares de gerenciamento são capazes de realizar todas as leituras de dados que podem ser obtidos através de comandos de GET do SNMP, e aquisição das variáveis MIBs, definidas pelos respectivos OIDs. • Problema: “Queremos coletar apenas um determinado conjunto restrito de variáveis e sinalizar alarmes específicos acerca de determinadas OIDs sem necessidade de instalar um sistema completo de gerenciamento de redes.” • Em outras palavras: não quero instalar o Nagios, ou o Cacti, ou o Zabbix, ou PRTG, WhatsUp, Solarwinds... • Solução: Utilizando a biblioteca PySNMP é possível fazer a leitura de qualquer OID desejada, sobre qualquer dispositivo, realizar a inferência necessária, armazenar em banco de dados e gerar alarmes baseados em thresholds”
  • 32. Leitura de objetos do Asterisk
  • 34. O que fazer com os dados ? • Você escolhe ! • Pode enviar para um banco de dados, como o MongoDB, por exemplo e deixar os dados à disposição de algum outro sistema de monitoramento, ou; • Pode utilizar um biblioteca que permite encaminhar notificações para o Telegram: • from telegram.ext import Updater, InlineQueryHandler, CommandHandler • Evidentemente, você pode enviar um e-mail com o alerta. Claro, existe uma biblioteca que permite enviar e receber e-mails através do Python.
  • 35. Representação de Dados: JSON • Desde sua introdução JSON (Java Script Object Notation) tem se tornado rapidamente um padrão de fato para troca de informações. • Vários recursos estão disponíveis em termos de APIs e armazenamento de dados em uma base de documentos (NoSQL). • Python suporta JSON nativamente ! • É uma representação que favorece a legibilidade • Implementada, por exemplo, nas bibliotecas iperf e scapy • Utilizada em APIs REST, amplamente utilizadas entre dispositivos de rede, inclusive SDN • Onde mais existe ? Ora, toda a descrição de dados nos serviços AWS da Amazon adota a notação JSON !
  • 36. Comparação JSON e XML https://www.json.org/xml.html https://codebeautify.org/jsontoxml#copy
  • 41. Um cenário de experimentação 41  Dmúltiplas chamadas escrição: Dispositivos IP realizam de voz, progressivas e variáveis, em ambiente de telefonia IP, com protocolo SIP, para um Server (PBX) com duração de 20 segundos cada. Context Database DBaaS MongoDB
  • 42. Exemplo: Simulação e Controle de Chamadas VoIP 42 MOS e R- Factor Leituras de QoS Codec IP e porta destino Chamadas Simultâneas Payload RTP Grava o arquivo em csv!
  • 43. Rotinas executadas em Python 1) Leitura do arquivo csv criado pelo Software Startrinity 2) Filtragem dos dados coletados 3) Preparação dos dados em JSON 4) Conexão ao banco de dados MongoDB 5) Escrita no Banco de Dados 6) Polling do estado da variável no Banco de Dados MongoDB em nuvem, filtragem e geração de alarmes 7) Reconfiguração do iptables provocada pelo alarme
  • 44. Representações de dados de contexto em tempo real 44
  • 45. Cenário: Comportamento Filas x Ligações Simultâneas x MOS x Codec G.711 45
  • 47. Bibliotecas /Ferramentas: iPerf/iPerf3 iPerf3 é uma ferramenta para medições ativas acerca da máxima banda alcançável em redes IP. Suporta vários parâmetros de ajuste relacionados a “timing”, buffers e protocolos (TCP, UDP, SCTP with IPv4 and IPv6). Para cada teste é reportada a banda, perda e outros parâmetros.
  • 48. Features do Iperf • iPerf features • TCP and SCTP • Medição de banda • Reporta MSS/MTU size e tamanhos de leitura observados. • Suporte para tamanho de janela TCP. • UDP • Cliente pode criar UDP streams de banda especificada. • Mede perda de pacotes • Mede delay jitter • Capaz de Multicast
  • 50. Trabalhando com Simuladores Simuladores de Rede atuais permitem emular redes reais e simular ambientes plenamente operacionais Possibilitam simular o ambiente real previamente à instalação, permitindo analisar, prever e aplicar adequações Um exemplo é o GNS-3, uma ferramenta poderosa que permite simular ambientes com roteadores com alto grau de complexidade Funciona com a imagem dos roteadores Permite a captura e análise de pacotes e interação com o ambiente externo, ou seja, sua rede local ou Internet Permite interagir com máquinas virtuais
  • 54. Descoberta dos Vizinhos por Roteador (ID e IP)
  • 55. E o desenho de uma topologia...
  • 56. Scapy Scapy é um programa Python que permite ao usuário enviar, fazer o sniff, dissecar e forjar pacotes de rede. Estas capacidades permitem a construção de ferramentas que podem agir como probe, realizar o scan ou simular ataques. A ferramenta Scapy é um programa poderoso que permite a manipulação interativa com pacotes. Permite forjar e decodificar pacotes de uma variedade grande de protocolos, enviá-los, capturá-los, casar requerimentos e respostas. Scapy pode facilmente lidar com tarefas típicas tais como scanning, tracerouting, probing, unit tests, ataques ou descoberta de rede. Pode substituir hping, arpspoof, arp-sk, arping, e parcialmente o Nmap, tcpdump e tshark. Pode ser incorporado a um programa em Python.
  • 57. Usando o Scapy No Scapy usamos a função sniff() para capturar pacotes de rede lsc() mostra a lista de comandos disponíveis. ls() mostra todos os protocolos suportados ls(protocol) permite visualizar todos os campos default para qualquer protocol Visualizar as camadas de pacotes com a função .summary() Visualizar os conteúdos dos pacotes com a função .show() Aprofundar em uma camada específica do pacote: pkts[3][2].summary()... onde o primeiro índice define um pacote dentre uma lista de pkts e o segundo aponta para uma camada daquele pacote específico. Usando o método .command() packet irá devolver uma string de commandos necessários para recriar o pacote resultante da operação de sniff
  • 58. Exemplos • Welcome to Scapy (2.2.0) • >>> send(IP(dst="10.1.99.2")/ICMP()/"HelloWorld") • Sent 1 packets. • >>> • Envio de um endereço “spoofed” • send(IP(src="10.1.99.100", dst="10.1.99.2")/ICMP()/"HelloWorld")
  • 60. Envio de pacotes para diferentes portas • >>> p=sr(IP(dst="10.1.99.2")/TCP(dport=[23,80,53])) • Begin emission: • .**Finished to send 3 packets. • * • Received 4 packets, got 3 answers, remaining 0 packets • >>>
  • 61. Efetuando um SYN Scan • >>> p=sr(IP(dst="10.1.99.2")/TCP(sport=666,dport=[22,80,21,443], flags="S")) • Begin emission: • ***Finished to send 4 packets. • * • Received 4 packets, got 4 answers, remaining 0 packets • >>> p • (<Results: TCP:4 UDP:0 ICMP:0 Other:0>, <Unanswered: TCP:0 UDP:0 ICMP:0 Other:0>) • >>> ans,unans=_ • >>> ans.summary() • IP / TCP 10.1.99.25:666 > 10.1.99.2:ssh S ==> IP / TCP 10.1.99.2:ssh > 10.1.99.25:666 SA / Padding • IP / TCP 10.1.99.25:666 > 10.1.99.2:http S ==> IP / TCP 10.1.99.2:http > 10.1.99.25:666 SA / Padding • IP / TCP 10.1.99.25:666 > 10.1.99.2:ftp S ==> IP / TCP 10.1.99.2:ftp > 10.1.99.25:666 RA / Padding • IP / TCP 10.1.99.25:666 > 10.1.99.2:https S ==> IP / TCP 10.1.99.2:https > 10.1.99.25:666 RA / • Padding • >>>
  • 62. Um código Python com sniffing • Configurar a interface em modo promíscuo • Inicializa os contadores e o timeout • Define os protocolos a serem filtrados • Permite definir um nome para o arquivo de log • Grava os dados de interesse coletados no arquivo de log
  • 63. + REST – Representational State Transfer Um estilo de arquitetura que fornece padrões entre sistemas de computação na Web tornando mais fácil a sua comunicação Sistemas REST-compliant são frequentemente denominados RESTful systems, caracterizados por serem stateless e separam as atribuições do cliente e servidor Uma REST API define um conjunto de funções no qual desenvolvedores podem realizer requerimentos e receber respostas através do protocol HTTP, como um GET e POST Em outras palavras, propicia a implementação de APIs em que a informação é enviada e recebida como texto em uma URL
  • 64. + Separação do Cliente e Servidor No estilo REST a implementação do cliente e do servidor pode ser feita independentemente sem que um conheça o outro. Cada lado precisa conhecer apenas o formato das mensagens de envio de um para outro, podendo serem mantidos modulares e separados. Provê a separação da preocupação com a interface de usuário em relação ao armazenamento de dados, aumentando a flexibilidade da interface e ampliando a escalabilidade. O propósito é que ao utilizar a interface REST interface, clientes diferentes alcançam os mesmos endpoints REST, realizam as mesmas ações e recebem as mesmas respostas.
  • 65. Statelessness No paradigma REST o servidor não precisa saber nada acerca do estado do cliente e vice-versa. Servidor e Cliente podem entender qualquer mensagem recebida, mesmo desconhecendo mensagens anteriores. Esta restrição é determinada pelo uso de recursos ao invés de comandos e que são os substantivos da Web – descrevem qualquer objeto , documento, ou coisa que precisa ser armazenada ou enviada para outros serviços. Interação através de operações e recursos padrão, não dependem da implementação de interfaces. Visa a confiabilidade, desempenho e escalabilidade, de tal forma que os componentes possam ser gerenciados, atualizados e reusados sem afetar o Sistema como um todo.
  • 66. Requisições e “Verbos” REST requer que um cliente faça uma requisição ao servidor de forma a recuperar ou modificar dados em um servidor, sendo emm geral composto de: • HTTP verb, que define o tipo de operação a ser realizada • Um cabeçalho, que permite ao cliente passar informação adianta sobre o requerimento • Caminho de um recurso • Mensagem opcional 4 HTTP verbs básicos são utilizaods em requerimentos para interagir com recursos em um Sistema REST: GET — recupera um recursos específico (pelo id) ou uma coleção de recursos POST — cria um novo recurso PUT — atualiza um recurso específico (por id) DELETE — remove um recurso específico por id
  • 67. Exemplo Através de uma API REST é realiza a consulta a um serviço de consulta a números de telefones disponíveis como em um catálogo telefônico: Opencnam, www.opencnam.com; A informação é disponibilizada através do envio de URIs devidamente preenchidas, no formato de API REST, compreendendo por exemplo a consulta de um número de telefone específico: +15551234567 O envio desta URL devidamente preenchida deve retornar dados em formato JSON, onde o nome do contato é “SAMPLE”.
  • 69. URL, Query e Resposta JSON
  • 72. Microframeworks Web • Dois web frameworks bastante populares são o Flask e o Bottle. • Fornecem ferramentas, bibliotecas e tecnologias que permitem construir uma aplicação Web. • Esta aplicação poderá ser constituída por um conjunto de páginas web, um blog, wiki, ou mesmo um website voltado para o e-commerece, com acesso a bancos de dados. • Tanto o Flask como o Bottle são parte de uma categoria desnominada micro-framework. • Micro-frameworks são usualmente constituídas com pouca ou nenhuma dependência de bibliotecas externas. • As vantagens são a leveza e simplicidade, especialmente quando os requisitos da aplicação são igualmente leves. • Por outro lado, a desvantagem pode ser que, nos casos em que a implementação se demonstrar largamente aplicável, a evolução da aplicação poderá ficar comprometida devido à necessidade de adicionar plug ins e dependências, ou mesmo pela limitação de recursos disponíveis.
  • 73. Construindo um micro-servidor WEB • Estão disponíveis microframeworks que permitem implementar serviços Web de forma rápida • São apropriados para prototipagem e testes rápidos • Permitem testar funções, métodos, chamadas e comandos • É possível construir rapidamente um serviço usando um microframework como o Bottle, por exemplo • O microframework Flask permite construir em instantes um protótipo para finalidades de testes; • É possível testar usando a Web pública por meio do serviço Localtunnel
  • 74. Um serviço pelo Microframework Bottle • Torna possível enviar comandos de GET e POST entre o aplicativo em Python e a interface com o navegador. • Neste script é disponibilizado um campo que permite arbitrar um valor de atraso forçado no timestamp, que introduz uma forma de simular um atraso temporal para uma determinada aplicação. • Este recurso foi empregado com o propósito de exemplificar como um desvio no timestamp informado de maneira assíncrona através de um input de usuário poderia influenciar no processamento da aplicação.
  • 75.
  • 76. URL REST e a resposta no Cliente/Servidor Localtunnel
  • 79. Automatização simples de configuração • O problema a ser tratado é como automatizar o processo de configuração de dispositivos em uma rede de tamanho médio; • Neste exemplo vamos considerar a rede de tamanho médio como aquela composta por 500 usuários, compreendendo 10 switches, switches L3 e dois roteadores; • Desta forma, estamos nos referindo a redes compostas por um determinado número de dispositivos de rede e cujas configurações podem ser armazenadas em um repositório central como arquivos texto; • Uma forma simples de realizar procedimentos de restauração e reconfiguração é utilizar o próprio Telnet, o que pode ser feito por meio de um script Python;
  • 80. Como programar automaticamente roteadores de forma simples ?
  • 81. Outras formas e Exemplos • O SSH pode ser usado ao invés do Telnet para enviar e receber configurações dos dispositivos de rede • Digamos que seja necessário fazer de tempos em tempos o backup de configuração de 80 equipamentos. • O equipamento fornece suporte apenas para uma aplicação GUI, ou seja, é preciso entrar em um por um para baixar a configuração. • Por outro lado, este equipamento oferece a possibilidade de baixar a configuração através do TFTP porta UDP 69. • O problema é que não tem aplicação alguma ?
  • 82. Solução • Procurar por um código que implemente o protocolo TFTP em UDP em programa. • Procurar este programa em Ptyhon. • Uma vez encontrado, realizar as devidas adaptações e lançar o programa. • Voilà. • Você acabou de automatizar o backup de 80 unidades ao mesmo tempo ?
  • 83. Outros problemas • Temos 4000 pontos de rede • O cliente reclama que está havendo erro em alguns pontos • Como encontrar estes pontos ? • Pense na OID que reporta erro em cada porta de switch • E aí, você pode mandar varrer estas portas através do acesso ao switch pela VLAN de gerência (tem que ter esta VLAN). • O programa faz a interação e monta um mapa das portas com problemas, por nome de switch e número de porta.
  • 84. E tem muito mais... • Tudo é API, certo ? • O PBX IP envia posts com determinadas informações por meio de APIs RESTful • Quem pode receber estes Posts ? • E em seguida coletar informação e passar adiante para o ... CRM ! • Basta montar um microframework Web com o Bottle e ... isto mesmo, Python !
  • 85. Requerimentos • Python é uma linguagem altamente portável e já está presente nativamente nas versões instaladas do Debian/Ubuntu/CentOs • O Python possui duas versões “maiores”, sendo elas a 2.7.X e as versões 3.6+ • Existem algumas diferenças de sintaxe e bibliotecas entre as versões. Muitos exemplos existentes podem ser encontrados na versão 2.7 e poderão não ser executados na versão 3.6+ • Os principais pontos de atenção são as diferenças entre as versões e estão além do escopo desta apresentação; • Um dos principais IDEs disponíveis para Python é o Pycharm, livremente disponível na versão Community • O requerimento inicial de hardware do Python é mínimo e todos os exemplos e aplicações aqui apresentados podem ser executados em um Raspberrian (Raspeberry Pi) ! • Empacotamento de programas Python em executáveis padrão que funcionam em computadores sem o Python isntalado: pyinstaller
  • 86. Algumas ideias/aplicações Tais máquinas/dispositivos podem exercer o papel de coletadores, armazenadores de dados coletados, analisadores e atuadores, implementando funções específicas associadas ao gerenciamento de redes. Uma máquina baseada em Raspberry Pi com 2GB possui requisitos necessários e suficientes para executar operações complexas compreendendo todas as aplicações associadas às bibliotecas: Scapy, iPerf, Sockets, Pysnmp, etc... Uma máquina Debian para Python pode empregar com relativa folga a configuração recomendada de 512MB de memória RAM e 2GB de disco; Pequenas aplicações Python podem ser instaladas/ativadas sobre máquinas virtuais de capacidade bastante econômica
  • 87. Conclusões • Vimos brevemente o poder da linguagem Python e suas bibliotecas aplicadas aos usos e necessidades no contexto de redes de comunicação, seja em: • Simulação, análise e medição de pacotes em uma rede local • Uso no gerenciamento de redes SNMP em diversas situações • Na programação de dispositivos de rede • Comunicação com dispositivos de rede via socket • Manipulação ágil de arquivos texto e csv resultante de coletas • Uso eficiente e concomitante com banco de dados NoSQL (como o MongoDB) • A versatilidade da linguagem, flexibilidade e efetividade tornam o Python a linguagem ideal para profissionais de rede “não programadores” • Ideal para profissionais de redes que precisam aprimorar suas técnicas de gerenciamento e suporte, permitindo de forma rápida que estes construam suas próprias aplicações ou adaptar aplicações e ferramentas já existentes aos seus propósitos particulares.
  • 88. Recursos e Referências • https://academy.gns3.com/ • https://www.gns3.com/ • http://snmplabs.com/pysnmp/examples/contents.html • Spinola S., Sergio; Gestão de Contexto Aplicada ao Encaminhamento Adaptativo em Soluções Convergentes; 2015. Dissertação de Mestrado. Disponível em: https://pt.slideshare.net/ip10lab/gestao-contexto-qosqoe • https://www.json.org/ • https://mlab.com/home
  • 89. Python – por onde começar ? • Existem diversas plataformas de aprendizado e cursos online na Internet • Gratuitos e/ou bastante acessíveis • Por exemplo, para começar, a própria comunidade Python no Brasil: • https://python.org.br/introducao/
  • 92. Credenciais de Acesso • Utiliza as credenciais de acesso informadas pelo usuário • Não é possível realizer o “push” de instruções sem possuir as credenciais dos sistemas remotos. • O modelo é “push-based” onde apenas o código necessário passado para máquinas remotas (Ansible ‘modules’) • Máquinas remotas não podem ver ou afetar outras máquinas em termos de configuração . • Nenhum recurso é consumido quando o Ansible não está gerenciando. • Tem sido usado em ambientes de alta segurança e performance.
  • 93. Exemplos Implementação de uma extensa atualização ao nível de cluster consistindo de: • Consulting a configuration/settings repository for information about the involved • Configuring the base OS on all machines and enforcing desired state • Identifying a portion of the web application servers to update • Signaling the monitoring system of an outage window prior to bringing the servers off line • Signaling load balancers to take the application servers out of a load balanced pool • Stopping the web application server • Deploying or updating the web application server code, data, and content • Starting the web application server • Running appropriate tests on the new server and code • Signaling the load balancers to put the application servers back into the load balanced pool • Signaling the monitoring system to resume alerts on any detected issues on those servers • Repeating this process for remaining application servers in a rolling update process • Repeating these rolling update processes for other tiers such as database or content tiers • Sending email reports and logging as desired when updates are complete
  • 94. Automação de Operações em Networking Ferramenta: Ansible • ARQUITETURA, AGENTES E SEGURANÇA • Uma das diferenças principais entre o Ansible e outras ferramentas neste espaço é a sua arquitetura; • Ansible é uma ferramenta “agentless” que implementa um modelo de ‘push’ - nenhum software precisa ser instalado nas máquinas remotas para torná-las gerenciáveis • O Ansible por default gerencia máquinas remotas sobre SSH (Linux) ou WinRM (Windows), usando os frameworks de gerenciamento remote já existentes nestas plataformas.
  • 97. Extensões • Os módulos embarcados com o Ansible são implementados em Python e PowerShell • Novos módulos podem ser escritos em qualquer linguagem, requerendo apenas tomar o JSON como entrada e produzir JSON como saída.
  • 99. Recurso no Youtube • https://www.youtube.com/watch?v=IhroIrV9_7w • Automatizando com o Python;exemplo com o Telnet
  • 100. Automação de Operações em Networking Ferramenta: Ansible • ARQUITETURA, AGENTES E SEGURANÇA • Uma das diferenças principais entre o Ansible e outras ferramentas neste espaço é a sua arquitetura; • Ansible é uma ferramenta “agentless” que implementa um modelo de ‘push’ - nenhum software precisa ser instalado nas máquinas remotas para torná-las gerenciáveis • O Ansible por default gerencia máquinas remotas sobre SSH (Linux) ou WinRM (Windows), usando os frameworks de gerenciamento remote já existentes nestas plataformas.
  • 101. Credenciais de Acesso • Utiliza as credenciais de acesso informadas pelo usuário • Não é possível realizer o “push” de instruções sem possuir as credenciais dos sistemas remotos. • O modelo é “push-based” onde apenas o código necessário passado para máquinas remotas (Ansible ‘modules’) • Máquinas remotas não podem ver ou afetar outras máquinas em termos de configuração . • Nenhum recurso é consumido quando o Ansible não está gerenciando. • Tem sido usado em ambientes de alta segurança e performance.
  • 102. Exemplos Implementação de uma extensa atualização ao nível de cluster consistindo de: • Consulting a configuration/settings repository for information about the involved • Configuring the base OS on all machines and enforcing desired state • Identifying a portion of the web application servers to update • Signaling the monitoring system of an outage window prior to bringing the servers off line • Signaling load balancers to take the application servers out of a load balanced pool • Stopping the web application server • Deploying or updating the web application server code, data, and content • Starting the web application server • Running appropriate tests on the new server and code • Signaling the load balancers to put the application servers back into the load balanced pool • Signaling the monitoring system to resume alerts on any detected issues on those servers • Repeating this process for remaining application servers in a rolling update process • Repeating these rolling update processes for other tiers such as database or content tiers • Sending email reports and logging as desired when updates are complete
  • 103. Extensões • Os módulos embarcados com o Ansible são implementados em Python e PowerShell • Novos módulos podem ser escritos em qualquer linguagem, requerendo apenas tomar o JSON como entrada e produzir JSON como saída.
  • 105. Aprenda Python rapidamente This is an int (signed, 32bits) : 42 This is a long (signed, infinite): 42L This is a str : "bellx07n" or ’bellx07n’ (" () ’) This is a tuple (immutable): (1,4,"42") This is a list (mutable): [4,2,"1"] This is a dict (mutable): { "one":1 , "two":2 }

Notas do Editor

  1. Bom dia a todos, Prezados Membros da Banca, Meu nome é Sergio Sampaio Spinola Estou aqui hoje para apresentar o trabalho de dissertação de mestrado realizado dentro do Programa de Pós Graduação em Sistemas e Computação Orientado pelo Professor Doutor Paulo Sampaio E cujo título é: