Ogni home-server che si rispetti ha il suo amule installato come demone. Peccato che amule, come tutti i programmi di file sharing succhia-banda, possono renderci la navigazione lenta anche quando non stiamo scaricando, o abbiamo pochi download in coda, dato che sfruttano la nostra banda in uscita per condividere i files scaricati. Di contro limitando molto la banda in uscita rischiamo di scaricare lentamente (politica di amule).

amule

Per ovviare a questo problemuccio ho scritto questo script che in base al numero dei download in coda, alza o abbassa i limiti di banda del nostro client peer-to-peer preferito, a patto che sia stato compilato con l’utility amulecmd, o, nel caso delle distribuzioni “a pacchetto”, sia installato il pacchetto relativo ad amulecmd.
Lo script setta a 2kB/s la velocità di upload quando non c’è nessun file nella coda dei downloads; se ci sono meno di tre file nella coda la velocità di upload viene settata a 10kB/s, in tutti gli altri casi la velocità di upload verrà settata a 30kB/s. La parte iniziale dello script contiene dei parametri ben commentati per modificarne il comportamento.

#!/bin/sh

#password per connettersi al demone
PASSWORD="abc"
#comando daeseguire per connettersi al demone (di solito è sempre questo)
AMULE_COMMAND="amulecmd"
#limite della banda in upload quando non c'è nessun file nella coda dei download
IDLE_BW_UP=2
#numero minimo dei file in download per settare il limite di banda
#in upload al valore "normale"
MIN_DW_LIMIT=2
#limite di banda in upload quando il numero dei file nella coda dei download
#è compreso sta 1 e MIN_DW_LIMIT
MIN_BW_UP=10
#limite di banda in upload "normale" ovvero quando il numero dei files in coda
#è superiore a MIN_DW_LIMIT
NORMAL_BW_UP=30

UP_LIMIT="set bwlimit up "
DW_LIMIT="set bwlimit down "
COMMAND="$AMULE_COMMAND -P$PASSWORD -c"

if [ -z "$(pgrep amuled)" ]; then
    #echo “amule chiuso”
    exit
fi

setUploadBw()
{
    CURR_BW_UP=`expr substr “$($COMMAND “get bwlimits” | grep “Up”)” 24 2`
    if [ "$CURR_BW_UP" -ne "$1" ]; then
        $COMMAND “$UP_LIMIT $1″ > /dev/null
        $COMMAND “$DW_LIMIT 0″ > /dev/null
        echo “$0: La banda in uscita è stata settata a $1 kB/s”
    fi
}
NDOWN=$($COMMAND “show dl” | grep -c “>”)

if [ "$NDOWN" -le 0 ];then
    setUploadBw $IDLE_BW_UP
else
    if [ "$NDOWN" -le "$MIN_DW_LIMIT" ]; then
        setUploadBw $MIN_BW_UP
    else
        setUploadBw $NORMAL_BW_UP
    fi
fi

Copiamo e incolliamo il tutto in un file, es “setamulebandwidth”, modifichiamo i parametri che ci interessano, salviamolo in /usr/bin e settiamogli i diritti di esecuzione:

#chmod a+x /usr/bin/setamulebandwidth

Naturalmente dobbiamo fare eseguire il nostro script in maniera automatica almeno ogni 5 minuti, anche se personalmente lo faccio girare ogni minuto, e per fare questo usiamo cron:

# sudo crontab -e
e aggiungiamo la seguente riga:
* * * * * /usr/bin/setamulebandwidth

salviamo ed è fatta. Ora il vostro amule cambierà il limte di banda in upload dinamicamente!


Se sei interessato a questo post, potresti anche provare a leggere:

    No related posts