Файловые операции удаленного хоста через SSH2 в Java

У меня пока простое задание: подключиться к удаленному серверу и получить список файлов и их информацию (в частности, дату создания).

Пробовал JSch, но это все равно что писать приложение для Unix 20 лет назад. Я хотел бы переключиться на sshj, поэтому, если это возможно, предоставьте некоторый код о том, как добиться хотя бы листинга файлов и их информации (в идеале, я хотел бы получить массив объектов File).

Так как я могу достичь цели?

Заранее спасибо.

ПРИМЕЧАНИЕ: AFAIU это возможно только при наличии ls на стороне сервера и его разборе, не так ли?

3 ответа

Решение

У них есть примеры, связанные с их исходным дистрибутивом. Вы смотрели их? Я нашел это через 2 минуты: sshj: как выполнить пример удаленной команды

Редактировать:

Хорошо, вы можете выполнить, например, (основываясь на примере, который я связал):

final Command cmd = session.exec("ls -l /some/interesting/dir");
String lsOutput = cmd.getOutputAsString();

// parse lsOutput and extract required information
...

Нет более простого способа, если вы хотите сделать это снова sshпотому что он не имеет представления о файлах и т. д. Это просто удаленная оболочка. Может быть sftp мог бы обеспечить лучший интерфейс здесь, но я не эксперт с sftp,

Вот код для sftp (JSCH)

ChannelSftp sftp = (ChannelSftp)session.openChannel("sftp");
sftp.connect();
sftp.cd(DIRECTORY);
Vector v = null;
v = sftp.ls("*.txt"); //txt files only

Использовать с ключевым файлом:
JSch jsch = new JSch();
jsch.setKnownHosts(myKonfig.getKnownHostsFile());
String privKeyFile = myKonfig.getPrivateKeyFile();
jsch.addIdentity(privKeyFile);

К сожалению, только что увидел, что он не возвращает время создания, только время модификации.

Если вы просто хотите получить информацию о файле из удаленной системы, я бы порекомендовал использовать класс SFTPClient, предоставленный в sshj.

использовать:

SFTPClient.ls(directory)

Команда, чтобы найти все удаленные файлы, затем используйте:

SFTPClient.stat(file)

получить всю информацию из удаленных файлов, включая дату модификации.

Другие вопросы по тегам