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 № 1Seu 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:
Prepare um script auxiliar para enviar a senha:
#!/bin/sh echo "p@sswd"
Do Python, defina
SUDO_ASKPASS
ao seu script de ajuda e,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!