我有一个已使用mksnt工具包配置的Windows VM。那么这意味着我的道路将成为C:/ abc / xyz
我正在尝试从使用Jsch utilty的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主机远程调用。
答案 0 :(得分:2)
C:/abc/xyz
SFTP协议对文件路径名使用类似unix的命名方案,与SFTP服务器的操作系统无关。在SFTP命名方案中,绝对路径名以" /"开头。以" C"开头的名称将在SFTP会话的工作目录中引用文件。
换句话说,基于Windows的SFTP服务器可能无法按照您期望的方式解释此路径名。您应该使用交互式SFTP客户端登录Windows SFTP服务器,找到您感兴趣的文件和/或目录,并确定用于通过SFTP访问它们的正确路径。
如果Windows SFTP服务器正在运行Cygwin OpenSSH SFTP服务器,我相信正确的路径类似于" / cygdrive / c / abc / xyz"。
答案 1 :(得分:0)
我过去也遇到过同样的问题,并且使用以下代码解决了问题:
#output
name value1 value2 value3 value4
1 appleJapan 2 8 33 1 # ended up using the name from the ref.df
2 applesJapan 3 9 34 2 # merge df1 and df2
3 appleUS 4 10 NA NA # replacing NA for not exist values
4 pearsJapan 5 11 NA NA
5 watermeleonUS NA NA 34 2
6 pearChina NA NA 73 9 # name with only one letter difference consider as typo, so we will just sum the values up.
# bananaxxeeChina is not here because it does not referenced by the ref.df
使用此JSCH可以检测远程路径是否存在。这仅在Windows中是必需的。