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

为何subprocess.check_output执行远程systemctl命令返回非零退出状态3?

问题:subprocess.check_output调用systemctl命令报错的原因

我需要检查QEMU实例(标准连接方式为ssh root@192.168.7.2)上<SERVICE>的状态:

命令行执行正常

直接在命令行执行以下命令:

sshpass -p none ssh -o StrictHostKeyChecking=no root@192.168.7.2 -t 'systemctl is-active <SERVICE>'

能得到预期输出:

failed

使用subprocess.check_output执行报错

但用Python的subprocess.check_output执行相同命令时:

subprocess.check_output("sshpass -p none ssh -o StrictHostKeyChecking=no root@192.168.7.2 -t 'systemctl is-active <SERVICE>'", shell=True, encoding='utf8', stderr=subprocess.DEVNULL)

会抛出如下错误:

Traceback (most recent call last):
  File "", line 1, in 
  File "/usr/lib/python3.8/subprocess.py", line 415, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, 
  File "/usr/lib/python3.8/subprocess.py", line 516, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command 'sshpass -p none ssh -o StrictHostKeyChecking=no root@192.168.7.2 -t 'systemctl is-active <SERVICE>'' returned non-zero exit status 3.

其他命令执行正常

用相同代码执行其他命令(如echo $PATH)时,subprocess.check_output能得到预期输出:

'/usr/bin:/bin:/usr/sbin:/sbin\n'

请问为何subprocess.check_output与systemctl配合时无法正常工作?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:17:31