码迷,mamicode.com
首页 > Web开发 > 详细

jsch ssh服务器调用Linux命令或脚本的小问题

时间:2016-01-13 00:39:44      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:

代码如下:

    public static boolean execshell(String command, String user, String passwd, String host) throws JSchException, IOException {  
        connect(user, passwd, host);
        BufferedReader reader = null;
        boolean flag = true;
        Channel channel = null;  
        String charset ="UTF-8";
        try {  
            //执行linux命令
            channel = session.openChannel("exec"); 
            ((ChannelExec) channel).setCommand(command);  
            ((ChannelExec) channel).setErrStream(System.err);  
            channel.connect(); 
            InputStream in = channel.getInputStream();
            reader = new BufferedReader(new InputStreamReader(in,
            Charset.forName(charset)));
            String buf = null;
            while ((buf = reader.readLine()) != null) {
            log.info(buf);
            }            
             }catch (Exception e) {
                 e.printStackTrace();
             }finally {   
                 reader.close();
                 channel.disconnect();  
                 session.disconnect();  
        }
        return flag;
    }

这里发现了一个问题,如果使用红色字体中的方法,用来输出执行linux命令或sh文件时系统错误的输出,这样的话会造成一个问题,就是使用log4j的方法无效,后面的log.info以及返回后其他类中的log都将失效,最终tomcat的catalina.out的日志就永远停止了。。。。所以使用时,一定要注释掉哦~或者不用哦~使用下面reader读取linux中的输出信息就行了哦~

jsch ssh服务器调用Linux命令或脚本的小问题

标签:

原文地址:http://www.cnblogs.com/yangsy0915/p/5125982.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!