You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下用Python从文件创建用户与密码遇chpasswd错误求助

问题分析与修复

你的代码存在几个关键问题,直接导致了chpasswd报错,逐一解决如下:

  1. 嵌套循环逻辑错误
    两层嵌套循环会让第一个用户重复创建两次(对应两个密码),第二个用户完全不会被处理——因为passwords.txt的文件指针读完第一次就到末尾了,不会再从头读取。正确逻辑是按顺序一一对应,第一个用户匹配第一个密码,第二个用户匹配第二个密码。

  2. 字符串拼接与chpasswd格式错误
    chpasswd要求输入格式为username:password,你的代码里echo +line +passw是错误写法:既没有正确拼接变量,也没按要求用冒号分隔。另外读取文件时每行末尾会自带换行符,必须用strip()去掉,否则用户名/密码里的换行符会导致命令执行失败。

  3. 多余的pass语句
    外层循环里的pass完全无用,直接跳过了对当前行的初始处理,删掉即可。


修正后的代码
import os

# 读取两个文件内容,按行一一对应
with open("users.txt", 'r') as user_file, open("passwords.txt", 'r') as pass_file:
    # 读取每行并去除换行符,整理成列表
    users = [line.strip() for line in user_file]
    passwords = [line.strip() for line in pass_file]
    
    # 遍历每一对用户和密码
    for user, pwd in zip(users, passwords):
        # 创建用户
        os.system(f'useradd {user}')
        # 按chpasswd要求的格式传递参数
        os.system(f'echo "{user}:{pwd}" | chpasswd')

额外说明
  • 运行脚本需要root权限,否则useradd和chpasswd会因权限不足报错。
  • 如果两个文件行数不一致,zip()会以较短的文件为准,多余的行不会被处理。
  • 使用f-string(Python3.6+支持)拼接命令比传统的+更清晰,能避免大量字符串拼接错误。

内容的提问来源于stack exchange,提问作者Avinash Babu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 01:40:27