【问题标题】:SFTP not completing file transfer when using pexpect (python)使用 pexpect (python) 时 SFTP 未完成文件传输
【发布时间】:2018-03-01 15:02:17
【问题描述】:

我目前正在尝试使用 pexpect 传输文件。它通常工作正常,但最近由于不传输整个文件而导致问题。它要么截断文件传输,要么脚本在完成之前继续运行。

我的代码如下:

job_id = str(job_record['control']['id'])
self.px_ssh.sendline('cd ' + self.remotePath + job_id)
self.px_ssh.prompt()
self.px_ssh.sendline('ls')
self.px_ssh.prompt()
remote_files = self.px_ssh.before.decode('utf-8')
for cop in outfiles:
  if cop in remote_files:
    print('Transferring file _from_ remote cluster:   ' + cop)
    self.px_ftp.sendline('get ' + self.remotePath + job_id + '/' + cop + ' ' + os.getcwd())
    self.px_ftp.expect('sftp>', timeout=None)

还有日志文件:

get path/QMCDB/Elemental/As/As_QMC_2x2x2/prop.in.o    path/Documents/Research/QMCDB/Runs/Elemental/As/As_QMC_2x2x2
Connected to taub.campuscluster.illinois.edu.
sftp> get path/QMCDB/Elemental/As/As_QMC_2x2x2/prop.in.o path/Documents/Research/QMCDB/Runs/Elemental/As/As_QMC_2x2x2
Fetching path/QMCDB/Elemental/As/As_QMC_2x2x2/prop.in.o to path/Documents/Research/QMCDB/Runs/Elemental/As/As_QMC_2x2x2/prop.in.o

path/QMCDB/Elemental/As/As_   0%    0     0.0KB/s   --:-- ETA
path/QMCDB/Elemental/As/As_   0%   11MB  11.1MB/s   02:32 ETA
path/QMCDB/Elemental/As/As_   1%   22MB  11.1MB/s   02:31 ETA

可以看出,它只是在很短的时间后继续前进。我不确定它为什么这样做。您知道如何确保在我的其余代码进行之前传输整个文件吗?

【问题讨论】:

标签: python sftp pexpect


【解决方案1】:

我也遇到过这个问题。我认为你应该等待

pexpect.expect('100%')

可能会超时。 sftp 似乎具有异步命令行界面,因此在传输继续时它会立即返回到提示符。超时在这里或多或少是相关的,因为文件被截断,因为脚本在下载仍在进行中/挂起时退出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    相关资源
    最近更新 更多