2016-02-25 4 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 для связи работает, как и ожидалось, с обычной клиентской программой ssh? –

+0

Вы проверили, может ли выход быть в 'stderr' вместо' stdout'? – SubOptimal

ответ

1

Видимо проблема был «нет псевдотерминала выделяется и ваша команда ЕТ нужно» как предупреждал @SubOptimal. Поэтому я выделил псевдо-терминал для сеанса и проблема решена:

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

Спасибо за все комментарии.