SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
Administração de sistemas usando
            Python
         Hélio Loureiro <helio@loureiro.eng.br> a
             <helio_loureiro@engineer.com>
 http://helio.loureiro.eng.br/presentation_python/ b
http://loureiro.dyndns.org:8080/presentation_python/
                         Copyleft c 2002
a Nãoestá funcionando no momento.
b Também está fora do ar.




                                       Administração de sistemas usando Python – p.1
Introdução
 Esta é uma apresentação introdutória da linguagem de programação Python,
 portanto não espere ver exemplos avançados de seu uso aqui.
 O objetivo desta apresentação é mostrar a linguagem Python, sua sintaxe, seu uso
 e alguns exemplos práticos para administração de sistemas.
 Os exemplos usados são programas utilizados em vários ambientes reais,
 principalmente na função de consultor onde o objetivo era fazer as tarefas o
 melhor possível com o menor tempo possível (tempo é dinheiro).

 Os programas apresentados são testados e geralmente utilizados em várias plata-

 formas (Debian, FreeBSD, OpenBSD, Solaris e até Windows...).




                                                            Administração de sistemas usando Python – p.2
História do Python
 Python foi criado no início dos anos 90 por Guido van Rossum no Stichting
 Mathematisch Centrum, CWI, http://www.cwi.nl/, Holanda, como um
 sucessor da linguagem chamada ABC.

 Em 1995, Guido continuou seu trabalho em Python na Corporation for National

 Research Initiatives, CNRI, http://www.cnri.reston.va.us/, em Res-

 ton, Virginia, onde ele lançou várias versões do programa.




                                                              Administração de sistemas usando Python – p.3
História do Python (cont.)
 Em maio de 2000, Guido e o grupo de desenvolvedores do Python migraram para
 o BeOpen.com para formar o grupo BeOpen PythonLabs. Em outubro do mesmo
 ano, o grupo do PythonLabs migrou para o Zope Corporation (então Digital
 Creations, veja http://www.zope.com). Em 2001, a Fundação do Programa
 Python (PSF, veja http://www.python.org/psf) foi criada, uma
 organização sem fins lucrativos criada especificamente para manter a propriedade
 intelectual relacionada à Python. A Zope Corporation é um membro patrocinador
 do PSF.

 Todas    as   versões    de    Python    são    de    código         aberto             (veja

 http://www.opensource.org/ para a definição de código aberto).

 Historicamente a maioria, mas não todas, das versões de Python têm também sido

 compatíveis com a GPL.

                                                           Administração de sistemas usando Python – p.4
Por quê é chamado Python?
   " "Além de ser um cientista da computação, eu também sou fã do
   "Monty Python’s Flying Circus"(uma série cômica dos anos setentas
   na BBC, no caso - incomum - de você não conhecer). Ocorreu-me
   um dia que eu precisava de um nome que fosse curto, único, e
   levemente misterioso. E acontenceu de eu estar lendo alguns textos
   da série naquela época... Então eu decidi chamar minha linguagem de
   Python." "

                                                            Guido van Rossun




                                                       Administração de sistemas usando Python – p.5
Onde Python é utilizado
   Mailman - gerenciador de listas de discussão
   Zope - um ambiente para Webservices (servidor de
   conteúdo)
   Sketch - programa para desenho vetorial
   Pydf - programa “df”, para visualização de
   quantidade de uso de partições do sistema, com
   saída colorida
   Ipcheck - programa cliente para uso do “dyndns”,
   registro dinâmico de DNS
   Pysol - jogo de cartas “paciência”


                                      Administração de sistemas usando Python – p.6
Descrição

 Python, em poucas linhas, é:
       Linguagem de scripts
       Orientada à objetos
       Com a possibilidade de geração de byte-code
       Multiplataforma - máquina virtual
       Com característica de laços através de identação
       Sem tipos!!!
       Rápida prototipagem
       Fácil integração com C e Java




                                                          Administração de sistemas usando Python – p.7
Comparações com outras linguagens
 C Python é orientada à objetos e não possui tipos. C é uma linguagem
     compilada, enquanto que Python, interpretada.
 C++ Linguagem compilada. Python é interpretada. Geralmente não é portável
     (bibliotecas dependentes).
 Java Linguagem com tipos.
 Perl Linguagem pouco estruturada com tipos básicos definidos por inicialização
      de váriáveis ($x e @y). Não pode ser usada interativamente.
 PHP Mais veloz que Python para criação de páginas web com conteúdo
     dinâmico (mesmo utilizando mod_python). Também possui tipos definidos
     tal qual a linguagem Perl.

 Qual a melhor?
 Resposta: e deveria existir uma?
                                                           Administração de sistemas usando Python – p.8
Documentação e Bibliografia
 http://www.python.org/doc/current/tut/tut.html - Python
 Tutorial
 http://www.python.org/doc/current/lib/lib.html - Python
 Library Reference
 /usr/share/doc/python2.1/html/index.html - documentação que
 acompanha a instalação do Python a
 /usr/share/doc/python2.1/examples/ - exemplos e demos
 interessantes
                                ou via Debian:

 helio@pasargada in ~# apt-cache search
 python doc | more
            ¡
         




   a Referente   ao Debian 3.0, woody.

                                                 Administração de sistemas usando Python – p.9
Estruturas de dados
 números num = 5
 strings nome = “Debian”
 listas sistemas = [“Debian”, “OpenBSD”, “FreeBSD”]
 tuples sequencia = ( “Debian”, [ 1, 2 , 3 ], “nome”)
 dicionários agenda = {“helio”: “999-333”, “macan”:
      “1234”}
 Exemplo:
      nome[0]: “D”
      nome[-1]: “n”
      nome[:-2]: “Debi”
 Obs: o símbolo “#” é utilizado para marcar comentário.
                                         Administração de sistemas usando Python – p.10
Operadores aritméticos

                adição
              subtração




                            £  ¢
               divisão
             multiplicação




                            ¤
            exponenciação




                           ¤
                               ¤
             AND lógico and
              OR lógico    or
               negação     not



                                   Administração de sistemas usando Python – p.11
Controles de fluxo: if-elif-else
     if (condição):
           faça
     elif (condição):
           faça
     else:
           faça
                      ou simplesmente
     if (condição): faça

 Notas: Final do laço determinado pela indentação.



                                          Administração de sistemas usando Python – p.12
Controles de fluxo: for


     variavel = [ “Debian”, “GNU”, “Linux”]


     for nome in variavel:
          print nome

 Notas: Sintaxe semelhante ao laço “for” de shell script.
 Final do laço determinado pela indentação.



                                          Administração de sistemas usando Python – p.13
Controles de fluxo: while


     variavel = 10


     while ( variavel ):
          print “Debian rulez!”
          variavel = variavel - 1

 Notas: Final do laço determinado pela indentação.



                                          Administração de sistemas usando Python – p.14
continue, break e pass


 continue Continua o fluxo do programa.
 break Finaliza o fluxo.
 pass Executa sem realizar processamento.




                                        Administração de sistemas usando Python – p.15
Funções
Declarada com “def”:


def minha_funcao(variavel):
   print variavel




Exemplo de uso:
minha_funcao(“I Oficina Debian Paulista”)



                                      Administração de sistemas usando Python – p.16
Objetos, métodos e classes
 class Apache(self): # classe
       def _init_(self): # método
            self.conf = “/etc/apache/httpd.conf” # atributo


      def comando(self,tipo):
           from os import system
           system(“apachectl “ + tipo)


 server = Apache()
 server.comando(“restart”)


                                            Administração de sistemas usando Python – p.17
Importando módulos
Duas formas:
     import os
           os.system(“uptime”)
ou
     from os import system
           system(“uptime”)
O segundo formato é mais rápido, pois todos os objetos
e métodos não são importados. O arquivo com módulo
precisar ter uma das extensões: “ py” ou “ pyc” ou “ pyo”.
                                ¥




                                         ¥




                                                                    ¥
                                             Administração de sistemas usando Python – p.18
py, pyc e pyo
 py extensão geralmente usada em scripts Python
 pyc byte code. Pode ser usado para não redistribuir os
     fontes do programa e funciona em todas as
     plataformas, desde que se tenha o máquina virtual, o
     interpretador Python. É gerado após a primeira
     execução do programa com extensão py.
 pyo código objeto. Biblioteca de alguns módulos de
     Python. Dependente de sistema operacional.




                                          Administração de sistemas usando Python – p.19
Controle de exceções
  try:
    <código>
 except KeyboardInterrupt:
    <código>
 except:
    pass




                             Administração de sistemas usando Python – p.20
30 minutos
 Espero estar chegando aqui após 30 minutos, onde
 vimos:
     A origem do Python
     Onde é usado Python
     O que é Python
     Uma certa idéia de como usar

 Dúvidas???



                                         Administração de sistemas usando Python – p.21
Hello World!
 #! /usr/bin/python

 mensagem="Hello World!"

 print mensagem
 print "%s" % mensagem




                           Administração de sistemas usando Python – p.22
Executando o seu primeiro programa

 helio@pasargada in ~# python hello.py
 Hello World!
 Hello World!
 helio@pasargada in ~# python
 Python 2.1.3 (#1, Sep 7 2002, 15:29:56)
 [GCC 2.95.4 20011002 (Debian prerelease)] on linux2
 Type "copyright", "credits"or "license"for more information.
       import hello
 ¦

     ¦

         ¦




 Hello World!
 Hello World!
                   © ¨


                            




                                 
 ¦

     ¦

         ¦



             §




                                     ¦
                 


                          




                                                            Administração de sistemas usando Python – p.23
Autenticação
     Módulo criado para iniciar autenticação de
     programas (nunca saiu do estágio inicial...);
     é um bom exemplo do uso de classes, simples de
     entender.

 Veja o arquivo autenticacao.py




                                        Administração de sistemas usando Python – p.24
Laserfilter
     Programa criado para corrigir o problema do efeito
     “escada” nas impressões;
     utilizado em uma impressora laser nesse exemplo;
     o objetivo do filtro é substituir no final de cada linha
         




                      
     o “ n” por “ˆM n”.

 Veja os arquivos laserfilter e printcap.




                                           Administração de sistemas usando Python – p.25
Backup
    Programa para realizar backups;
    poderia ter sido feito em shell script;
    mas está em Python para mostrar a diferença.

Veja o arquivo backup.py.




                                        Administração de sistemas usando Python – p.26
Usando um execv()
     Programa para animar o ambiente;
     seleciona aleatoriamente um arquivo para tocar;
     usada uma chamada execv() para executar ao invés
     de system().

 Veja o arquivo mpy3layer.py.




                                        Administração de sistemas usando Python – p.27
default.ida (code red e nimda)
     Programa para registrar as tentativas de code red e
     nimda;
     é preciso registra a extensão “ ida” com CGI no




                                   ¥
     apache para que funcione corretamente;
     sem maiores utilidades...

 Veja o arquivo default.ida.




                                           Administração de sistemas usando Python – p.28
Logs do code red
 [Thu March 07 10:04:50 2002] red code attack   from 195.82.69.206
 (inter-gw1.bfw-michaelshoven.de)
 [Fri March 08 02:30:43 2002] red code attack   from 61.161.156.17
 [Sat March 09 04:50:44 2002] red code attack   from 65.94.232.21
 (MTL-HSE-ppp202767.qc.sympatico.ca)
 [Mon March 11 19:28:27 2002] red code attack   from 12.238.129.99
 (12-238-129-99.client.attbi.com)
 [Mon March 11 21:48:09 2002] red code attack   from 209.12.200.2
 (www.multi-page.net)
 [Tue March 12 03:05:17 2002] red code attack   from 195.171.4.130
 (server.stricklandgate-house.org.uk)
 [Tue March 12 06:38:49 2002] red code attack   from 218.13.3.48
 [Tue March 12 07:56:30 2002] red code attack   from 213.145.184.9
 (213-145-184-9.dd.nextgentel.com)
 [Mon March 18 09:10:03 2002] red code attack   from 210.72.161.107
 [Mon March 18 13:50:55 2002] red code attack   from 63.197.79.111
 (adsl-63-197-79-111.dsl.snfc21.pacbell.net)



                                                     Administração de sistemas usando Python – p.29
Boot advertisement
       Usando em ambiente os as máquinas recebem IP via DHCP;
       evita a solicitação de registro de IP fixo para algumas máquinas;
       na máquina cliente, que inicializa via DHCP, é executado um shell script;
       no servidor, com o web habilitado, é executado um CGI em Python para
       tratamento das informações;
       a informação é verificada com uso de MD5;
       se confere, é enviada por mail.
       Nesse exemplo, o servidor roda em uma máquina FreeBSD, enquanto que o
       cliente, OpenBSD.

 Veja os arquivos system.cgi e bootadvertise.



                                                             Administração de sistemas usando Python – p.30
MRTG
Usado para verificar algumas funções da máquina:
   load average (carregamento)
   uptime
   utilizações de disco
   servidor Quake




                                       Administração de sistemas usando Python – p.31
ADSL
    Utilizado para verificar o status do link ADSL com
    um modem “Parks”;
    feito para conexão “business”, mas pode ser
    modificado para “home”;
    funciona tal qual um telnet no modem, seguindo a
    seqüência para dar um “reset” na linha ADSL (para
    perda de sinal sem o “re-trainning”);
    atualmente não funciona muito, já que o problema
    de perda de sincronismo é mínimo;
    mas ajuda a saber o estado da linha.

Veja o arquivo adsl_check.py.
                                       Administração de sistemas usando Python – p.32
Gráfico ADSL




              Administração de sistemas usando Python – p.33
Automação de provedor
     Criado durante uma consultoria a um provedor;
     para inserir automagicamente o cliente no serviço de
     mail de sua empresa (virtualhost do sendmail);
     além de registrar seu domínio (named);
     e criar seu site default na web (apache).
     Problemas com permissões: Python não funciona
     setuid!
     Para ativar setuid ou utiliza-se o sudo ou cria-se um
     programa em C com uma chamada system()/execv()
     e altera-se as permissões deste para setuid (chmod
     4755).

 Veja os arquivos suporte.py e dominio.py   Administração de sistemas usando Python – p.34
Pyqt e Qt-designer




                                     Uso do aplicativo
 “pyuic” para gerar o módulo com o código.
                                        Administração de sistemas usando Python – p.35
wxPython
   Biblioteca semelhante à MFC, Microsoft Foundation
   Classes, mas é GPL e multi-plataforma;
   existe para Python e C++, entre outras;
   não existe um RAD para desenvolvimento, como
   pyqt.




                                     Administração de sistemas usando Python – p.36

Weitere ähnliche Inhalte

Was ist angesagt?

Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Marcel Caraciolo
 
Introdução à linguagem Python
Introdução à linguagem PythonIntrodução à linguagem Python
Introdução à linguagem PythonAlex Tercete
 
Introdução à linguagem de programação Python
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação PythonCarlos Schults
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nívelIgor Sobreira
 
A lógica do Python e seus termos
A lógica do Python e seus termosA lógica do Python e seus termos
A lógica do Python e seus termosValore I/O
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + PythonMateus Padua
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcionalfabiocerqueira
 
Python como primeira linguagem de programação
Python como primeira linguagem de programaçãoPython como primeira linguagem de programação
Python como primeira linguagem de programaçãoSimples Consultoria
 
Introdução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonIntrodução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonFlávio Ribeiro
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em pythonAlvaro Oliveira
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem PythonLuciano Ramalho
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e djangoIgor Sobreira
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na práticaRafael Cassau
 
Matando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonMatando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonOsvaldo Santana Neto
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 pythonTiago
 
Comsolid2011 Introdução Python
Comsolid2011 Introdução PythonComsolid2011 Introdução Python
Comsolid2011 Introdução PythonGleison Rodrigues
 
Python para iniciantes
Python para iniciantesPython para iniciantes
Python para iniciantesrichardsonlima
 

Was ist angesagt? (20)

Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?
 
Python, CPython, Pythonico, Cython
Python, CPython, Pythonico, CythonPython, CPython, Pythonico, Cython
Python, CPython, Pythonico, Cython
 
Introdução à linguagem Python
Introdução à linguagem PythonIntrodução à linguagem Python
Introdução à linguagem Python
 
Introdução à linguagem de programação Python
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação Python
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
 
A lógica do Python e seus termos
A lógica do Python e seus termosA lógica do Python e seus termos
A lógica do Python e seus termos
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcional
 
Python como primeira linguagem de programação
Python como primeira linguagem de programaçãoPython como primeira linguagem de programação
Python como primeira linguagem de programação
 
Introdução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonIntrodução a Linguagem de Programação Python
Introdução a Linguagem de Programação Python
 
Canivete python
Canivete pythonCanivete python
Canivete python
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
Hello, Python!
Hello, Python!Hello, Python!
Hello, Python!
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
Matando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonMatando o Java e Mostrando o Python
Matando o Java e Mostrando o Python
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 python
 
Comsolid2011 Introdução Python
Comsolid2011 Introdução PythonComsolid2011 Introdução Python
Comsolid2011 Introdução Python
 
Python para iniciantes
Python para iniciantesPython para iniciantes
Python para iniciantes
 

Ähnlich wie Administração de sistemas usando Python

Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação PythonJunior Sobrenome
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsHelio Colombe
 
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webCherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webAlvaro Oliveira
 
Tutorial Python ed. #2
Tutorial Python ed. #2Tutorial Python ed. #2
Tutorial Python ed. #2Fabio Spanhol
 
Python Training #1 - ed4
Python Training #1 - ed4Python Training #1 - ed4
Python Training #1 - ed4Fabio Spanhol
 
Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Luiz Aldabalde
 
Python Training #1 ed.6
Python Training #1 ed.6 Python Training #1 ed.6
Python Training #1 ed.6 Fabio Spanhol
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonAlvaro Oliveira
 
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Sidney Roberto
 
Python Training #1, ed. 6
Python Training #1, ed. 6Python Training #1, ed. 6
Python Training #1, ed. 6Fabio Spanhol
 
python_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfpython_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfProfIvanSaboia
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)Rudá Moura
 
Python Training #1 - ed5
Python Training #1 - ed5Python Training #1 - ed5
Python Training #1 - ed5Fabio Spanhol
 
Python Pythononcampus Uva 060609
Python Pythononcampus Uva 060609Python Pythononcampus Uva 060609
Python Pythononcampus Uva 060609gsroma
 

Ähnlich wie Administração de sistemas usando Python (20)

Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação Python
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - Português
 
Canivete suíço do Python
Canivete suíço do PythonCanivete suíço do Python
Canivete suíço do Python
 
Programação Python na Iot
Programação Python na IotProgramação Python na Iot
Programação Python na Iot
 
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webCherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações web
 
Curso Python - Aula 01
Curso Python - Aula 01Curso Python - Aula 01
Curso Python - Aula 01
 
Tutorial Python ed. #2
Tutorial Python ed. #2Tutorial Python ed. #2
Tutorial Python ed. #2
 
Python Training #1 - ed4
Python Training #1 - ed4Python Training #1 - ed4
Python Training #1 - ed4
 
Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011
 
Python tutorial-ed3
Python tutorial-ed3Python tutorial-ed3
Python tutorial-ed3
 
Python Training #1 ed.6
Python Training #1 ed.6 Python Training #1 ed.6
Python Training #1 ed.6
 
Python
PythonPython
Python
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a Python
 
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
 
Python Training #1, ed. 6
Python Training #1, ed. 6Python Training #1, ed. 6
Python Training #1, ed. 6
 
python_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfpython_para_desenvolvedores.pdf
python_para_desenvolvedores.pdf
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)
 
Python Training #1 - ed5
Python Training #1 - ed5Python Training #1 - ed5
Python Training #1 - ed5
 
aula5_python.pdf
aula5_python.pdfaula5_python.pdf
aula5_python.pdf
 
Python Pythononcampus Uva 060609
Python Pythononcampus Uva 060609Python Pythononcampus Uva 060609
Python Pythononcampus Uva 060609
 

Administração de sistemas usando Python

  • 1. Administração de sistemas usando Python Hélio Loureiro <helio@loureiro.eng.br> a <helio_loureiro@engineer.com> http://helio.loureiro.eng.br/presentation_python/ b http://loureiro.dyndns.org:8080/presentation_python/ Copyleft c 2002 a Nãoestá funcionando no momento. b Também está fora do ar. Administração de sistemas usando Python – p.1
  • 2. Introdução Esta é uma apresentação introdutória da linguagem de programação Python, portanto não espere ver exemplos avançados de seu uso aqui. O objetivo desta apresentação é mostrar a linguagem Python, sua sintaxe, seu uso e alguns exemplos práticos para administração de sistemas. Os exemplos usados são programas utilizados em vários ambientes reais, principalmente na função de consultor onde o objetivo era fazer as tarefas o melhor possível com o menor tempo possível (tempo é dinheiro). Os programas apresentados são testados e geralmente utilizados em várias plata- formas (Debian, FreeBSD, OpenBSD, Solaris e até Windows...). Administração de sistemas usando Python – p.2
  • 3. História do Python Python foi criado no início dos anos 90 por Guido van Rossum no Stichting Mathematisch Centrum, CWI, http://www.cwi.nl/, Holanda, como um sucessor da linguagem chamada ABC. Em 1995, Guido continuou seu trabalho em Python na Corporation for National Research Initiatives, CNRI, http://www.cnri.reston.va.us/, em Res- ton, Virginia, onde ele lançou várias versões do programa. Administração de sistemas usando Python – p.3
  • 4. História do Python (cont.) Em maio de 2000, Guido e o grupo de desenvolvedores do Python migraram para o BeOpen.com para formar o grupo BeOpen PythonLabs. Em outubro do mesmo ano, o grupo do PythonLabs migrou para o Zope Corporation (então Digital Creations, veja http://www.zope.com). Em 2001, a Fundação do Programa Python (PSF, veja http://www.python.org/psf) foi criada, uma organização sem fins lucrativos criada especificamente para manter a propriedade intelectual relacionada à Python. A Zope Corporation é um membro patrocinador do PSF. Todas as versões de Python são de código aberto (veja http://www.opensource.org/ para a definição de código aberto). Historicamente a maioria, mas não todas, das versões de Python têm também sido compatíveis com a GPL. Administração de sistemas usando Python – p.4
  • 5. Por quê é chamado Python? " "Além de ser um cientista da computação, eu também sou fã do "Monty Python’s Flying Circus"(uma série cômica dos anos setentas na BBC, no caso - incomum - de você não conhecer). Ocorreu-me um dia que eu precisava de um nome que fosse curto, único, e levemente misterioso. E acontenceu de eu estar lendo alguns textos da série naquela época... Então eu decidi chamar minha linguagem de Python." " Guido van Rossun Administração de sistemas usando Python – p.5
  • 6. Onde Python é utilizado Mailman - gerenciador de listas de discussão Zope - um ambiente para Webservices (servidor de conteúdo) Sketch - programa para desenho vetorial Pydf - programa “df”, para visualização de quantidade de uso de partições do sistema, com saída colorida Ipcheck - programa cliente para uso do “dyndns”, registro dinâmico de DNS Pysol - jogo de cartas “paciência” Administração de sistemas usando Python – p.6
  • 7. Descrição Python, em poucas linhas, é: Linguagem de scripts Orientada à objetos Com a possibilidade de geração de byte-code Multiplataforma - máquina virtual Com característica de laços através de identação Sem tipos!!! Rápida prototipagem Fácil integração com C e Java Administração de sistemas usando Python – p.7
  • 8. Comparações com outras linguagens C Python é orientada à objetos e não possui tipos. C é uma linguagem compilada, enquanto que Python, interpretada. C++ Linguagem compilada. Python é interpretada. Geralmente não é portável (bibliotecas dependentes). Java Linguagem com tipos. Perl Linguagem pouco estruturada com tipos básicos definidos por inicialização de váriáveis ($x e @y). Não pode ser usada interativamente. PHP Mais veloz que Python para criação de páginas web com conteúdo dinâmico (mesmo utilizando mod_python). Também possui tipos definidos tal qual a linguagem Perl. Qual a melhor? Resposta: e deveria existir uma? Administração de sistemas usando Python – p.8
  • 9. Documentação e Bibliografia http://www.python.org/doc/current/tut/tut.html - Python Tutorial http://www.python.org/doc/current/lib/lib.html - Python Library Reference /usr/share/doc/python2.1/html/index.html - documentação que acompanha a instalação do Python a /usr/share/doc/python2.1/examples/ - exemplos e demos interessantes ou via Debian: helio@pasargada in ~# apt-cache search python doc | more ¡   a Referente ao Debian 3.0, woody. Administração de sistemas usando Python – p.9
  • 10. Estruturas de dados números num = 5 strings nome = “Debian” listas sistemas = [“Debian”, “OpenBSD”, “FreeBSD”] tuples sequencia = ( “Debian”, [ 1, 2 , 3 ], “nome”) dicionários agenda = {“helio”: “999-333”, “macan”: “1234”} Exemplo: nome[0]: “D” nome[-1]: “n” nome[:-2]: “Debi” Obs: o símbolo “#” é utilizado para marcar comentário. Administração de sistemas usando Python – p.10
  • 11. Operadores aritméticos adição subtração £ ¢ divisão multiplicação ¤ exponenciação ¤ ¤ AND lógico and OR lógico or negação not Administração de sistemas usando Python – p.11
  • 12. Controles de fluxo: if-elif-else if (condição): faça elif (condição): faça else: faça ou simplesmente if (condição): faça Notas: Final do laço determinado pela indentação. Administração de sistemas usando Python – p.12
  • 13. Controles de fluxo: for variavel = [ “Debian”, “GNU”, “Linux”] for nome in variavel: print nome Notas: Sintaxe semelhante ao laço “for” de shell script. Final do laço determinado pela indentação. Administração de sistemas usando Python – p.13
  • 14. Controles de fluxo: while variavel = 10 while ( variavel ): print “Debian rulez!” variavel = variavel - 1 Notas: Final do laço determinado pela indentação. Administração de sistemas usando Python – p.14
  • 15. continue, break e pass continue Continua o fluxo do programa. break Finaliza o fluxo. pass Executa sem realizar processamento. Administração de sistemas usando Python – p.15
  • 16. Funções Declarada com “def”: def minha_funcao(variavel): print variavel Exemplo de uso: minha_funcao(“I Oficina Debian Paulista”) Administração de sistemas usando Python – p.16
  • 17. Objetos, métodos e classes class Apache(self): # classe def _init_(self): # método self.conf = “/etc/apache/httpd.conf” # atributo def comando(self,tipo): from os import system system(“apachectl “ + tipo) server = Apache() server.comando(“restart”) Administração de sistemas usando Python – p.17
  • 18. Importando módulos Duas formas: import os os.system(“uptime”) ou from os import system system(“uptime”) O segundo formato é mais rápido, pois todos os objetos e métodos não são importados. O arquivo com módulo precisar ter uma das extensões: “ py” ou “ pyc” ou “ pyo”. ¥ ¥ ¥ Administração de sistemas usando Python – p.18
  • 19. py, pyc e pyo py extensão geralmente usada em scripts Python pyc byte code. Pode ser usado para não redistribuir os fontes do programa e funciona em todas as plataformas, desde que se tenha o máquina virtual, o interpretador Python. É gerado após a primeira execução do programa com extensão py. pyo código objeto. Biblioteca de alguns módulos de Python. Dependente de sistema operacional. Administração de sistemas usando Python – p.19
  • 20. Controle de exceções try: <código> except KeyboardInterrupt: <código> except: pass Administração de sistemas usando Python – p.20
  • 21. 30 minutos Espero estar chegando aqui após 30 minutos, onde vimos: A origem do Python Onde é usado Python O que é Python Uma certa idéia de como usar Dúvidas??? Administração de sistemas usando Python – p.21
  • 22. Hello World! #! /usr/bin/python mensagem="Hello World!" print mensagem print "%s" % mensagem Administração de sistemas usando Python – p.22
  • 23. Executando o seu primeiro programa helio@pasargada in ~# python hello.py Hello World! Hello World! helio@pasargada in ~# python Python 2.1.3 (#1, Sep 7 2002, 15:29:56) [GCC 2.95.4 20011002 (Debian prerelease)] on linux2 Type "copyright", "credits"or "license"for more information. import hello ¦ ¦ ¦ Hello World! Hello World! © ¨ ¦ ¦ ¦ § ¦ Administração de sistemas usando Python – p.23
  • 24. Autenticação Módulo criado para iniciar autenticação de programas (nunca saiu do estágio inicial...); é um bom exemplo do uso de classes, simples de entender. Veja o arquivo autenticacao.py Administração de sistemas usando Python – p.24
  • 25. Laserfilter Programa criado para corrigir o problema do efeito “escada” nas impressões; utilizado em uma impressora laser nesse exemplo; o objetivo do filtro é substituir no final de cada linha o “ n” por “ˆM n”. Veja os arquivos laserfilter e printcap. Administração de sistemas usando Python – p.25
  • 26. Backup Programa para realizar backups; poderia ter sido feito em shell script; mas está em Python para mostrar a diferença. Veja o arquivo backup.py. Administração de sistemas usando Python – p.26
  • 27. Usando um execv() Programa para animar o ambiente; seleciona aleatoriamente um arquivo para tocar; usada uma chamada execv() para executar ao invés de system(). Veja o arquivo mpy3layer.py. Administração de sistemas usando Python – p.27
  • 28. default.ida (code red e nimda) Programa para registrar as tentativas de code red e nimda; é preciso registra a extensão “ ida” com CGI no ¥ apache para que funcione corretamente; sem maiores utilidades... Veja o arquivo default.ida. Administração de sistemas usando Python – p.28
  • 29. Logs do code red [Thu March 07 10:04:50 2002] red code attack from 195.82.69.206 (inter-gw1.bfw-michaelshoven.de) [Fri March 08 02:30:43 2002] red code attack from 61.161.156.17 [Sat March 09 04:50:44 2002] red code attack from 65.94.232.21 (MTL-HSE-ppp202767.qc.sympatico.ca) [Mon March 11 19:28:27 2002] red code attack from 12.238.129.99 (12-238-129-99.client.attbi.com) [Mon March 11 21:48:09 2002] red code attack from 209.12.200.2 (www.multi-page.net) [Tue March 12 03:05:17 2002] red code attack from 195.171.4.130 (server.stricklandgate-house.org.uk) [Tue March 12 06:38:49 2002] red code attack from 218.13.3.48 [Tue March 12 07:56:30 2002] red code attack from 213.145.184.9 (213-145-184-9.dd.nextgentel.com) [Mon March 18 09:10:03 2002] red code attack from 210.72.161.107 [Mon March 18 13:50:55 2002] red code attack from 63.197.79.111 (adsl-63-197-79-111.dsl.snfc21.pacbell.net) Administração de sistemas usando Python – p.29
  • 30. Boot advertisement Usando em ambiente os as máquinas recebem IP via DHCP; evita a solicitação de registro de IP fixo para algumas máquinas; na máquina cliente, que inicializa via DHCP, é executado um shell script; no servidor, com o web habilitado, é executado um CGI em Python para tratamento das informações; a informação é verificada com uso de MD5; se confere, é enviada por mail. Nesse exemplo, o servidor roda em uma máquina FreeBSD, enquanto que o cliente, OpenBSD. Veja os arquivos system.cgi e bootadvertise. Administração de sistemas usando Python – p.30
  • 31. MRTG Usado para verificar algumas funções da máquina: load average (carregamento) uptime utilizações de disco servidor Quake Administração de sistemas usando Python – p.31
  • 32. ADSL Utilizado para verificar o status do link ADSL com um modem “Parks”; feito para conexão “business”, mas pode ser modificado para “home”; funciona tal qual um telnet no modem, seguindo a seqüência para dar um “reset” na linha ADSL (para perda de sinal sem o “re-trainning”); atualmente não funciona muito, já que o problema de perda de sincronismo é mínimo; mas ajuda a saber o estado da linha. Veja o arquivo adsl_check.py. Administração de sistemas usando Python – p.32
  • 33. Gráfico ADSL Administração de sistemas usando Python – p.33
  • 34. Automação de provedor Criado durante uma consultoria a um provedor; para inserir automagicamente o cliente no serviço de mail de sua empresa (virtualhost do sendmail); além de registrar seu domínio (named); e criar seu site default na web (apache). Problemas com permissões: Python não funciona setuid! Para ativar setuid ou utiliza-se o sudo ou cria-se um programa em C com uma chamada system()/execv() e altera-se as permissões deste para setuid (chmod 4755). Veja os arquivos suporte.py e dominio.py Administração de sistemas usando Python – p.34
  • 35. Pyqt e Qt-designer Uso do aplicativo “pyuic” para gerar o módulo com o código. Administração de sistemas usando Python – p.35
  • 36. wxPython Biblioteca semelhante à MFC, Microsoft Foundation Classes, mas é GPL e multi-plataforma; existe para Python e C++, entre outras; não existe um RAD para desenvolvimento, como pyqt. Administração de sistemas usando Python – p.36