Administração de sistemas usando Python

1.339 visualizações

Publicada em

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

Publicada em: Tecnologia
1 comentário
1 gostou
Estatísticas
Notas
  • 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!
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
Sem downloads
Visualizações
Visualizações totais
1.339
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
26
Comentários
1
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no 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

×