Created by
Ruslan Osmanov
| #!/bin/bash -
# Generates iostat data files for processing with the GNU plot utility.
# Author: Ruslan Osmanov <rrosmanov@gmail.com> 2016
HEADER=
TIME_FORMAT="%Y/%m/%d/%H:%M"
TIME=$(date "+$TIME_FORMAT")
DIR=$(cd $(dirname "$0"); pwd)
REPORT_DIR="${DIR}/r"
#####################################################################
# Functions
source $DIR/util.sh
# $1 - exit code
function usage
{
echo "
Generates iostat data files for processing with the GNU plot utility(plot.sh).
Usage: $0 OPTIONS
OPTIONS:
-h, --help Display help message
-t, --time-format Time format. Default: ${TIME_FORMAT}.
-i, --report-dir Directory with reports. Default: ${REPORT_DIR}.
"
exit $1
}
#####################################################################
# Parsing CLI options
OPTS=$(getopt -o t:i:h -l time-format:,report-dir:,help -- "$@")
[ $? -eq 0 ] || usage 1
eval set -- "$OPTS"
while true
do
case "$1" in
-t|--time-format)
TIME_FORMAT="$2"
shift 2;;
-i|--report-dir)
REPORT_DIR="$2"
shift 2;;
-h|--help)
usage 0
shift;;
--)
shift
break;;
?)
usage 1;;
*)
die "Internal error: failed to parse CLI args"
esac
done
echo TIME_FORMAT: $TIME_FORMAT REPORT_DIR: $REPORT_DIR
#####################################################################
mkdir -p $REPORT_DIR
[ $? -eq 0 ] || die "Report directory '$REPORT_DIR' is inaccessible"
iostat -dpxk | while read -r line
do
if [[ -z $HEADER && $line == Device* ]]; then
HEADER=( $line )
elif [[ -n $HEADER ]]; then
[[ -z $line ]] && continue
columns=( $line )
[[ ${#HEADER[@]} != ${#columns[@]} ]] && continue
i=1
for h in ${HEADER[@]:1}
do
param_report_dir="${REPORT_DIR}/"$(getSafeFilename $h)
mkdir -p $param_report_dir
[ $? -eq 0 ] || die "Parameter directory '$param_report_dir' is inaccessible"
# $REPORT_DIR/param/device
echo $TIME$'\t'${columns[$i]} >> $param_report_dir'/'${columns[0]}
(( ++i ))
done
fi
done
echo 'Done'
#vim: ts=2 sts=2 sw=2 et
|