【命令提取】工具

来源:互联网 发布:安装mysql步骤 编辑:程序博客网 时间:2024/04/30 13:28

<html>
<head>
<style>
 body, table {
  font-size: 10pt;
 }
 textarea {
  width:100%;
  border:1 solid #6699cc;
 }
 .button_2char {width:60px;}
 .button_4char {width:80px;}
</style>
<title>命令提取工具</title>
<script type="text/javascript">

function setWindowSize(width, height){
 width = width || 1024;
 height = height || 768;
 window.moveTo(0, 0);
 window.resizeTo(width, height);
}

/*================点击【命令提取】按钮的处理================*/
function fetchCmd(){
 var isCheckOk = false;
 isCheckOk = doCheck();
 
 if(!isCheckOk){
  return;
 }
 
 //提取命令
 doFetchCmd();
 
 //如果没有提取到任何命令,提示用户设备名是否正确,让用户做修改
 remindIfNoCommand();
 
}

/*================做必要的校验================*/
function doCheck(){
 var cmdWidth = document.getElementById("cmdWidth").value;
 var sysname = document.getElementById("sysname").value;
 if(isEmpty(cmdWidth) || !isInt(cmdWidth)){
  alert("行宽必须为整数值!");
  return false;
 }
 
 if(isEmpty(sysname)){
  alert("设备名不能为空!");
  return false;
 }
 return true;
}
/*================执行命令提取处理================*/
function doFetchCmd(){
 var cmdWidth = document.getElementById("cmdWidth").value; //行宽
 var sysname = document.getElementById("sysname").value;  //系统名
 var log = document.getElementById("log").value;    //命令行日志
 //var cmd = document.getElementById("cmd").value;
 var logLine = "";   //存放一行日志
 var cmds = "";    //最终输出的所有命令
 var cmd = "";    //存放提取出来的一行命令
 var getNextLine = false; //标志位,是否继续获取下一行,与当前行的命令拼接起来
 
 //命令提示符,如 MA5600T> | MA5600T# | MA5600T(config)# 等等
 //var reg = new RegExp(sysname+">|"+sysname+"#|"+sysname+"\\([^\\)]+\\)#", "ig");
 //var reg = new RegExp(sysname+">|"+sysname+"#|"+sysname+"\\([^\\)]+\\)(#|%%)", "ig");
 var reg = new RegExp(sysname+"(>|#|(\\([^\\)]+\\)(#|%%)))", "ig");
 
 var logArray = log.split("\r\n");
 
 for(var i=0; i<logArray.length; i++){
  
  //以下处理一行日志
  
  logLine = logArray[i];
  logLine = logLine.replace(/\s{2,}/g, " ");   //把一行内容中两个及以上空格替换为一个空格:此处理主要是去除命令末尾存在过多的空格时,导致提取命令后排版有问题
  
  //如果日志是以系统提示符开头,则进行处理
  if(logLine.indexOf(sysname) == 0){
   //如果一行的长度为80,则认为此行命令需要换行,设置标志位,需要继续取下一行
   if(logLine.length >= cmdWidth){
    getNextLine = true;
   } else {
    getNextLine = false;
   }
   
   cmd = logLine.replace(reg, ""); //提取出命令
   cmds += cmd;
   if(!getNextLine){
    cmds += "\r\n";
   }
  } else if(logLine.search(/\S/) == -1){
   getNextLine = false;
   
  } else if(getNextLine){
   cmds += logLine;
   if(logLine.length != 80){
    getNextLine = false;
    cmds += "\r\n";
   }
   
  }
 }
 
 logArray = null;
 log = null;
 
 document.getElementById("cmds").value = cmds;
 cmds = null;
}
/*================如果没有提取到任何命令,提示用户设备名是否正确================*/
function remindIfNoCommand(){
 var cmds = document.getElementById("cmds").value;
 if(!/\S/.test(cmds)){
      alert("没有提取到命令,请确认设备名是否正确!");
 }
 
}

/*================复制对象内容================*/
function doCopy(){
 var content = document.getElementById("cmds").value;
 var navi = navigator.appVersion.toLowerCase();
 if(navi.indexOf("ie") != -1){
  window.clipboardData.setData("Text", content);
 } else if(navi.indexOf("chrome") != -1){
  document.getElementById("output").select();
  document.execCommand('Copy',false,null);
 }
}

/*================清空文本框内容================*/
function doClear(contentObjects){
 if(!isNull(contentObjects) && contentObjects.length > 0){
      for(var i=0; i<contentObjects.length; i++){
           document.getElementById(contentObjects[i]).value = "";
      }
 }
}

 

/*================公共函数================*/

function isNull(obj){
 if(typeof(obj) == "undefined" || obj == null){
  return true;
 }
 return false;
}

function isEmpty(str){
 if(isNull(str)){
  alert("String is null!");
  return true;
 }
 
 if(/\S/.test(str)){
  return false;
 }
 return true;
}

function isInt(num){
 if(isEmpty(num) || !/^-?[0-9]+$/g.test(num)){
  return false;
 }
 return true;
}
</script>

</head>
<body>
<fieldset>
 <legend>参数设置</legend>
 <table style="margin:5;">
  <tr>
   <td style="width:50;">行  宽:</td>
   <td><input type="text" id="cmdWidth" style="width:70;" maxLength="5" value="80">字符</td>
  </tr>
  <tr>
   <td style="color:red;">设备名:</td><td><input type="text" id="sysname" style="width:100;" maxLength="100" value="MA5600T"></td>
  </tr>
  <tr>
   <td colspan="2">
        <input type="button" class="button_4char" value="提取命令" onclick="fetchCmd()">
        <input type="button" class="button_2char" value="复制" onclick="doCopy()">
        <input type="button" class="button_2char" value="清空" onclick="doClear(['log','cmds'])">
   </td>
  </tr>
 </table>
</fieldset>
<br>
<table style="width:100%;border-width:3 thin">
 <tr><td>日志</td></tr>
 <tr><td>
   <textarea id="log" style="height:100;">
MA5600T>enable
MA5600T#config
MA5600T(config)#service-port 0 vlan 100 adsl 0/9/0 vpi 0 vci 32 multi-service us
er-vlan 100</textarea></td></tr>
 <tr><td>&nbsp;</td></tr>
 <tr><td>历史命令</td></tr>
 <tr><td><textarea id="cmds" style="height:250;"></textarea></td></tr>
</table>
<br>
<label id="author" style="color:blue;">
工具维护:xxx<br>
更新时间:2012年3月5日
</label>
</body>
</html>