我将使用 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()
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')
无法发表评论,这就是为什么这里的版本与尼曼略有不同:
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 获取密码。
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}")
那么如果我没看错的话这应该可行吗?
from subprocess import Popen
uname = raw_input("Username: ")
proc = Popen(['/usr/bin/sudo', '/usr/bin/smbpasswd', '-a', uname])
proc.communicate()
谢谢您的帮助!
遗憾的是我还没有访问服务器的权限,所以我无法测试它。而且我不想向服务器管理员提供不起作用的脚本。