我正在使用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
答案 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.
感谢所有评论。