2016-02-25 3 views
0

J'utilise la bibliothèque de Java Ganymed pour se relier à nos commutateurs avec SSH2. Je peux connecter mes commutateurs Catalyst sans problème, mais lorsque je me connecte à mes commutateurs Nexus, je ne peux obtenir aucune sortie des commandes.SSH aux commutateurs de Cisco Nexus

Est-ce que quelqu'un a utilisé cette lib pour connecter les commutateurs Nexus?

Voici la partie de code spécifique:

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

essayez d'utiliser jcsh comme une bibliothèque –

+0

Première question évidente, ssh pour le nexus fonctionne comme prévu avec un programme client ssh ordinaire? –

+0

Avez-vous vérifié si la sortie peut aller à 'stderr' au lieu de' stdout'? – SubOptimal

Répondre

1

Apparemment, le problème était « il n'y a pas de pseudo-terminal affecté et votre commande cdp besoin d'un. » comme @SubOptimal averti. J'alloué un pseudo-terminal pour la session et le problème est résolu:

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

Merci pour tous les commentaires.