使用Python在SAMBA上更改用户密码

时间:2013-11-06 13:28:35

标签: python linux passwords samba

我将使用Python编写一个脚本来更改SAMBA服务器上的用户密码。 我从未学过Python,现在我在使用Ubuntu的VirtualBox上尝试了不同的东西。 使用此代码,我可以在我的VirtualBox中更改(或更好地删除并设置新的)用户密码。 但它也可以在服务器上运行吗? 我没有线索。请帮我。谢谢!

from subprocess import Popen

uname = raw_input("Username: ")
proc = Popen(['/usr/bin/sudo', '/usr/bin/passwd', uname, '--d'])
proc.communicate()
proc = Popen(['/usr/bin/sudo', '/usr/bin/passwd', uname])
proc.communicate()

3 个答案:

答案 0 :(得分:1)

如果没有用户交互,user2960552的解决方案无效。以下修复:

def create_or_update_samba_user(username, password):
    proc = subprocess.Popen(['sudo', 'smbpasswd', '-a', username], stdin=subprocess.PIPE)
    proc.communicate(input=password + '\n' + password + '\n')

答案 1 :(得分:0)

无法评论为什么这里与Nyman的版本略有不同:

def create_or_update_samba_user(username, password):
    proc = subprocess.Popen(['sudo', 'smbpasswd', '-a', '-s', username], stdin=subprocess.PIPE)
    proc.communicate(input=password + '\n' + password + '\n')

这是不需要任何用户干预的版本。 ' -s'告诉smbpasswd从stdin获取密码。

答案 2 :(得分:-2)

所以如果我读得对,这应该有用吗?

from subprocess import Popen

uname = raw_input("Username: ")
proc = Popen(['/usr/bin/sudo', '/usr/bin/smbpasswd', '-a', uname])
proc.communicate()

感谢您的帮助!

可悲的是我还没有访问Server,所以我无法测试它。而且我不想向服务器管理员提供一个无法运行的脚本。