⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cm_cfg_0007.ksh

📁 ksh 实现的基于hpux下的性能数据以及故障的采集程序。可以作为新手练手使用
💻 KSH
📖 第 1 页 / 共 2 页
字号:
        break     else        # 睡眠一段时间        sleep $sleepperiod        continue     fi   done   # 如果下载文件不成功,则退出   if [[ $label = 1 ]] then      # 返回 2 -- 文件存在但是下载不成功      return 2   else      if [[ -s $INPATH/$inputFile ]] then          /usr/contrib/bin/gunzip -f  $INPATH/$inputFile          downTaskFile="${inputFile%.gz}"      fi   fi   # 清理旧的文件,将其改名,改成格式如 I_CM_CFG_0007_${TMSTAMP}.txt.gz.old   # 保证处理过的文件不再重新处理   for i in `cat $tmpfile2`   do      ftp -i -n $OMSIP <<!  > /dev/null 2>/dev/null        user $OMSUSER $OMSPSWD        cd  $OMSCFGPATH        bin        # rename $i ${i}.old        bye!   done   rm -f $tmpfile2 2>/dev/null   return 0}# 功能: 将 从 OMS 服务器下载的文件转换成 各个实例可以使用的配置文件# 用法: translateFile 任务号 转换文件名称# 返回: 0 -- 转换成功 其他 -- 转换不成功function translateFile{    if [[ $# != 2 ]] then    logit "WARN" "输入参数个数不够,用法 translateFile 任务号 转换文件名称"    fileName=$taskId    fileLineNo=0    errMsg="输入参数个数不够,用法 translateFile 任务号 转换文件名称"    infoline "010706" "输入参数个数不够,用法 translateFile 任务号 转换文件名称" "$taskId" "$fileName" "$fileLineNo" "$errMsg"    return 1   fi  fileType=$1  currFile=$2  fmtFile=${fileType}.fmt  # 根据不同情况,进行文件转换,先转换成临时的配置文件,根据实际情况生成正式的配置文件  # $currFile 为从OMS服务器下载的输入文件   # $targetFile 为临时的格式转换文件,主要供正式转换使用  # $cfgFile 正式转换后生成的临时文件,格式与正式文件相同,只是存放路径不同  # $cfgNormalFile 正式配置文件  mv  $cfgFile  $cfgNormalFile  # 转换路线  $currFile -> $targetFile -> $cfgFile -> $cfgNormalFile  case "$fileType" in    # CM_CRON_0001  任务调度服务    # CM_CRON_0001  输入文件名称无特殊要求    # 紧急类型的文件上传  ${CFGPATH}/urgent.cfg    CM_EXCH_0002)      targetFile=${TMPPATH}/${fileType}.cfg        cfgNormalFile=${CFGPATH}/urgent.cfg      cfgFile=${TMPPATH}/urgent.cfg1      rm -f $cfgFile 2>/dev/null      touch $cfgFile      ;;    # 进程清理服务 ${CFGPATH}/process.cfg    CM_CLR_0003)      targetFile=${TMPPATH}/${fileType}.cfg        cfgNormalFile=${CFGPATH}/process.cfg      cfgFile=${TMPPATH}/process.cfg1      rm -f $cfgFile 2>/dev/null      touch $cfgFile      ;;    # 日志文件清理服务 $CFGPATH/logcycle.cfg    CM_LOG_0004)      targetFile=${TMPPATH}/${fileType}.cfg        cfgNormalFile=${CFGPATH}/logcycle.cfg      cfgFile=${TMPPATH}/logcycle.cfg1      rm -f $cfgFile 2>/dev/null      touch $cfgFile      ;;    # 统一文件清理机制,清理上传的文件 $CFGPATH/ftpcycle.cfg     CM_FILE_0005)      targetFile=${TMPPATH}/${fileType}.cfg        cfgNormalFile=${CFGPATH}/ftpcycle.cfg      cfgFile=${TMPPATH}/ftpcycle.cfg1      rm -f $cfgFile 2>/dev/null      touch $cfgFile      ;;    # CM_EXCH_0006 普通文件传输机制    # CM_EXCH_0006 输入文件名称无特殊要求    # CM_CFG_0007  紧急类型的配置文件下载与格式转换    # CM_CFG_0007  输入文件名称无特殊要求    # CM_CFG_0008  普通类型的配置文件下载与格式转换    # CM_CFG_0008  输入文件名称无特殊要求    *)      targetFile=${TMPPATH}/${fileType}.cfg        cfgNormalFile=${CFGPATH}/${fileType}.cfg      cfgFile=${TMPPATH}/${fileType}.cfg1        rm -f $cfgFile 2>/dev/null      touch $cfgFile      ;;  esac  # 判断文件是否存在   if [[ ! -s ${INPATH}/${currFile} ]] then    logit "WARN" "输入文件 ${INPATH}/${currFile} 不存在"    fileName=$currFile    fileLineNo=0    errMsg="输入文件 ${INPATH}/${currFile} 不存在"    infoline "010707" "输入文件 ${INPATH}/${currFile} 不存在"  "$taskId" "$fileName" "$fileLineNo" "$errMsg"    return 2  fi  OLDIFS=$IFS  # 判断输入文件的成功标志  # 返回标识       retFlag   # 0 -- 成功  1 -- 失败 2 -- 警告信息  read -r line < ${INPATH}/$currFile  echo $line | tr -d " " | tr "|" " " | read -r f1 f2 f3 f4 f5 retFlag retCode retMesg rest   if [[ $retCode != 000000 ]] then    logit "WARN" "输入文件  ${INPATH}/$currFile 返回码不为 000000,内容错误"    fileName=$currFile    fileLineNo=0    errMsg="输入文件  ${INPATH}/$currFile 返回码不为 000000,内容错误"    infoline "010708" "输入文件  ${INPATH}/$currFile 返回码不为 000000,内容错误"  "$taskId" "$fileName" "$fileLineNo" "$errMsg"    return 3  fi   # 将输入格式文件中的数据字典单词列表放在临时配置文件,作为第一行内容。  getTaskFmt $fileType > $targetFile  if [[ $? != 0 ]] then    logit "WARN" "调用任务 $fileType的输入文件格式函数 getTaskFmt 返回错误,获取输入文件格式不成功"    fileName=$currFile    fileLineNo=0    errMsg="调用任务 $fileType的输入文件格式函数 getTaskFmt 返回错误,获取输入文件格式不成功"    infoline "010709" "调用任务 $fileType的输入文件格式函数 getTaskFmt 返回错误,获取输入文件格式不成功"  "$taskId" "$fileName" "$fileLineNo" "$errMsg"    return 4  fi    # 转换成临时的配置文件,没有进行合法性检查  awk -v taskNo=$fileType '    BEGIN {      FS="|";      OFS=" ";     #  print "taskNo is " taskNo;    }    # 不处理标题行,从第二行开始转换    NR > 1 {             if ( taskNo != "WK_LOG_1013" && taskNo != "WK_LOG_1015"  \        && taskNo != "WK_LOG_1016" && taskNo != "WK_LOG_1017" ){         start=3;      }      else {         start=1;      }      # 如果字段的内容全为空格或为空,则置为 NA      for ( i = start; i <= NF-1; i++ ){        if ( length ( $i ) == 0 ){           $i = "NA";        }          printf "%s ", $i;      }      printf "\n";    }  ' ${INPATH}/$currFile >> $targetFile     # 任务号    taskId=$fileType    # 文件名称    fileName=$currFile    # 对转换成的临时配置文件进行合法性检查    (( recNo = 1 ))    while read -r  line    do      # 第一行为数据字典单词行       if (( recNo == 1 )) ; then         set -A wordList $line         (( recNo = recNo + 1 ))         continue      # 其他行为明细行      else         set -A valueList $line      fi      # 输入文件中的行号,如第 1000 行      fileLineNo=$recNo      logit "DEBUG" "比较输入文件的字段个数  ${#valueList[*]} 与格式文件中的字段个数 ${#wordList[*]} 是否相符"      # 检查输入的字段个数是否符合格式文件汇总的字段个数要求      if [[ ${#wordList[*]} != ${#valueList[*]} ]] then        logit "WARN" "文件 $currFile 中第 $recNo 行中,字段个数不符合格式文件汇总的字段个数要求"        errMsg="文件 $currFile 中第 $recNo 行中,字段个数不符合格式文件汇总的字段个数要求"        infoline "010701" "明细行内容错误" "$taskId" "$fileName" "$fileLineNo" "$errMsg"        (( recNo = recNo + 1 ))        continue      fi            # 取正式配置文件字段个数      cout=${#wordList[*]}      logit DEBUG "任务$taskId 的输入格式文件中的字段个数为 $cout "      (( i = 1 ))      (( errCout = 0 ))      while (( i < cout ))      do         errMsg=""         chkInputField "${wordList[${i}]}" "${valueList[${i}]}" | read -r errMsg         if [[ ${#errMsg} > 0 ]] then           logit "WARN" "文件 $currFile 中第 $recNo 行中,$errMsg"           fileLineNo=$recNo           infoline "010702" "明细行内容错误" "$taskId" "$fileName" "$fileLineNo" "$errMsg"           (( errCout = errCout + 1 ))           (( i = i + 1 ))            continue         fi          if [[ ${valueList[${i}]} = "NA" ]] then           valueList[${i}]="${wordList[${i}]}-${valueList[${i}]}"         fi         (( i = i + 1 ))       done      # 如果检查后,完全没有错误,则将输入行内容写入正式的配置文件      if (( $errCout == 0 )) ; then         echo $line >> $cfgFile      fi      # 累加文件记录行数      (( recNo = recNo + 1 ))    done <  $targetFile         # 替换正式的文件    mv  $cfgFile $cfgNormalFile    fileLineNo=0     logit "WARN" "任务 $taskId 的输入文件 $currFile 转换 $cfgNormalFile 成功"    errMsg="任务 $taskId 的输入文件 $currFile 转换 $cfgNormalFile 成功"    infoline "010700" "任务 $taskId 的输入文件 $currFile 转换 $cfgNormalFile 成功" "$taskId" "$fileName" "$fileLineNo" "$errMsg"    return 0}# 载入 HPUX 实例定义的环境变量. $HOME/hpux/.setenvif [[ ENABLEFLAG = 1 ]]  then  exitfi# 载入 OMS 系统定义的文件传输参数定义配置文件

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -