使用Java连接云服务器并使用shell命令(查看Tomcat日志)

使用Java连接云服务器并使用shell命令(查看Tomcat日志)

public static Connection getConnection(){
        String hostName = "云服务器的IP";
        String userName = "登录云服务器的用户名 一般为root";
        String password = "云服务器密码";
        int port = 22;
        Connection connection = new Connection(hostName,port);
        try {
            //连接到主机
            connection.connect();
            //使用用户名和密码校验
            boolean isconn = connection.authenticateWithPassword(userName,password);
            if (!isconn){
                System.out.println("用户名或密码错误");
            }
            else {
                System.out.println("服务器连接成功");
                return connection;
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }

测试例子—通过shell命令读取Tomcat的日志

 public static String getLog() throws IOException {
		Connection conn = getConnection();
		//Tomcat的日志文件名带有日期,因此可以设置一个日期时间    格式日期格式
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		//获取当前时间
		Date date = new Date();
		String now = simpleDateFormat.format(date);
		
		//编写Tomcat日志所在的路径
		//需要读取的catalina.log文件 全路径 查看异常 错误日志路径
		String logFile = "/home/pan/tomcat/logs/catalina."+now+".log";  
		//获取tomcat一日的访问总数日志路径 和 哪个时间点有请求               
        String logFile1 = "/home/pan/tomcat/logs/localhost_access_log.“+now+”.txt";  
        //关键字
        String key = "Exception";                                                       
        //查看tomcat异常命令
        String cmd = "cat " +logFile+" | grep "+key+" -A 1"; 
         //查看一日访问/请求命令                           
        String cmd1 = "cat "+logFile1+"|awk '{aaa[$1]++;} END{for(i in aaa) { printf(\"%s\\t%s\\n\", aaa[i], i); }}' | sort -bn"; 
        //哪个时间点有请求 
        String cmd2 = "cat "+logFile1+"|cut -d : -f 2-3 |sort|uniq -c";

        Session session = conn.openSession();
        /执行shell命令
        session.execCommand(cmd1);
		//处理获取的shell命令的输出信息
        InputStream stdout = session.getStdout();
        InputStreamReader inputStreamReader = new InputStreamReader(stdout);
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
        String s = bufferedReader.readLine();
        String lastLineLog = null;
        System.out.println("----------以下是获取日志的全部信息--------------");
         while (s!=null){
            if (s!=null){
                lastLineLog = s;
                System.out.println(s);
                }
            s = bufferedReader.readLine();
        }
        System.out.println("----------以上是获取日志的全部信息--------------");
        //最后关闭session资源
        if (session != null){
            session.close();
        }

        return lastLineLog;
}

至于每日访客量,请求总数,哪个时间点有请求就把拿到的数据解析就完事了。shell命令已经写好在上面了 。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值