python和paramiko stat在非现有文件上返回的问题

时间:2016-04-28 13:47:15

标签: python sftp paramiko stat

代码:

try:    
    ajoLogi.ajoLogi("Onko tiedosto "+dst+" jo palvelimella", "Stat")
    stat = sftpClient.stat(dst)
    print(stat)
    if stat.st_mtime != 0 :
        leima = datetime.fromtimestamp(stat.st_mtime)                    
        ajoLogi.ajoLogi("Tiedoston aikaleima:"+leima.strftime('%Y-%m-%d %H:%M:%S'), "Stat")
    else :
        ajoLogi.ajoLogi("Tiedoston aikaleima on nolla", "Stat")
        continue

结果:

drwx------   1 0        0               0 01 Jan 1980  ?

目标sftp-server上不存在文件 - 预期结果是异常。

同样的代码可以按预期与我的测试服务器一起使用,抛出异常。此外,stat还会返回现有文件的相同结果。原始文件已通过相同的用户ID和相同的脚本传输到目标sftp服务器。

知道这里发生了什么,以及如何解决这个问题?

除了使用的低访问权限sftp-account之外,我没有任何其他目标服务器访问权限。使用手动sftp命令尝试使用相同的帐户会显示该文件不存在,并允许放置和删除文件。

部分解决方案

导致问题的服务器是:“SSH-2.0-6.4.10.264 SSH Tectia Server”,它要求所有路径都是绝对的 - 即以'/'开头。没有这一切都失败了。

使用“SSH-2.0-6.4.7.204 SSH Tectia Server”,我测试的服务器,服务器要求所有路径都是相对的或一切都失败。

后者对绝对路径的作用 - 根据Windows应用程序日志:

2016 Sft_server_stat_file_failed, "2016 Sft_server_stat_file_failed,
File  name: /7120/in/FPVI4170.ERI, "Error: Permission denied", 
Session-Id: 8745309"

以及相对路径:

2015 Sft_server_stat_file, "2015 Sft_server_stat_file, 
File name: \\xxxxx.yyyy.local\files\user.name\7120\in\FPVI4170.ERI,
"Success", Session-Id: 8745716"

当找不到路径时,您尝试使用stat,那么两个服务器版本都将返回相同的虚假统计信息(参见上文)。

我个人为有用的错误消息欢呼:“权限被拒绝”它与stat-command返回的内容一致。如果事件日志会破坏寻找失败的实际原因的乐趣,那将是非常可怕的。

0 个答案:

没有答案