设为首页 收藏本站
查看: 680|回复: 0

[经验分享] Hadoop运维记录系列(二十一)

[复制链接]

尚未签到

发表于 2018-10-28 15:03:34 | 显示全部楼层 |阅读模式
static HashSet blockedCodeString = new HashSet();  
  static {
  
    blockedCodeString.add(new String[]{"import", "os"});
  
    blockedCodeString.add(new String[]{"import", "sys"});
  
    blockedCodeString.add(new String[]{"import", "subprocess"});
  
    blockedCodeString.add(new String[]{"import", "pty"});
  
    blockedCodeString.add(new String[]{"import", "socket"});
  
    blockedCodeString.add(new String[]{"import", "commands"});
  
    blockedCodeString.add(new String[]{"import", "paramiko"});
  
    blockedCodeString.add(new String[]{"import", "pexpect"});
  
    blockedCodeString.add(new String[]{"import", "BaseHTTPServer"});
  
    blockedCodeString.add(new String[]{"import", "ConfigParser"});
  
    blockedCodeString.add(new String[]{"import", "platform"});
  
    blockedCodeString.add(new String[]{"import", "popen2"});
  
    blockedCodeString.add(new String[]{"import", "copy"});
  
    blockedCodeString.add(new String[]{"import", "SocketServer"});
  
    blockedCodeString.add(new String[]{"import", "sysconfig"});
  
    blockedCodeString.add(new String[]{"import", "tty"});
  
    blockedCodeString.add(new String[]{"import", "xmlrpmlib"});
  
    blockedCodeString.add(new String[]{"etc"});
  
    blockedCodeString.add(new String[]{"boot"});
  
    blockedCodeString.add(new String[]{"dev"});
  
    blockedCodeString.add(new String[]{"lib"});
  
    blockedCodeString.add(new String[]{"lib64"});
  
    blockedCodeString.add(new String[]{"lost+found"});
  
    blockedCodeString.add(new String[]{"mnt"});
  
    blockedCodeString.add(new String[]{"proc"});
  
    blockedCodeString.add(new String[]{"root"});
  
    blockedCodeString.add(new String[]{"sbin"});
  
    blockedCodeString.add(new String[]{"selinux"});
  
    blockedCodeString.add(new String[]{"usr"});
  
    blockedCodeString.add(new String[]{"passwd"});
  
    blockedCodeString.add(new String[]{"useradd"});
  
    blockedCodeString.add(new String[]{"userdel"});
  
    blockedCodeString.add(new String[]{"rm"});
  
    blockedCodeString.add(new String[]{"akka "});
  
    blockedCodeString.add(new String[]{"groupadd"});
  
    blockedCodeString.add(new String[]{"groupdel"});
  
    blockedCodeString.add(new String[]{"mkdir"});
  
    blockedCodeString.add(new String[]{"rmdir"});
  
    blockedCodeString.add(new String[]{"ping"});
  
    blockedCodeString.add(new String[]{"nc"});
  
    blockedCodeString.add(new String[]{"telnet"});
  
    blockedCodeString.add(new String[]{"ftp"});
  
    blockedCodeString.add(new String[]{"scp"});
  
    blockedCodeString.add(new String[]{"ssh"});
  
    blockedCodeString.add(new String[]{"ps"});
  
    blockedCodeString.add(new String[]{"hostname"});
  
    blockedCodeString.add(new String[]{"uname"});
  
    blockedCodeString.add(new String[]{"vim"});
  
    blockedCodeString.add(new String[]{"nano"});
  
    blockedCodeString.add(new String[]{"top"});
  
    blockedCodeString.add(new String[]{"cat"});
  
    blockedCodeString.add(new String[]{"more"});
  
    blockedCodeString.add(new String[]{"less"});
  
    blockedCodeString.add(new String[]{"chkconfig"});
  
    blockedCodeString.add(new String[]{"service"});
  
    blockedCodeString.add(new String[]{"netstat"});
  
    blockedCodeString.add(new String[]{"iptables"});
  
    blockedCodeString.add(new String[]{"ip"});
  
    blockedCodeString.add(new String[]{"route "});
  
    blockedCodeString.add(new String[]{"curl"});
  
    blockedCodeString.add(new String[]{"wget"});
  
    blockedCodeString.add(new String[]{"sysctl"});
  
    blockedCodeString.add(new String[]{"touch"});
  
    blockedCodeString.add(new String[]{"scala.sys.process"});
  
    blockedCodeString.add(new String[]{"0.0.0.0"});
  
    blockedCodeString.add(new String[]{"git"});
  
    blockedCodeString.add(new String[]{"svn"});
  
    blockedCodeString.add(new String[]{"hg"});
  
    blockedCodeString.add(new String[]{"cvs"});
  
    blockedCodeString.add(new String[]{"exec"});
  
    blockedCodeString.add(new String[]{"ln"});
  
    blockedCodeString.add(new String[]{"kill"});
  
    blockedCodeString.add(new String[]{"rsync"});
  
    blockedCodeString.add(new String[]{"lsof"});
  
    blockedCodeString.add(new String[]{"crontab"});
  
    blockedCodeString.add(new String[]{"libtool"});
  
    blockedCodeString.add(new String[]{"automake"});
  
    blockedCodeString.add(new String[]{"autoconf"});
  
    blockedCodeString.add(new String[]{"make"});
  
    blockedCodeString.add(new String[]{"gcc"});
  
    blockedCodeString.add(new String[]{"cc"});
  
  }
  
  static boolean allMatch(String aim, String[] checker){
  
    if(checker == null || checker.length < 1){
  
      return false;
  
    }else {
  
      // by default, treat as match, every not match change it
  
      for (String i : checker) {
  
        if (!aim.matches(".*\\b" + i + "\\b.*")){
  
          return false;
  
        }
  
      }
  
      return true;
  
    }
  
  }
  
  static String anyMatch(String aim, HashSet all) throws Exception{
  
    if(aim.contains("FUCK P&G")){
  
      throw  new Exception("How do you know this ????");
  
    } else {
  
      for (String[] one : all) {
  
        if (allMatch(aim, one)) {
  
          StringBuilder sb = new StringBuilder();
  
          for (String s : one) {
  
            sb.append(s + " ");
  
          }
  
          return sb.toString();
  
        }
  
      }
  
      throw new Exception("No one match");
  
    }
  
  }
  

  
  //......此处是个public类
  
  try{
  
      String matchesStrings = anyMatch(st, blockedCodeString);
  
      result = new InterpreterResult(Code.ERROR, "Contains dangerous code : " + matchesStrings);
  
    }catch (Exception me){ // no match any
  
      scheduler.submit(job);
  
      while (!job.isTerminated()) {
  
        synchronized (jobListener) {
  
          try {
  
            jobListener.wait(1000);
  
          } catch (InterruptedException e) {
  
            logger.info("Exception in RemoteInterpreterServer while interpret, jobListener.wait", e);
  
          }
  
        }
  
      }
  
      if (job.getStatus() == Status.ERROR) {
  
        result = new InterpreterResult(Code.ERROR, Job.getStack(job.getException()));
  
      } else {
  
        result = (InterpreterResult) job.getReturn();
  
        // in case of job abort in PENDING status, result can be null
  
        if (result == null) {
  
          result = new InterpreterResult(Code.KEEP_PREVIOUS_RESULT);
  
        }
  
      }
  
    }
  
  //......直到该public类结束



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-627621-1-1.html 上篇帖子: 离线部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大数据平台集群服务 下篇帖子: Hadoop HDFS: the directory item limit is exceed: limit=1048576问题的解决
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表