java远程执行linux命令

23 篇文章 0 订阅

使用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"));
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值