作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2017-11-05 14:29:37※ 引述《fordpines (阿福)》之銘言:
推 yeh6: echo <password> | sudo -S <command> , 只是密碼明文很好笑 11/05 09:56
針對這部份講一下, 主要有幾個解法
1. 用 getpass 模組在 runtime 獲得密碼
import getpass
password = getpass.getpass('輸入密碼: ')
Popen(f'echo {password} | sudo -S ...', shell=True)
2. 用 pexpect https://github.com/pexpect/pexpect
這個模組類似 Unix 的 expect 工具
可以讓你在程式裡指定遇到某個 prompt 的時候自動輸入資訊
基本上就是用在這個用途, 會比前面的 echo 解法更好
搭配 getpass 也就不用直接把密碼寫在程式裡了
3. 直接叫 subprocess 讓你輸入
用 Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE)
就可以在 terminal 看到子程式的 prompt 和直接輸入回去
作者: yeh6 2016-11-05 09:56:00
echo <password> | sudo -S <command> , 只是密碼明文很好笑