Python程序从命令行运行时执行,但使用paramiko通过另一个Python程序执行时则不执行]]

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

我有一个Python程序,该程序位于远程服务器上,运行时会将文件上传到AWS存储桶。如果我使用ssh进入服务器并使用命令sudo python3 /path/to/backup.py运行它,则它将按预期工作。

我正在编写一个Python程序来自动化一个更大的过程,其中包括运行backup.py。我使用paramiko库创建了一个函数来执行此操作。这是命令运行的地方

ssh_stdin, ssh_stdout, ssh_stderr = self.ssh.exec_command('sudo python3 /path/to/backup.py, 1800)
logging.debug(f'ssh_stdout: {ssh_stdout.readline()}')
logging.debug(f'ssh_stderr: {ssh_stderr.readline()}')

我的自动化给了我这个输出:

ssh_stdout: Tue, 19 May 2020 14:36:43 INFO     The COS endpoint is 9.11.200.206, writing to vault: SD_BACKUP_4058

之后,程序什么也不做。当我登录服务器并查看backup.py的日志时,我可以看到它仍在运行,并且似乎位于文件上传位置。这是它停留在的代码:

s3_client.upload_file(
    Filename=BACKUP,
    Bucket=BUCKET_NAME,
    Key=SPLIT_FILE_NAME,
    Callback=pp(BACKUP),
    Config=config)

我不明白为什么当我的自动化程序启动它而不是从终端的命令行运行它时,它会卡在这里。我在日志中看不到任何对我有帮助的东西。它似乎只是停留在执行它的那一点上。可能与回调未返回有关?

我有一个Python程序,该程序位于远程服务器上,运行时会将文件上传到AWS存储桶。如果我通过ssh进入服务器并使用命令sudo python3 /path/to/backup.py运行它,它的工作方式就是...

python python-3.x ssh callback paramiko
1个回答
0
投票

您仅读取输出的一行。

© www.soinside.com 2019 - 2024. All rights reserved.