我在从python更改Linux用户密码时遇到问题.我已经尝试了很多东西,但是我无法解决这个问题,这里是我已经尝试过的事情样本:
sudo_password是sudo的密码,sudo_command是我希望系统运行的命令,
user来自List,是我想要更改密码的用户,newpass是我要分配给’user’的传递
user = list.get(ANCHOR)
sudo_command = 'passwd'
f = open("passwordusu.tmp", "w")
f.write("%s\n%s" % (newpass, newpass))
f.close()
A=os.system('echo -e %s|sudo -S %s < %s %s' % (sudo_password, sudo_command,'passwordusu.tmp', user))
print A
windowpass.destroy()
‘A’是执行os.system的返回值,在本例中为256.我也试过了
A=os.system('echo %s|sudo -S %s < %s %s' % (sudo_password, sudo_command,'passwordusu.tmp', user))
但它返回相同的错误代码.我用’passwd’命令尝试了其他几种方法,但没有成功.
使用’chpasswd’命令,我试过这个:
user = list.get(ANCHOR)
sudo_command = 'chpasswd'
f = open("passwordusu.tmp", "w")
f.write("%s:%s" % (user, newpass))
f.close()
A=os.system('echo %s|sudo -S %s < %s %s' % (sudo_password, sudo_command,'passwordusu.tmp', user))
print A
windowpass.destroy()
还有:
A=os.system('echo %s|sudo -S %s:%s|%s' % (sudo_password, user, newpass, sudo_command))
@;which returns 32512
A=os.system("echo %s | sudo -S %s < \"%s\"" % (sudo_password, sudo_command, "passwordusu.tmp"))
@;which returns 256
我试过’mkpasswd’和’usermod’也是这样的:
user = list.get(ANCHOR)
sudo_command = 'mkpasswd -m sha-512'
os.system("echo %s | sudo -S %s %s > passwd.tmp" % (sudo_password,sudo_command, newpass))
sudo_command="usermod -p"
f = open('passwd.tmp', 'r')
for line in f.readlines():
newpassencryp=line
f.close()
A=os.system("echo %s | sudo -S %s %s %s" % (sudo_password, sudo_command, newpassencryp, user))
@;which returns 32512
但是,如果你去https://www.mkpasswd.net,哈希’newpass’并替换’newpassencryp’,它返回0理论上意味着它已经正确,但到目前为止它不会改变密码.
我已经在互联网和stackoverflow上搜索了这个问题或者类似的问题并尝试了解决方案,但是再次没有成功.
我真的很赞赏任何帮助,当然,如果你需要更多信息,我会很乐意提供它!
提前致谢.