gpt4 book ai didi

python - 在Paramiko中执行curl时,其输出在stderr中,而不是stdout中

转载 作者:行者123 更新时间:2023-12-02 14:16:45 27 4
gpt4 key购买 nike

我有一个手动任务,我在服务器上ssh,在文件夹中cd,然后运行curl命令将文件下载到该文件夹​​。我现在正在尝试在Python程序中自动执行此操作。我可以使用paramiko SSH到服务器并运行任何命令:

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(credentials)
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command('cd /path/to/folder/ && sudo curl -H \'X-JFrog-Art-Api:api_key\' -O "https://path/to/download/file.tar.xz"', timeout=600)
print(f'curl ssh_stdout: {ssh_stdout.readlines()}')
print(f'curl ssh_stderr: {ssh_stderr.readlines()}')

该文件可以正确下载,但是在 stdout中期望的输出出现在 stderr中。这是 stderr:

curl ssh_stderr: ['  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n', '                                 Dload  Upload   Total   Spent    Left  Speed\n', '\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\r  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0\r  0     0    0     0    0     0      0      0 --:--:--  0:00:02 --:--:--     0
...
0 0:04:36 0:04:35 0:00:01 57.6M\r 99 14.9G 99 14.9G 0 0 55.5M 0 0:04:36 0:04:36 --:--:-- 57.6M\r100 14.9G 100 14.9G 0 0 55.5M 0 0:04:36 0:04:36 --:--:-- 57.8M\n']

这似乎不是使我的过程自动化的好方法。是否有其他方法可以更好地针对此类操作量身定制其他库?我在想类似 requests的东西。

最佳答案

curl将其进度输出到stderr。

您的代码或Paramiko都没错。

在 shell 中,尝试:

curl https://www.example.com/ > stdout 2> stderr

您将看到 stdout将包含example.com HTML内容,而 stderr将包含 curl进度输出。

关于python - 在Paramiko中执行curl时,其输出在stderr中,而不是stdout中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61504460/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com