从服务调用时,Python子进程失败

问题描述 投票:0回答:1

以下简单脚本,用于列出ssh​​-agent中的键:

list_keys.sh

#!/bin/bash
ssh-add -l

list_keys.py

if __name__ == '__main__':
    """
    Creates log
    """
    ...

    print("Start")
    print subprocess.check_output(["list_keys.sh"])

直接从终端调用时效果很好。

$python list_keys.py

日志按预期显示:

Start
2048 SHA256:+gkk***************************nQ .ssh/my_key (RSA)

但是当我尝试将其作为服务使用时,它会失败。

Start
Traceback (most recent call last):
  File "list_keys.py", line 43, in <module>
print subprocess.check_output(["list_keys.sh"])
  File "/usr/lib64/python2.7/subprocess.py", line 575, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess
.
CalledProcessError
:
Command '['list_keys.sh']' returned non-zero exit status 2

服务配置:

list_keys.service

[Unit]
Description=List Keys Service
After=multi-user.target
[email protected]

[Service]
Type=simple
ExecStart=/usr/bin/python list_keys.py
StandardInput=tty-force

[Install]
WantedBy=multi-user.target

我正在使用Centos7。是否有任何线索可以将list_keys.py用作服务?

python linux service subprocess
1个回答
0
投票

您很可能忘记了shell文件上的执行位,可以通过以下方式轻松修复:

chmod +x list_keys.sh
© www.soinside.com 2019 - 2024. All rights reserved.