Script para modificar los parámetros de subida y bajada del MLDonkey


Desde hace meses quería hace un pequeño script para poder cambiar el ancho de banda del MLDonkey y así poder ponerlo en el crontab para que sea automático (quiero subir a la noche y bajar durante el día). Ahora me puse a hacerlo Como Toca (TM), es decir en Perl 🙂 y accediendo a la interfaz telnet del MLDonkey. Lo hice de tal manera que sea fácil modificarlo para cambiar otros parámetros.

El script, mldonkey_bw.pl, toma dos argumentos, el ancho de banda para subida (upload) y el de bajada (download). Como resultado imprimirá los valores anteriores y los nuevos después de la modificación. Por ejemplo:

$ mldonkey_bw.pl 4 10
Old: upload=8 download=16
New: upload=4 download=10

Si queréis podéis ponerlo en viustro crontab para que lo haga automáticamente como el mío:

$ crontab -l

0 2 * * * /usr/local/bin/mldonkey_bw.pl 8 16 &> /dev/null
0 9 * * * /usr/local/bin/mldonkey_bw.pl 4 9 &> /dev/null

Espero que os sirva.
Casi me olvido: Hace falta el módulo de Perl Net::Telnet. En Debian está en el paquete libnet-telnet-perl.
Actualizado: Si no se pone ningún parámetro sólo muestra los límites actuales.

#! /usr/bin/perl
# by Ricardo Galli (gallir at uib dot es)
# This software is licensed under the GNU General Public License

use strict;
use Net::Telnet;

if (scalar @ARGV < 2 and scalar @ARGV > 0) {
&usage;
}

my $upload = shift;
my $download = shift;

my $addr = “127.0.0.1”;
my $port = 4000;
my $prompt = ‘/> $/’;

my $telnet;
my %options;

$telnet = new Net::Telnet ( Host => $addr, Port => $port,
Prompt => $prompt) or die “Error opening connection”;
$telnet->waitfor($prompt);

&get_options;
print “Old: upload=$options{max_hard_upload_rate}”;
print ” download=$options{max_hard_download_rate}\n”;

if ( $upload and $download ) {
&set_option(“max_hard_upload_rate”, $upload);
&set_option(“max_hard_download_rate”, $download);
&get_options;
print “New: upload=$options{max_hard_upload_rate}”;
print ” download=$options{max_hard_download_rate} \n”;
}

# Disconnect
$telnet->print(‘q’);

sub get_options {
my ($name, $value);
my @output = $telnet->cmd(‘vo’);
foreach $_ (@output) {
chomp;
# Clean ANSI escape sequences
s/\x1b\x5b[^\x6d]+\x6d//g;
if( ($name, $value) = /([\w\.]+)\W+=\W+([\w\.]+)/) {
$options{$name} = $value;
}
}
}

sub set_option {
my ($name, $value) = @_;
$telnet->cmd(“set $name $value”);
}

sub usage {
die “Usage:\n\t$0 upload download\n\n”;
}

Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=2124 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.