Não use os.system()
, ele está obsoleto em favor de subprocess
module.
No seu caso, você pode usar o módulo subprocess
diretamente e é melhor não usar o parâmetro shell=True
, pois isso não é seguro para executar comandos diretamente no shell. Todas as funcionalidades que você precisa aqui, como pipe, podem ser emuladas pelo módulo subprocess
.
Vamos pegar este exemplo:
import subprocess
var = 'foobar'
first = subprocess.Popen(['/bin/echo', var], stdout=subprocess.PIPE)
second = subprocess.Popen(['bash', '/path/to/script', '--args'], stdin=first.stdout)
definimos uma variável var
, depois usamos a classe subprocess.Popen
para obter o valor de var
usando /bin/echo
e, em seguida, enviamos esse valor para o canal. O first
é um objeto da classe subprocess.Popen
.
Em seguida, usamos o STDOUT de first
como STDIN de second
via pipe e executamos o script bash
de acordo.
Se você quiser salvar a saída de um comando como uma string, use subprocess.check_output
function em vez de. :
second = subprocess.check_output(['bash', '/path/to/script', '--args'], stdin=first.stdout)
Leia a documentação oficial do módulo de subprocesso para obter mais ideias.