我使用Jsch和expectit連接到網絡設備和更新CONFIGS,更改密碼等..如何強制未閉合Jsch SSH連接關閉
我有哪裏迴環連接保持開放的一個問題,阻止創建更多的ssh會話。我讀過這是某些版本的OpenSSH的問題,解決方案是升級sshd。不幸的是,當連接到網絡設備時,這有時不是一種選擇。
有沒有解決方法?
編輯 - 這是我的代碼 - 是不是我手動關閉所有東西?
JSch jSch = new JSch();
Session session = jSch.getSession("username", h.hostname);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setPassword("password");
session.connect();
Channel channel = session.openChannel("shell");
Expect expect = new ExpectBuilder()
.withOutput(channel.getOutputStream())
.withInputs(channel.getInputStream(), channel.getExtInputStream())
.withEchoOutput(System.out)
.withEchoInput(System.err)
.withExceptionOnFailure()
.build();
channel.connect();
expect.expect(contains("#"));
expect.sendLine("showRules\r");
String response = expect.expect(regexp("#")).getBefore();
System.out.println("---" + response + "----");
expect.sendLine("exit\r");
expect.close();
channel.disconnect();
session.disconnect();
你所指的問題不會與我發出任何響鈴。也許你可以向我們展示一些有問題的代碼並解釋問題所在。 – Kenster
在您編輯的代碼中,當您完成所有代碼時,您似乎正在關閉所有內容。什麼是實際問題?你有什麼不好的行爲? – Kenster
經過約180次連接之後,我開始出現IOException異常:「無法建立環回連接」。當我執行netstat -na時,在TIME_WAIT狀態下127.0.0.1上有100個連接。在這些關閉之前,我無法建立更多的ssh連接。 –