Pegando saída de comandos linux com Python

Original: Manipulando comandos Linux com Python – Rafael Henrique da Silva Correia

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…

O módulo os tem logicamente relação com seu sistema operacional
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)

Posted

in

,

by

Tags:

Comments

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

%d blogueiros gostam disto: