3 de dez. de 2017

Python para Engenheiros de Redes - Parte III


Olá Pessoal Boa Tarde, nesse post vamos tentar dar um overview sobre os principais paradigmas da programação.

O que é um paradigma? Um paradigma segundo a definição do wikipedia, é um “modelo digno de ser seguido”, no âmbito da programação temos dois paradigmas, modelos, principais:


Paradigma da Programação Estruturada.


Qualquer programa pode ser implementada, utilizando três estruturas básicas:


Sequência:

Indica uma sequência de tarefas (segmentos do código), à serem executados para a realização do programa.






























Condicional:

Durante a execução do programa podemos escolher qual fluxo seguir baseado em condições lógicas.









































Laço de Repetição:

Permite a execução repetitiva de alguma tarefa









A programação estruturada tem por objetivo realizar uma estrutura lógica clara, assim como fazer um código simples.

A unidade básica de modularização da programação estruturada é a chamada “função”.

Uma função é um segmento de código, independente do código principal que pode ser executado inúmeras vezes durante à execução do programa.

Dessa forma, a programação estruturada divide o programa em funções, de forma a ter um programa mais organizado. E com a ajuda de laços de repetição, condicionais e sequência executa uma determinada tarefa.

Exemplos de linguagens estruturadas, Pascal, C, Fortran etc



Paradigma da Programação Orientada a Objetos.


Na Programação Orientada a Objetos POO, a idéia é aproximar o mundo real ao mundo virtual.

O mundo real está cheio de objetos por exemplo carros, pessoas, profissões,calculadoras etc... tudo pode ser um objeto. Na POO, esses objetos do mundo real tentam de alguma forma ser modelados em entidades chamadas tambem de “objetos” no mundo virtual.

Na POO, o programa é visto como um conjunto de objetos capazes de interagir entre si, com o objetivo de cumprir uma certa tarefa.

O Objetivo da POO é criar um código que seja reutilizável, intuitivo e de fácil manutenção.

As estruturas básicas do POO são:

Classe:

Estrutura de dados que contém variáveis, e funções , que são chamadas de métodos. Seria como um template.

Objeto:

Um objeto é uma instância da classe.



Exemplo de POO, imaginemos que nos foi solicitado um programa que calcule o equivalente em anos humanos à idade de um cachorro. Considerar a equivalência 1ano cachorro = 7 anos humanos. No momento de escrever esse post meu cachorro de 11 anos estava aqui nos meus pés e me veio na cabeça essa equivalência.

A primeira coisa que precisamos definir é a classe cachorro, um cachorro pode ter certos atributos como nome, raça, cor, idade altura peso etc.

Em linguagem python a classe ficaria da seguinte forma, tomando em consideração os atributos (variavéis), nome, raça, cor e idade.


class cachorro(object):
 #Construtor do objeto
 def __init__(self,nome, raca,cor,idade):
  self.nome = nome
  self.raca = raca
  self.idade = idade



Agora precisamos definir a função que vai nos retornar ê equivalencia em anos humanos. Essa função é chamada de método em POO, e a mesma irá ser definida dentro da classe cachorro.


 def idadeeqhumanos(self):
  #Faz o calculo da idade equivalente
  idadeeq=self.idade*7
  #Retorna a idade equivalente
  return idadeeq



Além disso vamos criar uma outra função que nos de um print na tela à idade do cachorro:

 def getidade(self):
  return self.idade


Colocando tudo junto vamos ter:

#!/usr/bin/python

class cachorro(object):
 #Construtor do objeto
 def __init__(self,nome, raca,cor,idade):
  self.nome = nome
  self.raca = raca
  self.idade = idade

 def idadeeqhumanos(self):
  #Faz o calculo da idade equivalente
  idadeeq=self.idade*7
  #Retorna a idade equivalente
  return idadeeq

 def getidade(self):
  #Print em tela da idade atual do cachorro
  return self.idade


#Meu primeiro objeto cachorro de nome whisky
whisky=cachorro("whisky","viralata","marrom",11)

#Meu segundo objeto cachorro de nome bruno
bruno=cachorro("bruno","viralata","branco",2)

#Print do calculo da idade equivalente
print ("Idade do cachorro %s em idade Humana %s" % (whisky.getidade(),whisky.idadeeqhumanos()))

print ("Idade do cachorro %s em idade Humana %s" % (bruno.getidade(),bruno.idadeeqhumanos()))



Não se preocupem se não entendem o código linha por linha, o importante é ter a noção de como é a programação orientada à objetos.

Como podem ter percebido a POO é um pouco mais complexa que a programação estrutura, ela tem um nível de abstração mais elevado. Porém podem ficar tranquilos, como já tinha comentado em posts anteriores o objetivo de curso é criar programas que agilizem as nossas tarefas no dia a dia, e não virar, (pelo menos não agora :) ) desenvolvedores de software, e para isso a programação estrutura se encaixa perfeitamente.

Exemplos de linguagem orientada a objetos são java, C++, Python, sim python é uma liguagem orientada à objetos porém nada impede de utilizar a mesma utilizando o paradigma de programação estruturada.

Agora vou lhes mostrar um exemplo e vamos passar ele para código tanto da forma estruturada como orientada a objetos.

Nos foi solicitado um programa que receba como entrada dois números inteiros positivos e mostre como resultado a soma dos mesmos.



Utilizando Programação Estruturada:

#!/usr/bin/python

#Funcao soma, recebe como parametros duas variaveis
def soma(A,B):
 #Executa a soma, porem primeiro faz um cast das variaveis passando elas para  numero inteiro
 soma=int(A) + int(B)
 #retorna o resultado da soma
 return soma

#MAIN


i=0
#Solicitando as variaveis a serem somadas
A=raw_input("Insera um numero: ")
i+=1
B=raw_input("Insera um numero: ")
i+=1

#Executando a soma e fazendo o print do resultado
print ("A soma eh: %s" % soma(A,B))




Utilizando Programação Orientada Objetos:

#!/usr/bin/python

#Definindo Clase Variaveis
class Variaveis:
 numberVariaveis=0
 #Construtor, as variaveis vao ter sempre o valor inicial de cero
 def __init__(self, valor=0):
  self.valor=valor
  Variaveis.numberVariaveis+=1

 #Metodo que solicita a entrada de um numero inteiro
 def inPutValor(self):
  self.valor=raw_input("Insera um numero inteiro: ")

 #Metodo que imprime o valor atual do objeto
 def displayValor(self):
  print ("Valor Atual da Variavel %s: %s" % (Variaveis.numberVariaveis,self.valor))

#Definindo a Clase calculadora

class Calculadora:
 #Construtor, o objeto vai ter dois argumentos de entrada
 def __init__(self, valor1, valor2):
  self.valor1=valor1
  self.valor2=valor2

 #Metodo soma, vai somar os valores das variaveis
 def soma(self):
  self.soma=int(self.valor1) + int(self.valor2)
  print ("A soma eh: %s" % self.soma)

#MAIN



print "Criando Primeira Variavel"
#Crio o primeiro objeto da classe Variaveis
A= Variaveis()

#Verifico o valor inicial das variaveis
A.displayValor()

#Chamo o metodo inPutValor, para armazenar os valores das variaveis a serem somadas
A.inPutValor()

#Faco um print dos valores inseridos
A.displayValor()

print "-----------------------------"
print "Criando Segunda Variavel"
#O mesmo para uma segunda variavel
B = Variaveis()
B.displayValor()
B.inPutValor()
B.displayValor()


#Crio um objeto da classe calculadora, tendo como argumentos os atributos dos objetos variaveis
myCalculadora=Calculadora(A.valor,B.valor)

#Chamo o metodo soma
myCalculadora.soma()


#END



Como podem ver o programa estruturado é muito mais simples, porém a versão orientada à objetos é mais escalável, por exemplo e se eu quiser saber a quantidade de números que foram somados?. No programa estruturado toda vez que criar um novo número preciso acrescentar manualmente a variável “i” em uma unidade “i+=1”. No programa POO isso já esta definido no atributo numberVariaveis=0 o qual é incrementado toda vez que um objeto é criado.

Uma outra vantagem da POO é a reutilização de código, por exemplo se eu quiser além da soma, uma soma binária posso criar uma classe chamada “CalculadoraBinaria” a qual vai ser filha da classe “Calculadora” e vai herdar seus métodos.

O resumo desse post, seria que basicamente temos dois paradigmas principais de programação sendo o primeiro chamado de “Programação Estruturada” onde, com a ajuda de blocos de sequência, decisão e repetição conseguimos executar uma determinada tarefa, e em segundo lugar temos “Programação Orientada a Objetos”, onde com a ajuda de Classes e Objetos, interatuando entre si conseguimos executar uma tarefa.


Por hoje é isso ai, novamente fiquem tranquilos se não entenderem ao 100% os códigos exemplos mostrados nesse post, na medida que irem aprendendo mais sobre python as coisas começam a ficar mais claras. Semana que vem vamos programar o nosso primeiro programa em python o famoso "Olá Mundo". 

Aqui lhes deixo os link dos três programas utilizados hoje, se puderem rodar os mesmos nas VMs que já instalaram. Caso tenham alguma dificuldade em executar os mesmos favor me avisar.







Abcs e Muito Obrigado







26 de nov. de 2017

Python para Engenheiros de Redes - Parte II

Olá Pessoal Bom Dia, Nessa semana, vamos instalar, configurar o nosso ambiente de testes, que será utilizado no decorrer dos próximos posts.

Para isso vou lhes deixar dois links da minha conta na AWS, o primeiro documento a ser lido/executado é o que diz "Instalação do Python 2.7", e o segundo é "Instalação do GNS3". 

https://s3-sa-east-1.amazonaws.com/pythonautomatizacao/Instala%C3%A7%C3%A3o+Python+2.7.doc

https://s3-sa-east-1.amazonaws.com/pythonautomatizacao/Instala%C3%A7%C3%A3o+GNS3.doc

Espero disfrutem desse novo post, próxima semana vai ser um post mais teórico no qual vamos falar um pouco sobre os principais paradigmas da programação.

Abçs e um ótimo Domingo!

P.S Qq dúvida não hesitem em me contatar via e-mail. O feedback é sempre bom para melhorar o conteúdo.

20 de nov. de 2017

Python para Engenheiros de Redes - Parte I


Olá Pessoal do NetFinders, em primeiro lugar gostaria de agradecer ao Adilson por ter me aceitado como um colaborador do seu Blog. Espero acrescentar nem que seja um pouco nesse enorme mundo que é a tecnologia.Para quem não me conhece eu sou o CCIE R&S #35681, e trabalhei muitos anos com networking especialmente no início da minha carreira, porém nos últimos anos tenho trabalhado mais como sysadmin especialmente com Big Data, Virtualização, DevOps etc;digamos que para variar um pouco.

Espero que gostem dos posts que vou ir subindo no blog, e para começar vou introduzir vocês ao mundo da programação utilizando a linguagem python, dessa forma vocês vão poder simplificar muitas tarefas que são repetitivas e onerosas de tempo, por serem feitas de forma manual.

Desde já agradeço por sua atenção.

Programação(python) para Engenheiros de Redes

Foram-se os tempos em que um engenheiro de redes somente precisava conhecer o sistema operacional dos equipamentos de networking, seja ele Cisco IOS, JunOS, etc. Com a chegada das novas tendências de mercado, chegou o paradigma de DevOps, no qual os mundos de Desenvolvimento e Operações se fusionam afim de obter uma melhor comunicação, colaboração e coesão entre ditas áreas.

Segundo https://newrelic.com/devops/what-is- devops “Em vez de ter duas áreas diferentes, trabalhando digamos que de forma independente
uma da outra executando tarefas específicas; a metodologia DevOps reconhece uma interdependência de ambas as áreas. Dessa forma DevOps ajuda a desenvolver um software com maior agilidade, mantendo o serviço estavél, e ganhando a velocidade necessária para uma maior inovação.”

Um dos itens no paradigma de DevOps é o chamado “Infraestructure as Code IAC”, no qual um tem a capacidade de administrar e configurar toda uma infraestrutura de TI via código, em vez de ser um processo manual. O IAC se aplica ao mundo do Networking, onde temos por exemplo o conceito de SDN, no qual a camada de controle é desacoplada da camada de fordwarding. Dessa forma o controle é feito no chamado SDN Controller, e é ele que se encarrega de configurar as caixas de fordwarding, switches. Dessa forma toda à programação da sua rede você faz no SDN controller. Sendo assim, se faz necessário o aprendizado de alguma linguagem de programação afim de poder estar atualizados com as novas necessidades.

Porque python?

Não existe uma regra na linguagem de programação a ser utilizada no IAC, mas sendo python uma linguagem de fácil aprendizado, gratuito, com muitas livrarias, e com uma comunidade de desenvolvimento da linguagem sempre ativa; digamos que é a linguagem perfeita para nosso propósito, que é o de programar a nossa rede.

Qual versão de python?

Atualmente existem duas grandes versões de python a 2.7 e a 3.3. Visto que a versão com um maior número de livrarias e sendo a mais utilizada é a 2.7, vamos escolher essa versão. Além do mais a ideia é aprender uma linguagem de programação para nos ajudar em nossas tarefas diárias e não trocar de carreira para virar um programador gabaritado.

Linux ou Windows?


Python 2.7 roda em ambos sistemas operacionais sem maiores problemas, porém eu acho muito mais fácil trabalhar em Linux do que em Windows. Linux também possui uma série de vantagens sobre Windows, a instalação do python assim como de livrarias externas é bastante simples, no geral os programas python rodam bem mais rápido que em Windows etc..

Por ser o primeiro post é isso, no próximo post vou lhes mostrar como fazer do nossoambiente de testes.

Obrigado a todos pela atenção!

José Balbuena
CCIE R&S #35681

15 de nov. de 2017

CCNA 200-125 - Curso Presencial em SP - Dezembro de 2017


O NetFindersBrasil oferecerá em dezembro um curso preparatório para a Certificação Cisco CCNA 200-125, no Centro de SP, em horário comercial. Vagas Limitadas !!!

Uma excelente oportunidade para aqueles que residem na cidade de São Paulo e região, estão abertas as inscrições para o Preparatório CCNA 200-125 em dezembro de 2017.

O curso ocorre em São Paulo - Capital. São apenas 10 vagas, à um valor promocional de R$ 1.590,00

O curso será ministrado de segunda a sexta, das 09:00hs às 18:00hs, com intervalo de 1 hora para almoço e coffee-breaks. O pagamento pode ser parcelado em até 12x via PagSeguro.

◦Carga Horária: 40 horas

◦Quando: dias 18/12, 19/12, 20/12, 21/12 e 22/12, sempre das 09:00hs às 18:00hs

◦Onde: Rua Marquês de Itu, 408 - Conjunto 24 - Vila Buarque - São Paulo - SP (próximo a Estação República do Metrô)

◦Quanto: R$ 1.590,00 (Podendo ser parcelado em até 12X via PagSeguro)

◦Diferenciais: Incluso no valor do investimento acesso ao Curso CCNA Routing & Switching em Modo Gravado via ambiente Portal de Treinamentos NetFindersBrasil (o acesso é liberado logo após a confirmação do pagamento do curso e se estende por 120 dias após o término do curso presencial).

Conteúdo Programático:

Aula 01
Introdução as Carreiras Cisco
Apresentando o Exame 200-120
Modelo de referência ISO-OSI
O modelo de referência TCP/IP
Switching e VLANs
Configuração de Switches (Security, VLANs, Etherchannel)

Aula 02
Endereçamento IPv4
Subredes
Variable Lenght Subnet Masks (VLSM)
Classless Interdomain Routing (CIDR)
IPv6
Subredes IPv6

Aula 03
O sistema operacional Cisco IOS
O processo de licenciamento do IOS 15
Apresentação do Cisco Configuration Professional (CCP)
Gerenciamento básico de uma rede
Autenticação local de usuários
SNMPv2 e v3
Cisco Netflow
Syslog
Listas de Controle de Acesso (ACLs)

Aula 04
O processo de roteamento IP
Roteamento IP Estático
Roteamento IP dinâmico (RIPv1 e RIPv2)
Roteamento IP dinâmico – EIGRP
Roteamento IP dinâmico – OSPF multi-area
Sumarização de rotas (configuração)
Roteamento IPv6 estático
Roteamento IPv6 dinâmico – RIPng
Roteamento IPv6 dinâmico -OSPFv3
Roteamento IPv6 dinâmico – EIGRP

Aula 05
Protocolos WAN (HDLC / PPP / PPPoE / Metro Ethernet e MPLS)
Conceitos de QoS
First Hop Redundancy Protocols (HSRP, VRRP e GLBP)
Prática de Cenários para o exame: Laboratórios

◦IMPORTANTE:
Os alunos deverão trazer notebook para a realização dos laboratórios utilizando o EVE-ng.

Os interessados devem enviar e-mail solicitando instruções para matricula para:

adilson.aflorentino@eamsoft.com.br

◦Inscrições por tempo limitado. São apenas 10 vagas. Garanta já a sua !!!

14 de nov. de 2017

Evento Online Gratuito para Provedores Internet: Como virtualizar seu Core de Rede usando EVE-ng

INSCRIÇÕES ENCERRADAS - OBRIGADO A TODOS OS PARTICIPANTES - SERÁ ENCAMINHADO E-MAIL COM AS INSTRUÇÕES DE ACESSO A PALESTRA!


Objetivo:
Os Provedores de Acesso a Internet brasileiros tem um cenário cada vez mais complexo e variado dentro do Core de Rede de suas empresas. Equipamentos dos mais diversos fabricantes são utilizados e bugs variados atrapalham a implementação e a manutenção nestes ambientes. É fundamental ter ferramentas para a homologação e a prototipação destes cenários, permitindo testar, fora do ambiente do produção, os diversos sistemas operacionais dos equipamentos utilizados, ganhando tempo e diminuindo o tamanho das janelas de manutenção necessárias para a implantação destas tecnologias. Nesta palestra, apresentamos como utilizar o EVE-ng, ferramenta gratuita que permite emular o funcionamento de dezenas de soluções dos mais diversos fabricantes, incluindo Cisco, Juniper, Mikrotik, Vyos e muitos outros.

Quando: Dia 23/11/2017 - das 20:00 as 22:00 horas

Público-Alvo: Profissionais de Redes de Computadores e Telecomunicações envolvidos na configuração e Customização de Roteadores de Borda para Provedores Internet

Palestrantes: Adilson Florentino e Bruno Nunes - idealizadores do serviço EVE-Cloud do NetFindersBrasil e do curso de EVE-ng - Laboratórios Avançados.

Vagas Limitadas, garanta já a sua!!!

Inscrições: Mande uma mensagem contendo seu nome completo e e-mail de contato para adilson.aflorentino@eamsoft.com.br

31 de out. de 2017

Agora sou...HCIE Written !!!


Hoje a tarde prestei o Exame HC-261 - HCIE Written RS, e passei com um Score de 770 (600 era o Score mínimo para passar. Assim como o CCIE Written, não existem cenários de configuração nesta prova, apenas questões de múltipla escolha (60 questões em 90 minutos).

De um modo geral, achei a Prova mais fácil que o CCIE Written RS, apesar de também ter muitas pegadinhas e uma tradução do Chinês para o Inglês que muitas vezes confunde ainda mais o candidato.

Atualmente existem poucos HCIEs no mundo, na América Latina então creio que são apenas 5 profissionais certificados. Em 2018, pretendo fazer a Prova Prática (HC-262)e a Entrevista (HC-263) de modo a me tornar um HCIE de verdade!

Huawei vem crescendo muito ultimamente, principalmente no Mercado de Service Providers. Eu acredito que todos os profissionais de Routing e Switching que trabalham com fabricantes como Cisco, Juniper e Mikrotik deveriam considerar capacitar-se também nas soluções deste gigante chinês.

21 de out. de 2017

Fundamentos de IOS-XR - Utilizando a familia ASR 9000 como Router de Borda


NetfindersBrasil oferece o curso de Fundamentos de IOS-XR em novembro de 2017, em São Paulo - Capital. O curso é focado em profissionais que atuam em Service Providers que desejam aprender a configurar equipamentos da família Cisco ASR 9000 como Roteadores de Borda.

São apenas 10 vagas para o evento. Durante o treinamento, serão utilizados laboratórios criados no Emulador UnetLab-EVE com o uso de imagens do XRv-9000

◦Quando:

Fundamentos de IOS-XR: dias 25/11/2017 e 26/11/2017, das 09:00hs às 18:00hs - 16 horas de duração.

◦Quanto:

Valor promocional de R$ 1.990,00 (podendo ser parcelado em até 12 vezes via PagSeguro)

◦Onde:

EAMSOFT Consultoria e Treinamento em Informática
Rua Marquês de Itu, 408 – Conjunto 24
Vila Buarque – São Paulo – SP
(Próximo a Estação República do Metrô)

◦Diferenciais:

- Instrutor Cisco Certificado - CCNA, CCSI, CCNP, CCAI - com mais de 15 anos de experiência na área.
- 01 Ano de acesso ao Ambiente Online do Fundamentos de IOS_XR do NetFindersBrasil, com Fóruns para solucionar dúvidas referentes ao conteúdo programático do curso.

◦Pré-requisitos:

Não é necessário conhecimento prévio de IOS-XR – Conhecimentos básicos na utilização do IOS Tradicional e Configuração de protocolos de Roteamento Interno, BGP e MPLS são desejáveis.

IMPORTANTE: Os alunos deverão trazer notebook para a realização dos laboratórios - estes, no entanto, serão utilizados apenas como terminais de acesso, visto que os labs serão realizados nos Servidores EVE na Nuvem mantidos pelo NetFindersBrasil

Os interessados devem enviar e-mail solicitando instruções para matricula para:

adilson.aflorentino@eamsoft.com.br

◦Conteúdo Programático:

1. Introdução ao IOS XR e Comparação com o Cisco IOS
2. Configuração Básica, criação de ACLs
3. Roteamento Estático e Dinâmico
4. Protocolo OSPF em área única e múltiplas áreas
5. Protocolo BGP - vizinhanças iBGP e eBGP
6. Atributos BGP
7. Route Filtering – Politicas AS-IN e AS-OUT (IPv4 e IPv6)
8. NAT 444 e guarda de logs

16 de out. de 2017

Evento Presencial e Gratuito no NIC.br - Outubro de 2017


Bem-vindos ao IX Fórum!
O IX Fórum (antigo PTT Fórum) desde 2007 oferece um ambiente para o diálogo sobre os principais assuntos relacionados à infraestrutura da Internet no Brasil e, de forma particular, sobre os Pontos de Troca de Tráfego Internet, ou Internet Exchanges.

Pela primeira vez, agora em 2017, em conjunto com o Curso de Boas Práticas Operacionais para Sistemas Autônomos (Curso BCOP), o NIC.br está promovendo reuniões regionais envolvendo provedores, órgãos públicos, entidades acadêmicas, associações, entre outros importantes atores envolvidos com a Internet.

O objetivo do IX Fórum Regional é incentivar o diálogo entre os participantes, abordando o uso dos PTTs e a interconectividade regionalmente, além de tópicos técnicos e temas relacionados, buscando estratégias para promover o desenvolvimento da Internet em cada localidade.

Agenda

IX (PTT) Fórum Regional - São Paulo, 20 de outubro

horário atividade

08h30 - 09h00 Credenciamento

09h00 - 11h00 Nova metodologia de certificação de enlaces ópticos externos e internos baseados em software multipulsos sobre plataforma OTDR.
José Torrone (Precision Solutions)

11h00 - 11h30 Coffee Break

11h30 - 12h00 Implementação da KSK no DNSSEC (Extensões de Segurança do Sistema de Nomes de Domínio)
Daniel Fink (ICANN)

12h00 - 13h30 Almoço

13h30 - 14h30 Ataques de negação de serviço e como melhorar o cenário
Cristine Hoepers (CERT.br)
Klaus Steding-Jessen (NIC.br)

14h30 - 15h00 Novidades na Infraestrutura do projeto IX.br
Julio Sirota (NIC.br)

15h00 - 16h00 Tópicos técnicos sobre o IX.br: Ativação, Communities, portas compartilhadas, etc
Antonio Marcos Moreiras (NIC.br)

16h00 - 16h30 Coffee Break e Encerramento

Inscreva-se no link abaixo:

http://regional.forum.ix.br/15-SP/

LinkWithin

Related Posts with Thumbnails