我有一个已使用 mksnt 工具包配置的 Windows 虚拟机。所以这意味着我的路径将变成 C:/abc/xyz
我正在尝试使用 Jsch 实用程序从 Linux 盒子远程连接到这台 Windows 计算机。我能够成功连接,当我尝试检查特定目录路径时,它说它不存在。但是,该路径确实存在于 Windows 框中。
以下是我的 Jsch 代码,用于查找目标目录 -
SftpATTRS dirAttributes=null;
try{
testLog.info("Looking for directory :"+destinationDir);
dirAttributes = sftpc.stat(destinationDir);
} catch(SftpException s){
testLog.info("Directory does not exists !!!\n"+s.fillInStackTrace().toString());;
} catch (Exception e){
testLog.info("Directory does not exists !!!\n"+e.fillInStackTrace().toString());;
}
如果我执行 Linux <-> Linux 远程调用并验证目录,上面的代码可以无缝工作,但使用 Linux <-> Windows 我遇到了这个问题。
由于安装了 mksnt,如果我进入目录并执行“pwd” - 它会打印“C:/abc/xyz”
我不清楚 Jsch 是否由于安装了 mksnt 而无法处理或识别路径。 任何人都可以分享任何解决方案或提供一些可以帮助我解决此问题的指示。
PS:我无法安装 cygwin 或任何其他工具。这是环境。提供给我,我只需要通过 Jsch 实用程序从 Linux 主机进行远程调用。
最佳答案
C:/abc/xyz
无论 SFTP 服务器的操作系统如何,SFTP 协议(protocol)都使用类似 UNIX 的文件路径名命名方案。在SFTP命名方案中,绝对路径名以“/”开头。以“C”开头的名称将引用 SFTP session 工作目录中的文件。
换句话说,基于 Windows 的 SFTP 服务器可能不会按照您期望的方式解释此路径名。您应该使用交互式 SFTP 客户端登录 Windows SFTP 服务器,找到您感兴趣的文件和/或目录,并确定用于通过 SFTP 访问它们的正确路径。
如果 Windows SFTP 服务器正在运行 Cygwin OpenSSH SFTP 服务器,我相信正确的路径将类似于“/cygdrive/c/abc/xyz”。
关于windows - Windows 上的 JSCH 使用 mksnt 工具包无法识别目录路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41738615/