我可以使用哪个python库与交互式shell脚本/二进制文件进行交互。通过标准输入与标准输出stdout和stdr在Python中的交互
例如,我怎么可以运行
sudo bla bla bla
从Python和下一个写密码子过程标准输入,如果须藤问吗?
更新。 我会尝试pexpect库。
我可以使用哪个python库与交互式shell脚本/二进制文件进行交互。通过标准输入与标准输出stdout和stdr在Python中的交互
例如,我怎么可以运行
sudo bla bla bla
从Python和下一个写密码子过程标准输入,如果须藤问吗?
更新。 我会尝试pexpect库。
图书馆pexpect是我想要的!
你的例子是一个非常特殊的情况,因为sudo
从终端读取密码 - 而不是从标准输入。所以一个简单的重定向不适合这个任务。
但是有一点sudo的功能,允许调用外部程序来读取密码。这是是绝对不东西,我会鼓励,但如果你真的想这样做,是舒适与采用明文存储密码作为脚本的一部分的想法,你可能会走那条路:
准备一个辅助脚本发送密码:
#!/bin/sh
echo "[email protected]"
从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", ....])
要求用户使用'sudo python script.py'调用脚本并让他在命令行输入密码比在脚本中包含sudo密码要安全得多。 – unutbu 2015-04-03 17:06:00
Sudo只是一个例子。 – 2015-04-03 19:58:34