Javaでスイッチからポート情報を取得するためのTelnetの実装方法は何ですか?
Telnetを使用してスイッチのポート情報を取得するには、Javaを使用する必要があります。SocketとTelnetClientクラスを使用して、Telnet接続を確立することができます。以下に簡単なサンプルコードが示されています:
import org.apache.commons.net.telnet.*;
public class TelnetExample {
public static void main(String[] args) {
String host = "交换机IP";
int port = 23;
String user = "用户名";
String password = "密码";
try {
TelnetClient client = new TelnetClient();
client.connect(host, port);
// 获取输入流和输出流
InputStream in = client.getInputStream();
PrintStream out = new PrintStream(client.getOutputStream());
// 登录
readUntil(in, "Username:");
write(out, user);
readUntil(in, "Password:");
write(out, password);
// 执行命令
write(out, "show interfaces brief");
// 读取命令输出结果
String result = readUntil(in, "交换机提示符");
// 处理命令输出结果
// ...
// 关闭连接
client.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
private static void write(PrintStream out, String value) {
out.println(value);
out.flush();
}
private static String readUntil(InputStream in, String pattern) throws IOException {
StringBuilder sb = new StringBuilder();
char lastChar = pattern.charAt(pattern.length() - 1);
char[] chars = new char[1024];
int read;
while ((read = in.read(chars)) != -1) {
sb.append(chars, 0, read);
if (sb.charAt(sb.length() - 1) == lastChar) {
if (sb.toString().endsWith(pattern)) {
return sb.toString();
}
}
}
return sb.toString();
}
}
以下の変数をコード内で置き換えてください。
- ホスト:スイッチのIPアドレス
- ポート:Telネットワークのデフォルトポートは23です。
- ユーザー:Telnetにログインするときのユーザー名
- パスワード:Telnetログイン用のパスワード
- インターフェースの要約を表示する:端口情報を取得するためのコマンド
- “スイッチプロンプト”:スイッチのプロンプトは、コマンドの実行が完了したかどうかを判断するためにコマンド出力結果に表示されます。
必要なのは、上記のコード内のプレースホルダーを実際の値で置き換え、使用しているTelnetスイッチのコマンド出力形式に応じた処理をすることです。