我正在尝试编写一个 python 程序,该程序需要用户密码才能使用 subprocess
库运行一些外部命令。代码大致如下所示。
import subprocess
passwordInput = raw_input("What is your password: ")
subprocess.call('echo ' + passwordInput + ' | sudo -S pacman -Syy', shell=True)
此程序运行良好,但如果您输入的密码不正确,程序将失败。我将如何添加某种防错功能来检测密码输入是否错误?
我在想也许可以将这段代码包装在 while
循环中,然后使用 try-except
来测试密码,但是我不确定是哪种 except
可以做到这一点。
非常感谢任何帮助。
最佳答案
只需放弃 echo
。
import subprocess
subprocess.call(['sudo', '-S', 'pacman', '-Syy'])
sudo
程序会询问用户一定次数。您的 Python 程序不需要知道用户的密码。曾经。
另一个问题是您正在使用 shell=True
,这意味着如果我的密码是 $nakel0ver
因为我喜欢蛇,您的程序将传递一个空密码给sudo
.
关于python - 如何在python中验证root权限的用户密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20928103/