我有一个手动任务,我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()}')
文件下载正确,但在stderr
中显示了我在stdout
中预期的输出。这是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
这样的东西。
发布于 2020-04-29 23:24:48
curl
将其进度输出到stderr。
你的代码没有问题,Paramiko也没有问题。
在shell中,尝试:
curl https://www.example.com/ > stdout 2> stderr
您将看到stdout
将包含example.com HTML内容,stderr
将包含curl
进度输出。
https://stackoverflow.com/questions/61504460
复制相似问题