我试图编写一个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可以做到这一点。
任何帮助都是非常感谢的。
发布于 2014-01-04 23:41:44
把echo扔了。
import subprocess
subprocess.call(['sudo', '-S', 'pacman', '-Syy'])sudo程序将询问用户一定次数。Python程序不需要知道用户的密码。永远不会。
另一个问题是您使用的是shell=True,这意味着如果我的密码是$nakel0ver,因为我喜欢蛇,那么您的程序将向sudo传递一个空密码。
https://stackoverflow.com/questions/20928103
复制相似问题