采用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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!