※ 引述《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 和直接输入回去