最近有几个需求,对linux,windows服务器和三层交换机进行重启和关机。
Linux:
首先说原理:对linux是通过ssh协议,账号密码登陆后使用命令。直接上代码。使用jsch-0.1.48.jar包
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.util.Properties;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
public class ControllerLinux {
/**
* 2017-12-25上午10:52:35
* cwy
*
*/
private static ChannelExec channelExec;
private static Session session = null;
private static int timeout = 60000;
// 测试代码
public static void main(String[] args){
try{
versouSshUtil("192.168.10.234","root","38921561",22);
runCmd("init 1","UTF-8");
}catch (Exception e){
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 连接远程服务器
* @param host ip地址
* @param userName 登录名
* @param password 密码
* @param port 端口
* @throws Exception
*/
public static void versouSshUtil(String host,String userName,String password,int port) throws Exception{
//log.info("尝试连接到....host:" + host + ",username:" + userName + ",password:" + password + ",port:"
//+ port);
JSch jsch = new JSch(); // 创建JSch对象
session = jsch.getSession(userName, host, port); // 根据用户名,主机ip,端口获取一个Session对象
session.setPassword(password); // 设置密码
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config); // 为Session对象设置properties
session.setTimeout(timeout); // 设置timeout时间
session.connect(); // 通过Session建立