java - Java程序从Linux服务器远程读取文件

  显示原文与译文双语对照的内容

我想通过我的java程序远程访问文件,但它写了这段代码但它不能工作。


public static void main(String arg[]) throws FileNotFoundException
 {
 JSch jsch = new JSch();
 Session session = null;
 BufferedReader br = null;
 try {
 session = jsch.getSession("root","IPServer", 22);
 session.setConfig("StrictHostKeyChecking","no");
 session.setPassword("Password");
 session.connect();
 System.out.println("Server is connect");
 try
 {
 String command ="scp -f/var/log/callrec/core1.log";
 Channel channel = session.openChannel("exec");
 ((ChannelExec)channel).setCommand(command);

 OutputStream out = channel.getOutputStream();
 InputStream in = (InputStream) channel.getInputStream();

 channel.connect();

 br = new BufferedReader(new InputStreamReader(in));

 StringBuilder sb = new StringBuilder();

 String line;
 while ((line = br.readLine())!= null) {
 System.out.println(line);
 }

 System.out.println("nDone!");
 }
 catch(Exception e)
 {
 e.printStackTrace();
 }
 session.disconnect();
 } catch (JSchException e) {
 e.printStackTrace(); 
//} catch (SftpException e) {
//e.printStackTrace();
 }
 }

我的程序没有发出任何错误,我可以在控制台上看到"服务器已经连接"消息,然后它不给出任何它的他输出。

时间: 作者:

首先检查是否可以通过 shell 通过连接到这个服务器。 你将消除网络问题。 例如linux服务器可能拒绝远程 root 登录。

然后一旦你的程序挂起,登录到这个linux服务器并运行was命令,如果你的java程序成功登录。 或者,你可以运行 -afx 命令来查看,如果scp命令正在运行。 或者更好地执行触摸/var/tmp/java-test 命令,而不是 scp 。 如果你成功地从java上执行远程命令,那么 ls将告诉你。

我希望这能帮助你找到原因。

作者:
...