SSH到Cisco Nexus交换机

时间:2016-02-25 07:09:10

标签: java cisco

我正在使用Java ganymed库通过SSH2连接到我们的交换机。我可以毫无问题地连接我的Catalyst交换机,但是当我连接到我的Nexus交换机时,我无法从命令中获得任何输出。

是否有人使用此lib连接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

1 个答案:

答案 0 :(得分: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.

感谢所有评论。