Скрипт вычисляющий коэфициент в зависимости от загрузки каналов

#!/bin/bash
 
# Этим скриптом узнаем скорость на интерфейсах аплинков
 
# Имя временного файла при перегрузке канала
FILE_TMP=/tmp/reconocer_velocidad.tmp
# Имя файла для отправки по ftp
FILE=/srv/ftp_backup/coeficiente_de_velocidad
# Имя файла для отправки по ftp
FTP_HOST=lt2.lan
# Массив с интерфейсами аплинков
interfazes=(vlan950 vlan429)
# Массив с предельными скоростями аплинков
velocidades_maximas=(850 600)
# Градация процентов загруженности канала
porcentajes=(0 40 50 65 73 80 105)
# Градация коэфициентов скорости относительно процентов загруженности каналв
coeficientes=(3 2.5 1.9 1.5 1.2 1 1)
# Количество секунд в течении которых собираем данные о количестве трафика пройденного через интерфейс
sueno=30
 
# Если временный файл не существует, то создаем его
if [ ! -e $FILE_TMP ];then
    touch $FILE_TMP
fi
 
# Считаем количество переменных в массивах градаций
cantidad_de_porcentajes=${#porcentajes[@]}
cantidad_de_coeficientes=${#coeficientes[@]}
 
n=0
m=0
porcentaje_general=0
coeficiente=1
# Проходим по значениям массива интерфейсов
for interfaz in ${interfazes[@]}
do {
  # Узнаем 1-ое значение счетчика байт на интерфейсе
  valor1=`netstat -i | grep $interfaz | awk {'print $4'}`
  # Ждем заданный интервал в секундах
  sleep $[$sueno-2]
  # Узнаем 2-ое значение счетчика байт на интерфейсе
  valor2=`netstat -i | grep $interfaz | awk {'print $4'}`
  # Узнаем разницу между значениями
  diferencia=$[$valor2 - $valor1]
  # Узнаем скорость входящего трафика через интерфейс
  velocidad=$[$diferencia / $sueno * 8 / 1024]
  # Узнаем процент на сколько загружен канал
  porcentaje=$[$velocidad * 100 / ${velocidades_maximas[$n]}]
  echo $interfaz=$velocidad=${velocidades_maximas[$n]}=$porcentaje
  if [ $porcentaje_general -le $porcentaje ];then {
    porcentaje_general=$porcentaje
  }
  fi
  n=$[$n+1]
}
done
echo porcentaje_general=$porcentaje_general
 
# Перебираем массив процентов сравнивая его с процентом загруженности сети
for (( i = 0 ; i < $cantidad_de_porcentajes ; i++ ))
do {
  if [ "${porcentajes[$i]}" -le  $porcentaje_general ];then {
    coeficiente=${coeficientes[$i]}
  }
  else {
    i=$cantidad_de_porcentajes
  }
  fi
}
done
 
coeficiente_tmp_file="`echo \"scale=2; $(cat $FILE_TMP) * 10 \" | bc | awk -F. {'print $1'}`"
 
echo coeficiente_tmp_file=$coeficiente_tmp_file
echo "porcentajes[cantidad_de_porcentajes]="${porcentajes[$[$cantidad_de_porcentajes-1]]}
 
# если канал загружен больше, чем последний процент в массиве и коэфициент в файле больше 0.2
if [ "$porcentaje_general" -gt "${porcentajes[$[$cantidad_de_porcentajes-1]]}" ] && [ "$coeficiente_tmp_file" -gt "2" ];then {
  # если файл пустой то записываем туда коэфициент
  if [ "`cat $FILE_TMP`" == "" ];then {
    echo $coeficiente > $FILE_TMP
  }
  fi
  echo 111
  coeficiente_tmp="`cat $FILE_TMP`"
  # убавляем коэфициент на 0.2
  coeficiente=`echo "scale=2; $coeficiente_tmp - 0.2" | bc `
  coeficiente="0$coeficiente"
  # записываем коэфициент во временный файл
  echo "$coeficiente" > $FILE_TMP
}
fi
 
# если коэфициент в файле меньше 1
if [ "$coeficiente_tmp_file" -lt "10" ];then {
  # если процент загрузки канала меньше, чем предпоследний процент в массиве
  if [ "$porcentaje_general" -lt "${porcentajes[$[$cantidad_de_porcentajes-2]]}" ];then {
    coeficiente_tmp="`cat $FILE_TMP`"
    coeficiente=`echo "scale=2; $coeficiente_tmp + 0.2" | bc `
    if [ "`echo $coeficiente | awk -F. {'print $0'}`" == "" ]; then {
      coeficiente="0$coeficiente"
    }
    fi
    # тогда записываем коэфициент во временный файл
    echo "$coeficiente" > $FILE_TMP
  }
  fi
  coeficiente="`cat $FILE_TMP`"
}
fi
 
echo coeficiente_general=$coeficiente
echo $coeficiente > $FILE