【问题标题】:psftp randomly fails with local: unable to openpsftp 随机失败,本地:无法打开
【发布时间】:2015-04-21 15:57:58
【问题描述】:

psftp put 大约百分之一的时间失败,例如

本地:无法打开 d:\\WorkPath\\F_56MTV56201504201707224380.csv

  1. 调用应用程序需要对文件所在目录路径和上传文件本身的权限
  2. 上传文件所在的目录路径未锁定。见第 (1) 项
  3. 要上传的 csv 文件是用 C++ 创建的,其中 fclose() 函数在关闭文件时不返回 EOF
  4. 目录上传路径已从防病毒软件中排除
  5. 100 次上传中有 99 次按预期工作
  6. 通过调用同一批次重新上传失败的上传文件可以正常工作
  7. 解决方案是多线程的

此时我唯一能看到的不同之处是使用带有本地文件名的 lcd 命令,而不是使用完全限定路径,但理论上,这不会改变任何东西还是我遗漏了什么?

示例批处理文件:

"D:\\Program Files\\ApplicationPath\\psftp.exe" ^
    1.2.3.4 -l username -pw password -batch -bc ^
    -b "d:\\\\WorkPath\\\\\EXMSP35201504210946233890.script" ^ 
    > "d:\\\\WorkPath\\\\\EXMSP35201504210946233890.script.log" 2>&1

示例脚本文件:

put d:\\\\WorkPath\\\\EXMSP35201504210946233890.csv
bye

D: 看起来像连接到服务器的物理磁盘,但是,服务器 2008R2 位于 VMWare 虚拟平台上。

【问题讨论】:

    标签: windows sftp putty psftp


    【解决方案1】:

    使用WinAPI logger 找出底层CreateFile WinAPI 函数调用失败的原因。


    或使用具有更详细错误消息的其他 SFTP 客户端。

    例如,等效的WinSCP script 是:

    winscp.com /command ^
        "option echo on" ^
        "open sftp://username:password@1.2.3.4/" ^
        "put d:\WorkPath\EXMSP35201504210946233890.csv" ^
        "exit" > d:\WorkPath\EXMSP35201504210946233890.script.log
    

    使用 WinSCP,您会收到如下错误:

    文件或文件夹“d:\WorkPath\EXMSP35201504210946233890.csv”不存在。
    系统错误。代码:3。

    系统找不到指定的路径。

    查看introduction to WinSCP scripting

    (我是 WinSCP 的作者)


    您不应该在路径中使用双反斜杠。尽管 Windows 可以容忍这一点。

    【讨论】:

      猜你喜欢
      • 2018-07-14
      • 2010-09-12
      • 2019-07-19
      • 2017-01-10
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      相关资源
      最近更新 更多