我可以使用哪个python库与交互式shell脚本/二进制文件进行交互。
例如,我如何运行
sudo bla bla bla
如果sudo问的话,那么从python中接下来将密码写入subprocess stdin?
更新。 我会尝试pexpect库。
答案 0 :(得分:1)
您的示例是一个非常特殊的情况,因为sudo
从终端读取密码 - 而不是从stdin读取密码。因此,简单的重定向不适合该任务。
然而,sudo有一点知道功能,允许调用外部程序来读取密码。这是绝对不是我会鼓励的东西,但如果你真的想这样做,并且对于以纯文本形式存储密码作为脚本的一部分的想法很容易,你可能会这样:
准备一个帮助脚本来发送密码:
#!/bin/sh
echo "p@sswd"
从Python中,将SUDO_ASKPASS
设置为您的助手脚本,然后
调用sudo -A
>>> import os
>>> import subprocess
>>> os.environ['SUDO_ASKPASS'] = '/path/to/your/helper/script.sh'
>>> subprocess.Popen(["/usr/bin/sudo", "-A", ....])
答案 1 :(得分:0)
图书馆pexpect就是我想要的!