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

问题描述 投票:0回答:4

我将使用 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()
python linux passwords samba
4个回答
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')

0
投票

无法发表评论,这就是为什么这里的版本与尼曼略有不同:

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 获取密码。


0
投票

def set_smb_password(用户名,密码): 尝试: # 设置Samba密码 命令= ['sudo', 'smbpasswd', '-a', '-s', 用户名] 输入数据 = f"{密码} {密码} “.encode('utf-8')

    subprocess.run(command, input=input_data, check=True)

    print(f"Samba password set successfully for user '{username}'.")
except Exception as e:
    print(f"Error: {e}")

-2
投票

那么如果我没看错的话这应该可行吗?

from subprocess import Popen

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

谢谢您的帮助!

遗憾的是我还没有访问服务器的权限,所以我无法测试它。而且我不想向服务器管理员提供不起作用的脚本。

© www.soinside.com 2019 - 2024. All rights reserved.