首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Paramiko中执行curl时,它的输出是stderr,而不是stdout

在Paramiko中执行curl时,它的输出是stderr,而不是stdout
EN

Stack Overflow用户
提问于 2020-04-29 22:37:51
回答 1查看 389关注 0票数 1

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

代码语言:javascript
运行
复制
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()}')

文件下载正确,但在stderr中显示了我在stdout中预期的输出。这是stderr

代码语言:javascript
运行
复制
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这样的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-29 23:24:48

curl将其进度输出到stderr。

你的代码没有问题,Paramiko也没有问题。

在shell中,尝试:

代码语言:javascript
运行
复制
curl https://www.example.com/ > stdout 2> stderr

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61504460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档