Script para mlnet -controlador automático de las tasas-

2 minute read

Hace unos días recibí un e-mail que hacía referencia al script que escribí para controlar las tasas del mldonkey: Controlador automático de los rates del MLDonkey.

Cito textualmente dicho e-mail: _ Saludos, este script lo hice basado en uno que publicaste, me gustaria que lo vieras, agradeceria tus comentarios. lo uso con cron cada 10 minutos, en un servidor ciego con debian.

Estamos en contacto._

Y me puse en contacto con él para ver si podía subirlo al blog, ante su afirmativa aquí está (he modificado algunas variables bajo su permiso para que no de pie a errores):

`

#### #!/bin/bash

Script para Variar las tasas subida/bajan en el Mlnet en una LAN

#Elaborado por Miguel Mtz (aka) Xarmaz #Basado en trabajos tomados de la RED de:

Jaime Bosque (aka) KetS e-mail: jaboto (at) gmail.com

aRDi

tazok de esdebian.org

#Requerimientos: #nmap telnet MLdonkey # #Se Requiere programar una entrada en Cron para que lo ejecute con regularidad #Al ejecutarse inicia el demonio mlnet si no esta corriendo, #determina cuantos equipos estan conectados y asigna la tasa mas #adecuada de descarga. #sirve para maquinas basadas en Debian y ubuntu

definir Variables

#———————————————————————————– Usuario=admin Contrasenna= (pon tu contraseña) LAN=192.168.1 Servidor=192.168.1.xxx Puerto=4000 Registro=”/var/lib/mldonkey/acelerador.log”

Establece los criterios y las tasas mas adecuadas

Todo al Mlnet, solo servidor

TSalta=0 TDalta=0

1 o 2 maquinas aparte del servidor

TSMedia=5 TDMedia=15 #mas de 3 maquinas Conectadas. TSBaja=2 TDBaja=6 #———————————————————————————– #Determina si el demonio esta corriendo y de no ser así lo lanza. EstadoDemonio=pidof mlnet|wc -l Proceso=pidof mlnet

if [ “$EstadoDemonio” == “1” ]; then

# Determina cuantas Maquinas estan Conectadas a la LAN
# si hubo cambios  procede a modificar estado
NumMaqAct=`nmap -sP $LAN.* | grep $LAN | wc -l`
UltimoReg=`tail -n1 $Registro`
NumMaqAnt=${UltimoReg:22:1}

if [ "$NumMaqAnt" == "$NumMaqAct" ]; then
	echo "nada que hacer"		
	exit 0
else
	# Asigna la tasa mas Adecuada en Funcion de las maquinas conectadas
	# el valor mas bajo es 2 (router y Servidor)

	case $NumMaq in
		0|1|2)
			TasaS=$TSalta
			TasaD=$TDalta
		;;
		3|4)
			TasaS=$TSMedia
			TasaD=$TDMedia
		;;
		5|6|7|8|9|10|11|12)
			TasaS=$TSBaja
			TasaD=$TDBaja
		;;
	esac

	#Envia la instruccion al Servidor via telnet
	{
	sleep 1
	echo auth $Usuario "$Contrasenna"
	sleep 1
	echo set max_hard_upload_rate $TasaS
	sleep 1
	echo set max_hard_download_rate $TasaD
	sleep 1
	echo q
	} | telnet $Servidor $Puerto

	#introduce en registro el movimiento.
	echo `date +"%d/%m/%y -- %H:%M"` E$EstadoDemonio M$NumMaqAct S$TasaS D$TasaD P$Proceso >> $Registro
fi else
#Borrar Archivos que pueden impedir el arranque		
if [ -f /var/run/mldonkey/mlnet.pid ]; then
	rm /var/run/mldonkey/mlnet.pid 
            rm /var/lib/mldonkey/mlnet.pid 
	#introducir en registro el movimiento.
	echo `date +"%d/%m/%y -- %H:%M"` "mlnet se encontro parado y con archivo pid sin eliminar" >> $Registro	
fi
#Inicia el demonio mlnet	
/etc/init.d/mldonkey-server start
echo `date +"%d/%m/%y -- %H:%M"` "mlnet lanzado" >> $Registro fi	 exit 0

`

Espero que os sirva de ayuda, los agradecimientos a Xarmaz, yo sólo me limito a publicar su trabajo ;)