python和paramiko stat在不存在的fi上返回的问题

2024-09-19 23:39:07 发布

您现在位置:Python中文网/ 问答频道 /正文

代码:

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

结果:

^{pr2}$

文件在目标sftp服务器上不存在-预期结果为异常。

同一段代码和我的测试服务器一如预期的那样工作,会抛出一个异常。另外,stat对于现有的文件也会返回同样暗淡的结果。原始文件已通过相同的用户id和相同的脚本传输到目标sftp服务器。在

你知道这里发生了什么吗?我该怎么做?

除了使用的低访问sftp帐户之外,我没有任何其他访问目标服务器的权限。使用手动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信息(见上文)。在

我个人为有用的错误消息欢呼:“Permission denied”它与stat命令返回的内容一致。如果事件日志破坏了寻找失败真正原因的乐趣,那将是绝对可怕的。在


Tags: 文件代码name路径服务器目标serverssh