我可以使用哪個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