Perseus补丁终极指南:3分钟解锁碧蓝航线全皮肤功能
2026/7/10 22:58:05
在 Linux 服务器自动化运维、初始化脚本或容器环境中,经常需要判断某个系统用户是否存在:
本文介绍如何使用Python 的 subprocess 模块,调用系统命令id和adduser,实现检测 Unix 用户是否存在,不存在则创建的功能。
适用于:
整体逻辑非常简单:
使用id username
通过subprocess.run(..., check=True)
CalledProcessError捕获异常后,调用adduser创建用户
流程图如下:
检测用户是否存在 │ ├── 存在 → 输出 User exists │ └── 不存在 → 创建用户 → 输出创建成功importsubprocess# 替换为你要检测/创建的用户名unix_username="username"try:# 1. 检测用户是否存在subprocess.run(["id",unix_username],check=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)print("User exists")exceptsubprocess.CalledProcessError:try:# 2. 用户不存在,创建用户subprocess.run(["adduser","-m","-s","/bin/bash",unix_username],check=True)print(f"User{unix_username}created successfully.")exceptsubprocess.CalledProcessErrorase:print(f"Error creating user:{e}")print("User does not exist")id usernameidusernamePython 中用来判断用户是否存在非常合适。
subprocess.run参数说明subprocess.run(["id",unix_username],check=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)关键参数说明:
| 参数 | 作用 |
|---|---|
check=True | 命令失败时抛出异常 |
stdout=subprocess.PIPE | 捕获标准输出 |
stderr=subprocess.PIPE | 捕获错误输出 |
["adduser","-m","-s","/bin/bash",unix_username]参数含义:
| 参数 | 说明 |
|---|---|
-m | 创建 home 目录 |
-s /bin/bash | 设置默认 shell |
username | 用户名 |
adduser需要 root 权限,否则会失败:
sudopython3 create_user.py或者脚本本身运行在 root 用户下。
adduser)useradd)CentOS 示例:
["useradd","-m","-s","/bin/bash",unix_username]adduser默认可能会进入交互模式,生产环境建议使用非交互方式:
adduser --disabled-password --gecos""username对应 Python:
["adduser","--disabled-password","--gecos","",unix_username]原因:
解决:
sudopython3 script.py原因:
解决:
useradd