前提是需要导入jsch-0.1.54.jar文件
package xxx.xxx.xxx.xxx;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import org.apache.commons.io.IOUtils;
import java.io.IOException;
import java.io.InputStream;
public class SSHUtils
{
private static final String ENCODING = "UTF-8";
public static Session getJSchSession(DestHost destHost)
throws JSchException
{
JSch jsch = new JSch();
Session session = jsch.getSession(destHost.getUsername(), destHost.getHost(),
destHost.getPort());
session.setPassword(destHost.getPassword());
session.setConfig("StrictHostKeyChecking", "no"); // 第一次访问服务器时不用输入yes
session.setTimeout(destHost.getTimeout());
session.connect();
return session;
}
public static String execCommandByJSch(DestHost destHost, String command)
throws IOException, JSchException
{
return execCommandByJSch(destHost, command, ENCODING);
}
public static String execCommandByJSch(DestHost destHost, String command,
String resultEncoding)
throws IOException, JSchException
{
Session session = getJSchSession(destHost);
String result = execCommandByJSch(session, command, resultEncoding);
session.disconnect();
return result;
}
public static String execCommandByJSch(Session session, String command)
throws IOException, JSchException
{
return execCommandByJSch(session, command, ENCODING);
}
public static String execCommandByJSch(Session session, String command, String resultEncoding)
throws IOException, JSchException
{
ChannelExec channelExec = (ChannelExec)session.openChannel("exec");
InputStream in = channelExec.getInputStream();
channelExec.setCommand(command);
channelExec.setErrStream(System.err);
channelExec.connect();
String result = IOUtils.toString(in, resultEncoding);
channelExec.disconnect();
return result;
}
/**
* 目标登录主机信息
*/
public static class DestHost
{
private String host = "";
private String username = "";
private String password = "";
private int port = 22;
private int timeout = 60 * 60 * 1000;
public DestHost(String host, String username, String password)
{
this(host, username, password, 22, 60 * 60 * 1000);
}
public DestHost(String host, String username, String password, int timeout)
{
this(host, username, password, 22, timeout);
}
public DestHost(String host, String username, String password, int port, int timeout)
{
this.host = host;
this.username = username;
this.password = password;
this.port = port;
this.timeout = timeout;
}
public String getHost()
{
return host;
}
public void setHost(String host)
{
this.host = host;
}
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
public int getPort()
{
return port;
}
public void setPort(int port)
{
this.port = port;
}
public int getTimeout()
{
return timeout;
}
public void setTimeout(int timeout)
{
this.timeout = timeout;
}
}
public static void main(String[] args)
{
try
{
SSHUtils.DestHost host = new SSHUtils.DestHost("192.168.1.108", "root", "6411");
String stdout = "";
Session shellSession = SSHUtils.getJSchSession(host);
stdout = SSHUtils.execCommandByJSch(shellSession, "cd ~");
stdout = SSHUtils.execCommandByJSch(shellSession, "mkdir testtesttest");
stdout = SSHUtils.execCommandByJSch(shellSession, "whoami");
shellSession.disconnect();
// System.out.println(stdout);
// response.getWriter().println(stdout);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}