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