2016-02-25 70 views
0

我正在使用Java ganymed庫通過SSH2連接到我們的交換機。我可以連接我的Catalyst交換機,但沒有問題,但是當我連接到我的Nexus交換機時,我無法從命令中獲得任何輸出。SSH到Cisco Nexus交換機

有沒有人用過這個庫來連接Nexus交換機?

下面是具體的代碼部分:

try { 

Connection conn = new Connection(IP); 
conn.connect(); 

boolean isAuthenticated = conn.authenticateWithPassword(username, password); 

if (isAuthenticated) { 

    Session sess = conn.openSession(); 
    sess.startShell(); 

    InputStream stdout = new StreamGobbler(sess.getStdout()); 

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

    OutputStream stdin = new BufferedOutputStream(sess.getStdin()); 

    BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(stdin)); 

    bw.write("sh cdp ne"); 
    bw.flush(); 
    stdin.write(13); 
    stdin.flush(); 

    bw.write("exit"); 
    bw.flush(); 
    stdin.write(13); 
    stdin.flush(); 

    while (true) 
    { 
     String line = br.readLine(); 
     System.out.println(line); 

     if (line == null) 
      break; 
    } 
} // close if (isAuthenticated) 
} // close try 
+0

嘗試使用jcsh作爲庫 –

+0

明顯的第一個問題,ssh到nexus如預期的那樣與普通的ssh客戶端程序一起工作? –

+0

您是否檢查過輸出是否可能轉到'stderr'而不是'stdout'? – SubOptimal

回答

1

顯然的問題是「不存在的僞終端分配和您的命令CDP需要一個」正如@SubOptimal所警告的那樣。 所以我分配一個僞終端的會話和問題解決:

Session sess = conn.openSession(); 
sess.requestDumbPTY(); // Allocate a pseudo-terminal for this session. 
sess.startShell(); // Start a shell on the remote machine. 

感謝所有的意見。