Administração de sistemas usando            Python         Hélio Loureiro <helio@loureiro.eng.br> a             <helio_lou...
Introdução Esta é uma apresentação introdutória da linguagem de programação Python, portanto não espere ver exemplos avanç...
História do Python Python foi criado no início dos anos 90 por Guido van Rossum no Stichting Mathematisch Centrum, CWI, ht...
História do Python (cont.) Em maio de 2000, Guido e o grupo de desenvolvedores do Python migraram para o BeOpen.com para f...
Por quê é chamado Python?   " "Além de ser um cientista da computação, eu também sou fã do   "Monty Python’s Flying Circus...
Onde Python é utilizado   Mailman - gerenciador de listas de discussão   Zope - um ambiente para Webservices (servidor de ...
Descrição Python, em poucas linhas, é:       Linguagem de scripts       Orientada à objetos       Com a possibilidade de g...
Comparações com outras linguagens C Python é orientada à objetos e não possui tipos. C é uma linguagem     compilada, enqu...
Documentação e Bibliografia http://www.python.org/doc/current/tut/tut.html - Python Tutorial http://www.python.org/doc/curr...
Estruturas de dados números num = 5 strings nome = “Debian” listas sistemas = [“Debian”, “OpenBSD”, “FreeBSD”] tuples sequ...
Operadores aritméticos                adição              subtração                            £  ¢               divisão ...
Controles de fluxo: if-elif-else     if (condição):           faça     elif (condição):           faça     else:           ...
Controles de fluxo: for     variavel = [ “Debian”, “GNU”, “Linux”]     for nome in variavel:          print nome Notas: Sin...
Controles de fluxo: while     variavel = 10     while ( variavel ):          print “Debian rulez!”          variavel = vari...
continue, break e pass continue Continua o fluxo do programa. break Finaliza o fluxo. pass Executa sem realizar processament...
FunçõesDeclarada com “def”:def minha_funcao(variavel):   print variavelExemplo de uso:minha_funcao(“I Oficina Debian Paulis...
Objetos, métodos e classes class Apache(self): # classe       def _init_(self): # método            self.conf = “/etc/apac...
Importando módulosDuas formas:     import os           os.system(“uptime”)ou     from os import system           system(“u...
py, pyc e pyo py extensão geralmente usada em scripts Python pyc byte code. Pode ser usado para não redistribuir os     fo...
Controle de exceções  try:    <código> except KeyboardInterrupt:    <código> except:    pass                             A...
30 minutos Espero estar chegando aqui após 30 minutos, onde vimos:     A origem do Python     Onde é usado Python     O qu...
Hello World! #! /usr/bin/python mensagem="Hello World!" print mensagem print "%s" % mensagem                           Adm...
Executando o seu primeiro programa helio@pasargada in ~# python hello.py Hello World! Hello World! helio@pasargada in ~# p...
Autenticação     Módulo criado para iniciar autenticação de     programas (nunca saiu do estágio inicial...);     é um bom...
Laserfilter     Programa criado para corrigir o problema do efeito     “escada” nas impressões;     utilizado em uma impres...
Backup    Programa para realizar backups;    poderia ter sido feito em shell script;    mas está em Python para mostrar a ...
Usando um execv()     Programa para animar o ambiente;     seleciona aleatoriamente um arquivo para tocar;     usada uma c...
default.ida (code red e nimda)     Programa para registrar as tentativas de code red e     nimda;     é preciso registra a...
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 M...
Boot advertisement       Usando em ambiente os as máquinas recebem IP via DHCP;       evita a solicitação de registro de I...
MRTGUsado para verificar algumas funções da máquina:   load average (carregamento)   uptime   utilizações de disco   servid...
ADSL    Utilizado para verificar o status do link ADSL com    um modem “Parks”;    feito para conexão “business”, mas pode ...
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 serv...
Pyqt e Qt-designer                                     Uso do aplicativo “pyuic” para gerar o módulo com o código.        ...
wxPython   Biblioteca semelhante à MFC, Microsoft Foundation   Classes, mas é GPL e multi-plataforma;   existe para Python...
Upcoming SlideShare
Loading in …5
×

Administração de sistemas usando Python

1,100
-1

Published on

Uma apresentação sobre utilização de python para administração de sistemas. Feita para uma oficina Debian-SP em 2002.

Published in: Technology
1 Comment
1 Like
Statistics
Notes
  • Correção: Python possui tipo, a tipagem é dinâmica o que é totalmente diferente de não possuir tipo, além da tipagem em python ser forte(Fortemente tipada), não existem conversões automáticas em python como existem em PHP e JS
    concluindo, python tem tipos!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
1,100
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
26
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Administração de sistemas usando Python

  1. 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/ bhttp://loureiro.dyndns.org:8080/presentation_python/ Copyleft c 2002a Nãoestá funcionando no momento.b Também está fora do ar. Administração de sistemas usando Python – p.1
  2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 16. FunçõesDeclarada com “def”:def minha_funcao(variavel): print variavelExemplo de uso:minha_funcao(“I Oficina Debian Paulista”) Administração de sistemas usando Python – p.16
  17. 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. 18. Importando módulosDuas formas: import os os.system(“uptime”)ou from os import system system(“uptime”)O segundo formato é mais rápido, pois todos os objetose métodos não são importados. O arquivo com móduloprecisar ter uma das extensões: “ py” ou “ pyc” ou “ pyo”. ¥ ¥ ¥ Administração de sistemas usando Python – p.18
  19. 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. 20. Controle de exceções try: <código> except KeyboardInterrupt: <código> except: pass Administração de sistemas usando Python – p.20
  21. 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. 22. Hello World! #! /usr/bin/python mensagem="Hello World!" print mensagem print "%s" % mensagem Administração de sistemas usando Python – p.22
  23. 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. 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. 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. 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. 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. 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. 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. 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. 31. MRTGUsado 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. 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. 33. Gráfico ADSL Administração de sistemas usando Python – p.33
  34. 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. 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. 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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×