zoukankan      html  css  js  c++  java
  • java 使用jsch 远程链接linux执行命令

                一个简单的jsch链接linux并执行命令的utils。

             

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    
    import com.jcraft.jsch.Channel;
    import com.jcraft.jsch.ChannelExec;
    import com.jcraft.jsch.JSch;
    import com.jcraft.jsch.JSchException;
    import com.jcraft.jsch.Session;
    
    
    
    public class ShellUtils {
    	private static JSch jsch;
    	private static Session session;
    
    	
    	/**
    	 * 连接到指定的IP
    	 * 
    	 * @throws JSchException
    	 */
    	public static void connect(String user, String passwd, String host) throws JSchException {
    		jsch = new JSch();
    		session = jsch.getSession(user, host, 22);
    		session.setPassword(passwd);
    		
    		java.util.Properties config = new java.util.Properties();
    		config.put("StrictHostKeyChecking", "no");
    		session.setConfig(config);
    		
    		session.connect();
    	}
    
    	/**
    	 * 执行相关的命令
    	 * @throws JSchException 
    	 */
    	public static void execCmd(String command, String user, String passwd, String host) throws JSchException {
    		connect(user, passwd, host);
    		
    		BufferedReader reader = null;
    		Channel channel = null;
    
    		try {
    			while (command != null) {
    				channel = session.openChannel("exec");
    				((ChannelExec) channel).setCommand(command);
    				
    				channel.setInputStream(null);
    				((ChannelExec) channel).setErrStream(System.err);
    
    				channel.connect();
    				InputStream in = channel.getInputStream();
    				reader = new BufferedReader(new InputStreamReader(in));
    				String buf = null;
    				while ((buf = reader.readLine()) != null) {
    					System.out.println(buf);
    				}
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    		} catch (JSchException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				reader.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    			channel.disconnect();
    			session.disconnect();
    		}
    	}
       
    }
    



  • 相关阅读:
    Docker最全教程之MySQL容器化 (二十四)
    Docker最全教程之使用Node.js搭建团队技术文档站(二十三)
    Docker最全教程之使用PHP搭建个人博客站点(二十二)
    构建自己的简单微服务架构(开源)
    使用Jmeter进行http接口测试
    Appium 服务关键字
    Appium入门示例(Java)
    Appium for win7 环境搭建
    android adb常用指令
    Android测试环境搭建(win7)
  • 原文地址:https://www.cnblogs.com/allenzhaox/p/3201775.html
Copyright © 2011-2022 走看看