zoukankan      html  css  js  c++  java
  • Tomcat检测程序

    import java.net.*;
    import java.io.*;

    public class Tomcat   extends Thread {
    int listenPort=80; //要检测的端口号
    String url = "";
    String str="";
    public void setstr(){
            str="GET / HTTP/1.0\r\n";
    str+="\r\n";
    str+="Accept: image/gif, image/x-xbitmap, image/jpeg, image peg, application nd.ms-powerpoint, application nd.ms-excel, application/msword, application/x-shockwave-flash, */* \r\n";
    str+="Accept-Language: zh-cn \r\n";
    str+="Accept-Encoding: gzip, deflate\r\n";
    str+="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) \r\n";
    str+="Connection: Keep-Alive \r\n";
    }

      public void setListenPort(int listenPort) {
        this.listenPort = listenPort;
      }

      public int getListenPort() {
        return listenPort;
      }

      public Tomcat(String url) {
        this.url = url;
      }

      //判断是否停止监听
      boolean isStopListen = false;

      //执行一个线程,线成不断的判断tomat是否停止,如果停止,则关闭tomcat
      //然后isTomcatStop=true,sleep(60000)
      public void run() {
        while (!isStopListen) {
          if (!this.isConnectionTomcat()) {
            try {
              this.closeTomcat();
              this.sleep(10000);
              this.closeTomcat();
              this.sleep(10000);
          this.closeTomcat();
              this.sleep(10000);
              new RunTomcat();
              this.sleep(30000);
            }
            catch (Exception ex) {
              ex.printStackTrace();
            }
          }
          else {
            try {
              this.sleep(30000);
            }
            catch (InterruptedException ex1) {
              ex1.printStackTrace();
            }
          }
        }
      }

    //关闭tomcat
      public void closeTomcat() throws Exception {
        Process process = Runtime.getRuntime().exec("shutdown.bat");
        BufferedReader bufferedReader = new BufferedReader(new
            InputStreamReader(process.getInputStream()));

      }

      //判断是否连接到80断口
      public boolean isConnectionTomcat() {
        Socket so = null;
    setstr();
        try {
          so = new Socket("localhost", listenPort);
      so.setSoTimeout(5000);
      OutputStream out=so.getOutputStream();
      out.write(str.getBytes());
      out.flush();
      InputStream in=so.getInputStream();
          byte[] receiveByte=new byte[1000];
      int num=in.read(receiveByte);
      //System.out.println(new String(receiveByte,0,num));
      if (num<=5)throw new Exception("读取失败");
      so.close();
        }
        catch (Exception ex) {
          System.out.println("工作可能有异常"+listenPort+ex);
      try{
      this.sleep(1000);
      so = new Socket("localhost", listenPort);
      so.setSoTimeout(5000);
      OutputStream out=so.getOutputStream();
      out.write(str.getBytes());
      out.flush();
      InputStream in=so.getInputStream();
      byte[] receiveByte=new byte[1000];
      int num=in.read(receiveByte);
      if (num<=5)throw new Exception("读取失败");
      //System.out.println(new String(receiveByte,0,num));
      so.close();
      }catch(Exception e){
      System.out.println("工作出现异常!!!!!!!");
      return false;
      }
        }
        finally {
          try {
            if (so != null) {
              so.close();
            }
          }
          catch (IOException ex1) {
            ex1.printStackTrace();
          }
        }
        System.out.println("正常启动");
        return true;
      }

      //打开tomcat
      public class RunTomcat
          extends Thread {
        public RunTomcat() {
          this.start();
        }

        public void run() {
          try {
            Process process = Runtime.getRuntime().exec("startup.bat");
            BufferedReader bufferedReader = new BufferedReader(new
                InputStreamReader(process.getInputStream()));
          }
          catch (IOException ex) {
            ex.printStackTrace();
          }

        }
      }

    //主线程不断循环,发现isTomcatStop=true,启动tomcat
      public static void main(String args[]) {
        if(args.length==0){
         System.out.println("命令行为:java Tomcat port -请指定监听端口" );
         return;
        }
        Tomcat s = new Tomcat("");
        try {
          s.setListenPort(Integer.parseInt(args[0]));
        }
        catch (NumberFormatException ex) {
          System.out.println("输入的第一个参数必须为端口号,端口号为tomcat服务端口号(https为:443,http为:80)。必须好必须唯一个小于65535的正整数");
        }
        s.start();
      }
    }
  • 相关阅读:
    2018-2019-2 20165316 《网络对抗技术》 Exp6 信息搜集与漏洞扫描
    2018-2019-2 网络对抗技术 20165316 Exp5 MSF基础应用
    2018-2019-2 网络对抗技术 20165316 Exp4 恶意代码分析
    2018-2019-2 20165316 『网络对抗技术』Exp3:免杀原理与实践
    2018-2019-2 《网络对抗技术》Exp2 后门原理与实践
    2018-2019-2 20165316 《网络对抗技术》Exp1 PC平台逆向破解
    2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1 20165316
    最近决定要重新回到博客了
    清华大学OS操作系统实验lab1练习知识点汇总
    基本数据结构学习总结: 二叉树的遍历
  • 原文地址:https://www.cnblogs.com/harbin1900/p/8480970.html
Copyright © 2011-2022 走看看