
我知道了。
__在while循环中, line 永远不会为 null 。
为何在调试中起作用仍是一个谜。
我正在发布 新代码 。我希望它对每个想做类似事情的人都有帮助。
package Utility;import com.jcraft.jsch.Channel;import com.jcraft.jsch.JSch;import com.jcraft.jsch.JSchException;import com.jcraft.jsch.Session;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.InputStreamReader;public class JavaTelnet { public static void main(String[] arg) { try { System.out.println(telnetConnection(YOUR_COMMAND,YOUR_USER,YOUR_PASS,YOUR_HOST)); } catch (Exception e) { e.printStackTrace(); } } public static String telnetConnection(String command, String user, String password, String host) throws JSchException, Exception { JSch jsch=new JSch(); Session session=jsch.getSession(user, host, 22); session.setPassword(password); // It must not be recommended, but if you want to skip host-key check, session.setConfig("StrictHostKeyChecking", "no"); session.connect(3000); //session.connect(30000); // making a connection with timeout. Channel channel=session.openChannel("shell"); channel.connect(3000); DataInputStream dataIn = new DataInputStream(channel.getInputStream()); BufferedReader reader = new BufferedReader(new InputStreamReader(dataIn)); DataOutputStream dataOut = new DataOutputStream(channel.getOutputStream()); System.out.println("Starting telnet connection..."); dataOut.writeBytes("telnet localhost 4242rn");// dataOut.writeBytes("enablern"); dataOut.writeBytes(command+"rn"); dataOut.writeBytes("exitrn"); //exit from telnet dataOut.writeBytes("exitrn"); //exit from shell dataOut.flush(); String line = reader.readLine(); String result = line +"n"; while (!(line= reader.readLine()).equals("Connection closed by foreign host")){ result += line +"n"; } dataIn.close(); dataOut.close(); channel.disconnect(); session.disconnect(); return result; }}注意,该外壳是Linux外壳。在Windows中,“退出”命令应该不同
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)