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

如何在Python中执行sudo命令时无需手动输入用户密码

可行解决方法

方案一:修改sudoers配置(最安全,推荐)

该方法仅给指定的pmset定时唤醒命令开通sudo免密权限,不会放大系统权限风险,操作步骤如下:

  1. 终端执行sudo visudo打开sudo配置文件,不要直接编辑/etc/sudoers,避免语法错误导致sudo完全失效
  2. 在文件末尾添加如下一行,替换你的用户名为你当前登录的系统用户名:
你的用户名 ALL=(ALL) NOPASSWD: /usr/bin/pmset schedule wake *

注意:执行which pmset确认pmset的实际路径,若输出不是/usr/bin/pmset则替换为实际路径,末尾的*是通配符,匹配任意时间参数

  1. 按Ctrl+O保存,Ctrl+X退出visudo,配置立即生效,之后执行该sudo命令无需输入密码。

方案二:通过Python subprocess传递密码(不推荐,存在密码泄露风险)

之前用os.system直接传密码无效,是因为sudo默认从终端TTY读取密码,需要添加-S参数让sudo从标准输入读取密码,配合subprocess实现密码自动传入,代码示例:

import subprocess

# 要执行的命令
cmd = ["sudo", "-S", "pmset", "schedule", "wake", "08/31/21 00:26:00"]
# 启动进程
proc = subprocess.Popen(
    cmd,
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    text=True
)
# 传入密码,注意末尾加换行符
stdout, stderr = proc.communicate(input="你的系统密码\n")
# 可选:打印输出排查问题
if proc.returncode != 0:
    print(f"执行失败,错误信息:{stderr}")

注意:该方案需要将明文密码写在代码中,存在严重的泄露风险,仅建议个人测试临时使用,不要用于生产环境或共享代码场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:24:04