java中在linux上执行脚本命令,可跨服务器SSH

// 创建JSch对象
JSch jsch = new JSch();
// 用户名
String userName = "linux的用户名";
// 密码
String password = "linux的密码";
// 服务器地址
String host = "linux的ip地址";
// 端口号
int port = 22;
// 要运行的命令
String cmd = "rm -rf -*";
// 根据用户名,主机ip,端口获取一个Session对象
Session session = jsch.getSession(userName, host, port);
// 设置密码
session.setPassword(password);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
// 为Session对象设置properties
session.setConfig(config);
int timeout = 60000000;
// 设置timeout时间
session.setTimeout(timeout);
// 通过Session建立链接
long start = System.currentTimeMillis();
session.connect();
ChannelExec channelExec = (ChannelExec) session.openChannel("exec");
channelExec.connect();
channelExec.setCommand(cmd);
channelExec.setErrStream(System.err);
channelExec.setInputStream(System.in);
channelExec.setExtOutputStream(System.out);
InputStream in = channelExec.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in, Charset.forName("UTF-8")));
String buf;
StringBuffer sb = new StringBuffer();
while ((buf = reader.readLine()) != null) {
   sb.append(buf);
   // 打印控制台输出
   System.out.println(buf);
}
long end = System.currentTimeMillis();
System.out.println("共耗时:" + (end - start) / 1000 + "秒");
reader.close();
channelExec.disconnect();
session.disconnect();

你可能感兴趣的:(java,java,linux)