Путь к каталогу не распознается JAOH в Windows с помощью инструментария mksnt

У меня есть виртуальная машина Windows, настроенная с помощью инструментария mksnt. Так что это будет означать, что мой путь станет C:/abc/xyz

Я пытаюсь удаленно подключиться из Linux-окна с помощью утилиты Jsch к этому компьютеру с 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 или любой другой инструмент. Это окружение. предоставленный мне, и мне нужно совершать удаленные вызовы с хоста Linux только с помощью утилиты Jsch.


person palkarrohan    schedule 19.01.2017    source источник


Ответы (2)


C:/abc/xyz

Протокол SFTP использует подобную unix схему именования для путей к файлам, независимо от операционной системы сервера SFTP. В схеме именования SFTP абсолютные пути начинаются с «/». Имя, начинающееся с «C», будет ссылаться на файл в рабочем каталоге сеанса SFTP.

Другими словами, SFTP-сервер на базе Windows может интерпретировать это имя пути не так, как вы ожидаете. Вы должны использовать интерактивный SFTP-клиент, чтобы войти на SFTP-сервер Windows, найти интересующие вас файлы и/или каталоги и определить правильный путь для доступа к ним через SFTP.

Если на SFTP-сервере Windows работает SFTP-сервер Cygwin OpenSSH, я считаю, что правильный путь будет примерно таким: «/cygdrive/c/abc/xyz».

person Kenster    schedule 24.01.2017

Я сталкивался с той же проблемой в прошлом, и я решил, используя следующий код:

String remoteFolder = "C:\temp\test"
remoteFolder = "/" + remoteFolder.replace("\\", "/");

С помощью этого JSCH может определить, существует ли удаленный путь или нет. Это требуется только в Windows.

person Jaime Villaseñor    schedule 14.09.2020