Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as Bash by lvlonstradamus ( 14 years ago )
#!/bin/sh
## INIT
export local_nmon_path='/tmp/statistics/'
export remote_nmon_path='/var/perf/poa/'
export nmon_path='/tmp/statistics/'
export script_path='/sw/linux/scripts/statistics/'
export debug=0
export temp_dir='/tmp/statistics/'

if [ debug == 1 ];then scr_begin=$(date +%X.%N);fi

################################################################################################
##                                                                                            ##
##                                  functions                                                 ##
##                                                                                            ##
################################################################################################

function print_scr_time 
{
 echo ''
 echo 'время выполнения скрипта'
 echo 'begin' $scr_begin
 echo 'end  ' $scr_end
}

function print_help
{
                echo ''
                echo 'usage: statistics.sh -h <host_name> -s <bebin_date> -e <end_date> -t <target>'
                echo ' -h (hostname)'
                echo '  need input server name'
                echo ' -s,-d (date)'
                echo '          -s - start time'
                echo '          -e - end time'
                echo '   date format need YYMMDD. For example 15.09.1984 - 840915'
                echo ' -t (target):'
                echo '  cpu_avg - average cpu values'
                echo '  cpu_max - maximum cpu values'
                echo '  mem_avg - average memory values'
                echo '  mem_max - maximum memory values'
                echo '  net_avg - average network values'
                echo '  net_max - maximum network values'
                echo '  iops_avg - average HDD iops values'
                echo '  iops_max - maximum HDD iops values'
                echo '  -d (debug level)'
                echo '          0 - no prin debug (default)'
                echo '          1 - maximum debug'
                echo '          2 - print headers'
                echo ''
}

function print_info
{
#        echo 'incoming data: host='$hostname' target='$target' begin='$start_time' end='$end_time
 if [ $start_time != $end_time ]; then print_end_time=$end_time; else print_end_time='one day';fi
  if [ $debug == 1 ];then echo $hostname' '$target' '$start_time'-'$print_end_time;fi
}

function print_head
{
        echo ''
        echo '############################################################'
        echo '##                      Statistic                         ##'
        echo '############################################################'
        echo ''
        echo $(date)
        echo 'start cllecting statistics..................................'
        print_info
 echo ''
}

################################################################################################
##                                                                                            ##
##                                  implementatiion                                           ##
##                                                                                            ##
################################################################################################


if [ $debug == 2 ];then echo 'считываем входящие параметры';fi
#проверяем всё ли впорядке с аргументами скрипта
while getopts d:h:t:s:e: option 
do
 case $option in
  h) hostname=$OPTARG;;
  t) target=$OPTARG;;
  s) start_time=$OPTARG;;
  e) end_time=$OPTARG;;
  d) debug=$OPTARG;;
  ?) echo 'ERROR:002 какая то фигня со значениями аргументов';;
 esac
 if [ $debug == 2 ];then echo $option' = '$OPTARG ;fi
done
## на случай если собирать данные необходимо только за один день
if [ -z "$end_time" ]; then end_time=$start_time; fi

## для того чтоб эти данные можно было использовать при выполнении на удалённом сервере
export hostname=$hostname
export start_time=$start_time
export end_time=$end_time
export script_path=$script_path
export remote_nmon_path=$remote_nmon_path

## создаём папку для временных файлов 
temp_dir=$local_nmon_path$(date +%Y%m%d_%H%M%S)'_'$hostname"/"
if [ $debug == 2 ];then echo 'создаём директорию '$temp_dir' для хранения временных файлов';fi
mkdir -p $temp_dir
if [ -d $temp_dir ];then
 if [ $debug == 2 ];then echo 'временная директория '$temp_dir' создана нормально';fi
## для использования при необходимости в запускаемом скрипте
 export  temp_dir=$temp_dir
 if [ $debug == 2 ];then echo 'проверка пареметров';fi
 if [ -z "$hostname"  -o -z "$target" -o -z "$start_time" -o -z "$end_time" ];
 then
   echo 'БРЕД В ПАРАМЕТРАХ'
   target=no_params
 else
## генерация списка файлов для обработки
  if [ $debug == 2 ];then echo 'генерируем список файлов...';fi
  file_list=$( ssh root@$hostname ls -1 /var/perf/poa/|grep $hostname|awk -v start_time=$start_time -v end_time=$end_time -f $script_path"files_filter.awk")
  if [ $debug == 2 ];then echo $file_list;fi
  if [ $debug == 2 ];then echo 'проверяем список файлов...';fi
  if [ -n "$file_list" ];
  then
 #  print_head
   print_info
 #  echo 'список файлов составлен. начинается скачивание файлов во временную директорию: '$temp_dir
   for download in $file_list;
   do
## скачиваем файлы во временную директорию для обработки скриптом сбора сттистики
    if [ $debug == 2 ];
    then 
     scp root@$hostname:$remote_nmon_path$download $temp_dir
    else
     scp root@$hostname:$remote_nmon_path$download $temp_dir>/dev/null
    fi
   done
   if [ $debug == 2 ];then echo 'проверка наличия скрипта обработки статистики';fi
   script=$script_path$target".sh"
   if [ -r "$script" ];
   then
## запускаем скрипт обработки статистики
    if [ $debug == 2 ];then echo 'найден скрипт '$script' которому будет отправлен следующий список файлов';fi
    for NAME in $(ls -1 $temp_dir)
    do
     if [ $debug == 2 ];then echo 'файл '$temp_dir$NAME" "' добавлен в обработку';fi
     target_file=$target_file' '$temp_dir$NAME
    done
 #   echo 'файлы скачаны и сейчас обрабатываются скриптом '$script
 #          echo ''
    export target_file=$target_file
    sh $script
   else
    echo 'файл скрипта'$script'не существует или не доступен для чтения'
   fi
  else
   echo "СПИСОК ФАЙЛОВ НЕ СГЕНЕРИРОВАН ИЛИ ПУСТ"
  fi
 fi
else
 echo 'ОШИБКА СОЗДАНИЯ ВРЕМЕННОЙ ДИРЕКТОРИИ'
fi

## очистка временных файлов
if [ $debug == 2 ];then echo 'удаление временных файлов: '$temp_dir;fi
rm -rf $temp_dir

if [ debug == 2 ];then scr_end=$(date +%X.%N);fi
## выводим время выолнения скрипта
if [ debug == 2 ];then print_scr_time;fi

 

Revise this Paste

Your Name: Code Language: