我正在尝试编写一个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
可以执行此操作。
非常感谢任何帮助。
答案 0 :(得分:3)
放弃echo
。
import subprocess
subprocess.call(['sudo', '-S', 'pacman', '-Syy'])
sudo
程序会询问用户一定次数。您的Python程序不需要知道用户的密码。如初。
另一个问题是您使用shell=True
,这意味着如果我的密码为$nakel0ver
,因为我喜欢蛇,您的程序会将空密码传递给sudo
。