Nombre: controla-ancho-de-banda.sh
Autor: Joaquín E. Naiviat [ joaquinaiviat@yahoo.com.ar ]
Visto en
Desde Linux
# controla-ancho-de-banda.sh
#
# Copyright 2013 Joaquín E. Naiviat
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with limita_transmission.sh. If not, see .
#
#
# NOMBRE: controla-ancho-de-banda.sh
#
# DESCRIPCIÓN: Controla las velocidades de carga y descarga del programa
# «Transmission» según el consumo de ancho de banda del programa «Firefox».
#
# REQUIERE: los siguientes programas son necesarios para el correcto
# funcionamiento: Transmission, Firefox, Nethogs, awk.
#
# CONSIDERACIONES:Se requiere su ejecución como root para poder iniciar «Nethogs».
#
#
#
#!/bin/bash
#Valores por defecto de carga y descarga de transmission-remote
Lim_U=50
Lim_D=75
cd /tmp
LimitaSubida50(){
#Evita usar demasiado el comando transmission-remote
if [ "$Lim_U" -eq "5" ]; then
su joaquin -c "transmission-remote -u 50"
Lim_U=50
fi
}
LimitaSubida5(){
if [ "$Lim_U" -ne "5" ]; then
su joaquin -c "transmission-remote -u 5"
Lim_U=5
fi
}
LimitaBajadada75(){
#Evita usar demasiado el comando transmission-remote
if [ "$Lim_D" -eq "5" ]; then
su joaquin -c "transmission-remote -d 75"
Lim_D=75
fi
}
LimitaBajadada5(){
if [ "$Lim_D" -ne "5" ]; then
su joaquin -c "transmission-remote -d 5"
Lim_D=5
fi
}
Apagar=0
DetenerScript(){
# Termina el Script con estado 130 (SIGINT) correctamente
Apagar=1
#Detiene nethogs si está en ejecución
VERIF_NETHOGS=` ps ax | grep -v grep| grep "nethogs -t"`
if [ "$?" -eq "0" ]; then
killall nethogs
fi
#Borra /tmp/net.lista
if [ -f /tmp/net.lista ]; then
rm /tmp/net.lista
fi
#Restaura valores predeterminados de carga y descarga de transmission-remote
LimitaSubida50
LimitaBajadada75
exit 130
}
trap DetenerScript INT TERM
while true;
do
if [ "$Apagar" -eq "0" ]; then
#Comprueba si transmission está en ejecución antes de iniciar.
EJEC_TRANSMSSION=`ps -A | grep transmission`
if [ "$?" -eq "0" ]; then
#Inicia torrents si están pausados
VERIF_TRANSMISSION=`transmission-remote -tall -i | grep Stopped`
if [ "$?" -eq "0" ]; then
su joaquin -c "transmission-remote -tall -s"
fi
#Comprueba si firefox está en ejecución antes de iniciar Nethogs.
EJEC_FIREFOX=`ps -A | grep firefox`
if [ "$?" -eq "0" ]; then
#Guarda la salida de nethogs a un archivo «net.lista»
nethogs -t > net.lista &
sleep 2
killall nethogs
#Lee net.lista y filtra los KB/s enviados y recibidos
#KB/s ENVIADOS: $2 RECIBIDOS $3
KB_ENV=`grep firefox net.lista | awk '{print $2}' | awk -F"." '{print $1}'`
KB_REC=`grep firefox net.lista | awk '{print $3}' | awk -F"." '{print $1}'`
#Controla ancho de banda de transmission según el uso de firefox
#Verifica que "$KB_ENV" o "$KB_REC" no den como resultado nada,
#para evitar mensajes de error en -gt
if [ "$KB_ENV" != "" ]; then
if [ "$KB_ENV" -gt "0" ]; then
LimitaSubida5
else
LimitaSubida50
fi
else
LimitaSubida50
fi
if [ "$KB_REC" != "" ]; then
if [ "$KB_REC" -gt "3" ]; then
LimitaBajadada5
else
LimitaBajadada75
fi
else
LimitaBajadada75
fi
sleep 5
else
#Si Firefox está detenido, restaura valores y espera
LimitaSubida50
LimitaBajadada75
sleep 8
fi
else
#Si Transmission está detenido espera
sleep 20
fi
else
#Sale del bucle al recibir la señal Apagar=1
break
fi
done
exit 0
Leer más...