2014-01-15 73 views
0

我這是Windows機器上運行我的Java程序。在這臺Window機器上,我需要從Linux服務器讀取文件。 我寫這篇文章的代碼與Linux服務器進行身份驗證,其做工精細閱讀從Linux服務器文件通過java程序

session = jsch.getSession("root", "ServerIP", 22); 
      session.setConfig("StrictHostKeyChecking", "no"); 
      session.setPassword("Passwrod"); 
      session.connect(); 
      System.out.println("Server is connect"); 

我可以看到「服務器是連接」在我的機器上打印該的意思認證與服務器完成。 現在有必要從該服務器讀取該文件,我有寫這樣的代碼

try 
      { 
      File file = new File("/var/log//callrec/core1.log"); 
      LineNumberReader sc = new LineNumberReader(new FileReader(file)); 
      } 
      catch(Exception e) 
      { 
       e.printStackTrace(); 
      } 

但其投擲文件中未發現異常。 任何人都可以指導我如何解決這個問題。

+0

什麼是'jsch'?而且,你還正在訪問代碼中的本地文件 - 只需創建通過一些機制會話不意味着'File'類會自動訪問遠程計算機 –

+0

上的文件它在Java庫,用於認證.. –

+0

你應該添加一個鏈接到您正在使用的庫 - 我的回答如下假定它是通過'http:// www.jcraft.com/jsch /',但是這只是一個粗略的猜測...... –

回答

1

http://www.jcraft.com/jsch/examples/ScpFrom.java.html,你需要在遠端通過你session對象通過這些渠道執行命令,然後獲取輸入和輸出流與遠程命令進行溝通,並讀取該文件的元數據和內容:

... 
String command = "scp -f /var/log/callrec/core1.log"; 
Channel channel = session.openChannel("exec"); 
((ChannelExec)channel).setCommand(command); 

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

channel.connect(); 

// Now use in and out to read the file, 
// see http://www.jcraft.com/jsch/examples/ScpFrom.java.html for a complete example 
... 
+0

安德烈亞斯·謝謝你這麼你累的答覆....我已經嘗試過了你的way..I有寫代碼 BufferedReader中讀者=新的BufferedReader(新的InputStreamReader(中));如果(在!= null){ String str; \t \t \t \t \t while((str = reader.readLine())!= null){System.out.print(str);} } } else { \t System.out.print(「No line」); } 但我的打印服務器後掛程序連接能否請你幫我 –

0

一旦通過SSH登錄,您的Java代碼就不會在Linux服務器上下文中奇蹟般地傳輸。因此,當您使用Java工具讀取文件時,它會在本地機器上搜索文件。

你有那麼至少兩種可能性:

1 /從Linux服務器複製文件,然後在其上工作。您可以更好地利用SFTP而不是SSH如果它是你送的唯一命令(JSCH example here

2 /連接到Linux服務器像你一樣,然後通過空空一個cat myFile命令和讀取的OutputStream流的文件恢復到您的計算機在SSH會議

我的投票將是第一種方法,這是清潔。

相關問題