java远程执行linux命令

来源:互联网 发布:智云软件 编辑:程序博客网 时间:2024/05/18 05:07

使用ganymed-ssh2去调用执行远程linux的命令,在maven上查找,发现使用最多的包是ganymed-ssh2-build210.jar、所以就下载了它

private static final String hostname = "115.182.62.225";//linux ip地址private static final String username = "root";//linux用户名private static final String password = "j\\^PR$&ZslxCqhif";//linux密码private static Connection conn;private static Session ssh = null;/** * 判断是否可以连接主机、账户密码是否正确(默认配置的服务器) * @return */public static boolean hasConnection(){return hasConnection(hostname,username,password,false);}/** * 执行命令(默认配置的服务器) * @param cmd * @return */public static String excuteCMD(String cmd){return excuteCMD(hostname,username,password,cmd);}/** * 判断是否可以连接主机、账户密码是否正确 * @param hostname * @param username * @param password * @param flag 是否只是查询是否可连接服务器 * @return */public static boolean hasConnection(String hostname,String username,String password,boolean flag){boolean isconn = false;conn = new Connection(hostname);try {//连接到主机              conn.connect();              //使用用户名和密码校验              isconn = conn.authenticateWithPassword(username, password);} catch (IOException e) {e.printStackTrace();}if(flag){closeConnection();}return isconn;}/** * 执行命令 * @param hostname * @param username * @param password * @param cmd * @return */public static String excuteCMD(String hostname,String username,String password,String cmd){StringBuilder result = new StringBuilder();boolean isconn = hasConnection(hostname,username,password,false);if(!isconn){//连接失败result.append("连接服务器失败");}else{try {ssh = conn.openSession();//使用多个命令用分号隔开              ssh.execCommand(cmd);              //只允许使用一行命令,即ssh对象只能使用一次execCommand这个方法,多次使用则会出现异常              //将屏幕上的文字全部打印出来              InputStream  is = new StreamGobbler(ssh.getStdout());              BufferedReader brs = new BufferedReader(new InputStreamReader(is));              while(true){                String line = brs.readLine();                  if(line==null){                      break;                  }                result.append(line+"\n");            }} catch (IOException e) {result.append("连接服务器失败");e.printStackTrace();}}return result.toString();}/** * 关闭连接的对象 */private static void closeConnection(){//连接的Session和Connection对象都需要关闭          ssh.close();          conn.close();}public static void main(String[] args) {        System.out.println(excuteCMD("cd /home/;ls"));}

0 0
原创粉丝点击