Как использовать JSch для установления SSH-соединения с подсистемой NETCONF
Я успешно использую библиотеку JSch для создания SSH-соединения с сервером, но у меня возникают проблемы с выяснением, как добавить подсистему NETCONF в SSH-соединение.
Когда вы делаете это вручную, командная строка, которая устанавливает SSH соединение с sybsystem NETCONF ssh -p 4444 nerconf@myserver -s netconf
,
Как мне добавить опцию -s netconf
к соединению SSH используя JSch? Поддерживает ли JSch подсистему для NETCONF?
2 ответа
JSch поддерживает SSH подсистемы в целом, но не реализует ничего специфичного для NETCONF (это не обязательно).
Все, что вам нужно сделать, это сделать следующие вызовы (псевдокод):
com.jcraft.jsch.JSch ssh = new com.jcraft.jsch.JSch();
com.jcraft.jsch.Session session = ssh.getSession(username, host, port);
session.setUserInfo(myUserInfo); // authentication
session.connect(connectTimeout);
// this opens up the proper subsystem for NETCONF
com.jcraft.jsch.ChannelSubsystem subsystem = (com.jcraft.jsch.ChannelSubsystem) session.openChannel("subsystem");
subsystem.setSubsystem("netconf");
// at this point you may get your streams
subsystem.getInputStream();
subsystem.getErrStream();
subsystem.getOutputStream();
subsystem.connect();
Для NETCONF единственное требование, которое должна выполнять подсистема, - это правильное имя подсистемы.
Спасибо, преди.
Это работа для меня. netconf-hello готов.
session = new JSch().getSession("username", "remote-ip", netconf-port);
session.setPassword("your-password");
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
channel = (ChannelSubsystem) session.openChannel("subsystem"); //necessary
channel.setSubsystem("netconf"); //necessary
channel.connect();
System.out.println(channel.isConnected()); // debug use
System.out.println(session.isConnected()); // debug use
InputStream inputStream = channel.getInputStream(); // use this to read
OutputStream outputStream = channel.getOutputStream();
PrintStream printStream = new PrintStream(outputStream); // use this to send