Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Mão na Massa LDAP - 1 Profissional por Máquina
Configure um serviço de Diretórios baseado no servidor OpenLDAP!
Dia 6 de Dezembro - São Paulo
Saiba mais


 

Aprenda inglês em casa

Baixe gratuitamente as duas primeiras aulas

English for Reading and Listening

Receba por email, diariamente, mensagens contendo materiais para leitura e audição, incluindo arquivos no formato MP3 gravados por falantes nativos.

Saiba mais e faça sua inscrição

Você está aqui: Home  → Arquivo Dicas-L

 

Mão na Massa - LDAP

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Publicar em del.icio.us

Manipulando comandos Linux com Python!

Colaboração: Rafael Henrique da Silva Correia

Data de Publicação: 03 de Outubro de 2007

Hoje quando escrevi esta dica a dica do dia era a dica do Bruno Magalhães de Souza, ele ensinava a usar comandos do sistema operacional em php, pois agora venho a vocês para ensinar a mesma coisa, mas com cgi mas especificamente Python! A um tempo atrás rachei minha cabeça para tentar descobrir uma forma de pegar a saída de uma comando do Linux em Python, hoje consigo tanto executá-lo como conseguir sua saída ;) !

É o seguinte:

Abrindo o interpretador Python:

  asm:/home/rafael# python
  Python 2.4.4 (#2, Apr  5 2007, 20:11:18)
  [GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
  Type "help", "copyright", "credits" or "license" for more information.
  >>>import os
  >>>import commands

Agora explicarei esses dois módulos importados...

  1. O módulo os tem logicamente relação com seu sistema operacional
  2. E o módulo commands logicamente tem relação com os comandos deste sistema (seja qualquer um que rode Python)

Aí vem...

  >>>os.system("ls")

Este método system chamará o comando ls e o executará! Agora vem o detalhe ao qual demorei um tempo pra descobrir...

  >>>var = os.system("ls")

Esta variável var pegará o return do comando executado (0 se deu certo o comando e diferente de 0 se deu errado)! Testem...

  >>>print var

Aí pensei cá com meus neurônios, e como pego o output?? Aí que tive a idéia de pedir um help para o meu professor e veio a saída (literalmente hehehe)...

  >>>var = commands.getoutput("ifconfig")

Aí agora sim! Agora eu pego a variável como uma string verifiquem:

  >>>type(var)
  <type 'str'>
  
  >>>print var

Bingoo! Bom aí eu faço o que eu quiser com a saída, transformo em lista, gravo num arquivinho texto, etc! Então podem brincar a vontade :)! Dá pra pegar as saídas dos comandos pela web também via apache! Então tem n brincadeiras só falta brincar agora! Boa sorte em seus testes!

Uma boa saída no python é consultar o dir()...

  >>>dir(commands)
  ['__all__', '__builtins__', '__doc__', '__file__', '__name__', 'getoutput', 'getstatus', 'getstatusoutput', 'mk2arg', 'mkarg']

Ele te mostrará tudo que é possível fazer com aquilo (todos os métodos), outra opção é o help()...

  >>>help(commands)

Que é tipo de um man do Python :)... flw!

Veja a relação completa dos artigos de Rafael Henrique da Silva Correia

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.16/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.2 /5 (533 votos)

Recomende este site
Recomendar este artigo


Versão para impressão


Opinião dos Leitores

Alvaro de Jesus
17 Ago 2008, 01:13
Valeu mesmo Rafael!
Curto e grosso!
Excelente.
Mais 5 estrelas.
Adam Victor Nazareth Brandizzi
07 Out 2007, 19:42
Complementando a informação do "Jaú", o módulo subprocess vai tornar o módulo commands e as funções popen* obsoletas. Utilize o módulo subprocess sempre que possível.
Marcelo A.
05 Out 2007, 18:28
Muito bom Rafael !

5 estrelas pro artigo !
Jaú
03 Out 2007, 09:07
Boa dica, Rafael!!! Outro dia eu também estava procurando pela mesma coisa (executar comandos e pegar a saída) e fuçando na documentação, acabei chegando ao módulo subprocess. Esse é um escriptezinho que fiz outro dia para adicionar arquivos ao SVN:

#!/bin/env python
# coding=iso-8859-1

# Propósito: poe arquivos nao versionados sob o controle de versao
# Autor: Jaú
# Data: 26/09/2007

from subprocess import Popen, PIPE
import re
import os

def main():
process = Popen(["svn", "status"], stdout=PIPE)
result = process.stdout.read()

for line in result.splitlines():
m = re.match(r"\?\s+(.+)", line)
if m:
file = m.group(1)
os.system("svn add %s" % file)



if __name__ == "__main__":
main()


Referência para o módulo subprocess: http://docs.python.org/lib/module-subprocess.html
*Nome:
Email:
Me notifique sobre novos comentários nessa pagina
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script

Mão na Massa LDAP - 1 Profissional por Máquina
Configure um serviço de Diretórios baseado no servidor OpenLDAP!
Dia 6 de Dezembro - São Paulo
Saiba mais

Biblioteca

Redes - Guia Prático
Por Carlos. E. Morimoto

Hardware - o Guia Definitivo
Por Carlos. E. Morimoto

Kurumin 7 - Guia Prático
Por Carlos. E. Morimoto

Linux: Ferramentas Técnicas, 2ed
Por Carlos. E. Morimoto

VPN: Virtual Private Network
Por Lino Sarlo da Silva

MySQL - Guia do Programador
Por André Milani

Sistemas de Banco de Dados
Por Ramez E. Elmasri e Shamkant Navathe

Hardware PC: Guia de Aprendizagem Rápida
Por Carlos E. Morimoto

Extreme Programming
Por Vinicius Manhaes Teles

Google Hacking
Por JOHNNY LONG

Elite da Tropa
Por Luis Eduardo Soares, Andre Batista e Rodrigo Pimentel

Harry Potter e as Relíquias da Morte
Por J.K. Rowling

Manual Completo do Linux: Guia do Administrador
Por Evi Nemeth, Trent R. Hein, Garth Snyder

PHP para Quem Conhece PHP
Por Juliano Niederauer

O Conhecimento em Rede
Por Carlos Nepomuceno e Marcos Cavalcanti

Enterprise Javabeans 3.0
Por Bill Burke, Richard Monson

Redes de Computadores
Por Andrew S. Tanembaum

Marley e Eu: a Vida e o Amor ao Lado do Pior Cão do Mundo
Por John Grogan

Deus, um delírio
Por Richard Dawkins

Java: Como Programar
Por Harvey M. Deitel e Paul J. Deitel

Descobrindo o Linux: Entenda o Sistema Operacional GNU/Linux
Por Joao Eriberto Mota Filho

Use a Cabeça!: JSP & Servlets
Por Brian Bashan, Kathy Sierra, Bert Bates

1808
Por Laurentino Gomes

UML: Guia do Usuário
Por Grady Booch, James Rumbaugh e Ivar Jacobson