2015-04-03 117 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", ....]) 
    
相關問題