/ / Interação com scripts sobre stdin stdout e stdr em python - python, shell

Interação com scripts sobre stdin stdout e stdr em python - python, shell

Qual biblioteca python eu poderia usar para interagir com scripts / binários de shell interativos.

Por exemplo, como eu poderia correr

sudo bla bla bla

de python e próxima senha para subprocessar stdin se o sudo perguntar?

Atualizar. Eu vou tentar pexpe biblioteca.

Respostas:

1 para resposta № 1

Seu exemplo é um caso muito especial, como sudo lê a senha do terminal - não de stdin. Portanto, um redirecionamento simples não é adequado para essa tarefa.

No entanto, há um recurso pouco conhecido do sudo, permitindo invocar um programa externo para ler a senha. Isto é absolutamente não Algo que eu gostaria de encorajar, mas se você realmente quiser fazer isso e se sentir confortável com a ideia de armazenar uma senha em texto simples como parte de um script, você pode seguir esse caminho:

  1. Prepare um script auxiliar para enviar a senha:

    #!/bin/sh
    
    echo "p@sswd"
    
  2. Do Python, defina SUDO_ASKPASS ao seu script de ajuda e,

  3. invocar sudo -A

    >>> import os
    >>> import subprocess
    >>> os.environ["SUDO_ASKPASS"] = "/path/to/your/helper/script.sh"
    >>> subprocess.Popen(["/usr/bin/sudo", "-A", ....])
    

0 para resposta № 2

Biblioteca pexpe é o que eu quero!