2015-04-03 239 views
0

我可以使用哪个python库与交互式shell脚本/二进制文件进行交互。通过标准输入与标准输出stdout和stdr在Python中的交互

例如,我怎么可以运行

sudo bla bla bla 

从Python和下一个写密码子过程标准输入,如果须藤问吗?

更新。 我会尝试pexpect库。

+2

要求用户使用'sudo python script.py'调用脚本并让他在命令行输入密码比在脚本中包含sudo密码要安全得多。 – unutbu 2015-04-03 17:06:00

+0

Sudo只是一个例子。 – 2015-04-03 19:58:34

回答

0

图书馆pexpect是我想要的!

1

你的例子是一个非常特殊的情况,因为sudo从终端读取密码 - 而不是从标准输入。所以一个简单的重定向不适合这个任务。

但是有一点sudo的功能,允许调用外部程序来读取密码。这是是绝对不东西,我会鼓励,但如果你真的想这样做,是舒适与采用明文存储密码作为脚本的一部分的想法,你可能会走那条路:

  1. 准备一个辅助脚本发送密码:

    #!/bin/sh 
    
    echo "[email protected]" 
    
  2. 从Python中,设置SUDO_ASKPASS到你的助手脚本,

  3. 调用sudo -A

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