0

我将使用 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()
4

3 回答 3

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')
于 2015-11-19T09:37:06.963 回答
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 从标准输入获取密码。

于 2016-02-24T18:20:01.617 回答
-2

所以如果我没看错这应该有效吗?

from subprocess import Popen

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

谢谢您的帮助!

可悲的是,我还没有访问服务器的权限,所以我无法对其进行测试。而且我不想给服务器管理员一个不工作的脚本。

于 2013-11-13T09:48:50.963 回答