1. 程式人生 > >Linux-執行校驗指令碼

Linux-執行校驗指令碼

 

#!/bin/bash
#function       : 1 檢查檔案是否存在 2 執行檔案 3 支援單個或多個一起
#file name      :
#author         :

#放置jar包的目錄
root_path="./jar/"
profiles_active="test_env"
loaded_jar_info="./app.properties"
##############

#提醒
warn_info(){
  echo "$(date +"%Y-%m-%d %T"):$1"
}

warn_info2(){
 echo -e "\033[36m ${1} \033[0m \n"
}

#列印位置
jar_location(){
  echo ${root_path}${1}
}

#所有檔案校驗
all_check(){ 
  arr_files=$(ls ${root_path})
  for key in $(cat "${loaded_jar_info}"|cut -d ':' -f 1 )
  do
    if [ $(echo "${arr_files[@]}" | grep -c "${key}") -ne 1 ];then
      warn_info "==>error:${key},this file is not exist..."
      exit
    fi
  done
  warn_info "all check finished..."
}

#單個檔案校驗
simple_check(){
  file_name=${1}
  arr_files=$(ls ${root_path})
  
  if [ $(echo "${arr_files[@]}" | grep -c "${file_name}") -ne 1 ];then
      warn_info "==>error:${file_name},this file is not exist..."
      exit
  fi
  warn_info "${file_name} file check finished..."
}

#載入jar包
load_app(){
 jar_name=${1}
 port=${2}
 warn_info "======>execute new jar,jar_name:${jar_name},${port}" 
}

#分發app
distribute_invoke(){
  for key in $(cat "${loaded_jar_info}")
  do
    this_file=$(echo ${key}|cut -d ':' -f1)
    this_port=$(echo ${key}|cut -d ':' -f3)
    load_app "${this_file}" "${this_port}"
  done
}

mymain(){ 
 echo
 warn_info2 "welcome to use loading sh"
 
 while true
 do
  awk -F: 'BEGIN {count=0;}  { print "\n=>follows files list:";count++ } \
               { printf "%3d:%-50s:%5d\n",NR,$1,$3} \
           END {printf "\033[36m files list count:%5d\033[0m\n",count} ' \
               "${loaded_jar_info}" 
  warn_info2 "you can input [choice sequence],[all],[quit],"
  read -p "$(warn_info2 "Enter your choice sequence:")" user_choice

  case $user_choice in 
         [1-9]) 
           choiced_file=$(sed -n "${user_choice}p" app.properties |cut -d ':' -f1 )
           choiced_port=$(sed -n "${user_choice}p" app.properties |cut -d ':' -f3 )
           simple_check "${choiced_file}"
           load_app "${choiced_file}" "${choiced_port}" 
         ;; 
         all) 
           all_check
           distribute_invoke 
           exit
         ;; 
         quit|q)
           warn_info2 "bye"
           exit
         ;;
         *) 
           echo "Ignorant" 
         ;; 
  esac
 done 
}

mymain

app.properties

AAAAAA.jar::8300
BBBBBB.jar::8301
CCCCCC.jar::9000