采用JSCH實現對linux遠程操作,執行簡單的命令
JSch是Java Secure Channel的縮寫。JSch是一個SSH2的純Java實現。它允許你連接到一個SSH服務器,并且可以使用端口轉發,X11轉發,文件傳輸等,當然你也可以集成它的功能到你自己的應用程序。
官方地址為:http://www.jcraft.com/jsch/
GitHub 地址為:https://github.com/vngx/vngx-jsch
JSCH的特點:
1.基于DSA和RSA加密。
2.可以實現4中認證機制。分別是:
(1i): password
(2i): publickey(DSA,RSA)
(3i): keyboard-interactive
(4i): gss-api-with-mic
3.生成public/private key pair.
4.執行bash script 等腳本
5.可以通過HTTP/SOCK5 proxy
6.支持常見SSH1協議和SSH2協議
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.Charset; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelExec; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; public class JSchDemo { private String charset = "UTF-8"; // 設置編碼格式 private String user; // 用戶名 private String passwd; // 登錄密碼 private String host; // 主機IP private JSch jsch; private Session session; /** * * @param user用戶名 * @param passwd密碼 * @param host主機IP */ public JSchDemo(String user, String passwd, String host) { this.user = user; this.passwd = passwd; this.host = host; } /** * 連接到指定的IP * * @throws JSchException */ public void connect() throws JSchException { jsch = new JSch(); session = jsch.getSession(user, host, 22); session.setPassword(passwd); java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); session.connect(); } /** * 執行相關的命令 */ public void execCmd() { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String command = ""; BufferedReader reader = null; Channel channel = null; try { while ((command = br.readLine()) != null) { channel = session.openChannel("exec"); ((ChannelExec) channel).setCommand(command); channel.setInputStream(null); ((ChannelExec) channel).setErrStream(System.err); channel.connect(); InputStream in = channel.getInputStream(); reader = new BufferedReader(new InputStreamReader(in, Charset.forName(charset))); String buf = null; while ((buf = reader.readLine()) != null) { System.out.println(buf); } } } catch (IOException e) { e.printStackTrace(); } catch (JSchException e) { e.printStackTrace(); } finally { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } channel.disconnect(); session.disconnect(); } } public static void main(String[] args) throws Exception { String user = "root"; String passwd = "123456"; String host = "192.168.1.188"; JSchDemo demo = new JSchDemo(user, passwd, host); demo.connect(); demo.execCmd(); } }
本文由用戶 wgd7 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!