2016-02-12 3 views
0

Я пытаюсь получить список всех файлов/каталогов с удаленного сервера с помощью JSch и я могу иметь возможность получить всю необходимую информацию, а также ..список всех файлов в удаленном сервере с помощью JSch

Но моя проблема в список JSch все файлы с датой создания файла, отметкой времени, типом разрешения на чтение и запись и т. д.,

Но в моем случае мне нужно только имя файла/каталога на удаленном сервере, и никакая дополнительная информация не требуется ..

Ниже приведена моя часть кода Java.

import java.util.Vector; 

import com.jcraft.jsch.Channel; 
import com.jcraft.jsch.ChannelSftp; 
import com.jcraft.jsch.JSch; 
import com.jcraft.jsch.Session; 


public class Listremoteserver { 


    /** 
    * @param args 
    */ 
    @SuppressWarnings("unchecked") 
    public static void main(String[] args) { 
     String SFTPHOST = "xxxxx"; 
     int SFTPPORT = 22; 
     String SFTPUSER = "xxx"; 
     String SFTPPASS = "xxxxx"; 
     String SFTPWORKINGDIR = "/root"; 

     Session  session  = null; 
     Channel  channel  = null; 
     ChannelSftp channelSftp = null; 

     try{ 
      JSch jsch = new JSch(); 
      session = jsch.getSession(SFTPUSER,SFTPHOST,SFTPPORT); 
      session.setPassword(SFTPPASS); 
      java.util.Properties config = new java.util.Properties(); 
      config.put("StrictHostKeyChecking", "no"); 
      session.setConfig(config); 
      session.connect(); 
      channel = session.openChannel("sftp"); 
      channel.connect(); 
      channelSftp = (ChannelSftp)channel; 
      channelSftp.cd(SFTPWORKINGDIR); 
      Vector filelist = channelSftp.ls(SFTPWORKINGDIR); 
      for(int i=0; i<filelist.size();i++){ 
       System.out.println(filelist.get(i).toString()); 
      } 

     }catch(Exception ex){ 
      ex.printStackTrace(); 
     } 
    } 
} 

Результаты выше программы

-rw-r--r-- 1 root  root   3161 Feb 11 2014 install.log.syslog 
-rw-r--r-- 1 root  root   18 May 20 2009 .bash_logout 
-rw-r--r-- 1 root  root   176 Sep 23 2004 .bashrc 
-rw-r--r-- 1 root  root   176 May 20 2009 .bash_profile 
-rw-r--r-- 1 root  root   129 Dec 3 2004 .tcshrc 
-rw------- 1 root  root   1114 Feb 11 2014 anaconda-ks.cfg 
dr-xr-x--- 2 root  root   4096 Feb 11 2014 . 
-rw-r--r-- 1 root  root   9169 Feb 11 2014 install.log 
-rw------- 1 root  root   1055 Feb 11 2014 .bash_history 
-rw-r--r-- 1 root  root   100 Sep 23 2004 .cshrc 
dr-xr-xr-x 24 root  root   4096 Feb 12 04:19 .. 

ответ

-1

пытаются EXEC команду LS:

Channel channel=session.openChannel("exec"); 
    ((ChannelExec)channel).setCommand("cd " + SFTPWORKINGDIR + " && ls"); 
    channel.connect(); 
    channel.run(); 

Vector filelist = channel.run(); 
for(int i=0; i<filelist.size();i++){ 
    System.out.println(filelist.get(i).toString()); 
} 
+1

@CodelsLife: Он хорошо работает! –

+0

строка 5 возвращает сообщение об ошибке channel.run() возвращает void. –

+0

да, это дает ошибку в строке 5. @CodelsLife вы можете обновить ответ –

6

Попробуйте запустить этот код. Здесь мы вводим элементы списка в LsEntry и затем печатаем требуемый атрибут.

import java.util.Vector; 

import com.jcraft.jsch.Channel; 
import com.jcraft.jsch.ChannelSftp; 
import com.jcraft.jsch.ChannelSftp.LsEntry; 
import com.jcraft.jsch.JSch; 
import com.jcraft.jsch.Session; 


public class Listremoteserver { 


    /** 
    * @param args 
    */ 
    @SuppressWarnings("unchecked") 
    public static void main(String[] args) { 
     String SFTPHOST = "xxxxx"; 
     int SFTPPORT = 22; 
     String SFTPUSER = "xxx"; 
     String SFTPPASS = "xxxxx"; 
     String SFTPWORKINGDIR = "/root"; 

     Session  session  = null; 
     Channel  channel  = null; 
     ChannelSftp channelSftp = null; 

     try{ 
      JSch jsch = new JSch(); 
      session = jsch.getSession(SFTPUSER,SFTPHOST,SFTPPORT); 
      session.setPassword(SFTPPASS); 
      java.util.Properties config = new java.util.Properties(); 
      config.put("StrictHostKeyChecking", "no"); 
      session.setConfig(config); 
      session.connect(); 
      channel = session.openChannel("sftp"); 
      channel.connect(); 
      channelSftp = (ChannelSftp)channel; 
      channelSftp.cd(SFTPWORKINGDIR); 
      Vector filelist = channelSftp.ls(SFTPWORKINGDIR); 
      for(int i=0; i<filelist.size();i++){ 
       LsEntry entry = (LsEntry) filelist.get(i); 
       System.out.println(entry.getFilename()); 
      } 

     }catch(Exception ex){ 
      ex.printStackTrace(); 
     } 
    } 
} 
+0

Спасибо за ваш быстрый ответ .. Его решена моя проблема ... –

Смежные вопросы