如何验证python中root权限的用户密码

时间:2014-01-04 23:37:29

标签: python linux passwords python-2.x

我正在尝试编写一个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可以执行此操作。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

放弃echo

import subprocess
subprocess.call(['sudo', '-S', 'pacman', '-Syy'])

sudo程序会询问用户一定次数。您的Python程序不需要知道用户的密码。如初。

另一个问题是您使用shell=True,这意味着如果我的密码为$nakel0ver,因为我喜欢蛇,您的程序会将空密码传递给sudo