Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Użytkownik

Zachciało mi się wstawić monitor rtorrenta do conky na podstawie poradnika:
tego
lub tego
Generalnie oba wykorzystują to samo czyli Frontiera i tu zaczynają się schody, ponieważ otrzymuję taki komunikat jak na pierwszym z poradników, czyli:
wanted a data type, got `i8′
Poniżej niby jest rozwiązanie ale nie wiem gdzie mam to dopisać. Czy istnieje jakiś plik konfiguracyjny Frontier RPC2?
Offline
Użytkownik

A może ma ktoś jakieś rozwiązanie aby w conky wyświetlić status rtorrenta ale przy użyciu scgi_port a nie scgi_local
Offline
Użytkownik

Znalazłem w końcu ten plik Frontiera odpowiedzialny za to. Znajdował się w /usr/share/perl5/Frontier i nosił nazwę RPC2.pm
Wstawiłem brakującą linię zgodnie z instrukcją i zaczął pobierać dane z tym, że teraz wyświetla komunikat o błędzie:
Argument "\x{20}\x{37}..." isn't numeric in division (/) at /home/adam/.conky/skrypty/rtorrent-status.pl line 37.
Domyślam się, że chodzi o to, że dane, które skrypt próbuje podzielić nie są liczbą w linii:
my $percent_done = 100 * ($d->[1] / $d->[2]);
Cały skrypt zamieszczam poniżej. Niestety nie znam perla i nie wiem jak to poprawić.
#!/usr/bin/perl
use strict;
use warnings;
use Frontier::Client;
#test if rtorrent is running
my($sessdir)='/home/adam/.session';
if (! -e "$sessdir/rtorrent.lock")
{
printf("\${color FFFFFF}Rtorrent not running\n");
exit;
}
# Configuration
use constant server => 'http://localhost/RPC2';
# Do not edit below this comment
my $server = Frontier::Client->new(url => server);
my $uprate = $server->call('get_up_rate');
my $downrate = $server->call('get_down_rate');
#use the "to_mb" conversions built into xmlrpc as other conversions are messy
#for large files, it returns an INT that is too large - wraps around and becomes negative.
my $torrents = $server->call('d.multicall', "main",
"d.get_base_filename=",
"to_mb=\$d.get_bytes_done=",
"to_mb=\$d.get_size_bytes=",
"d.get_down_rate=");
my @res;
foreach my $d (@$torrents) {
my $dl_rate = $d->[3] / 1024;
my $percent_done = 100 * ($d->[1] / $d->[2]);
if ($percent_done == 100) {
push @res,
sprintf("\${color 0033FF}%.28s \${alignr}%6.1f kB/s\n" .
"" x 2 . "%3.1f%%" . " \${execbar echo %3.0f }\${color 33DD33}",
$d->[0], $dl_rate, $percent_done, $percent_done);
} else {
push @res,
sprintf("\${font Arial:size=8}%.40s \${font}\n\${alignr}%6.1f kB/s\n" .
"" x 2 . "%3.1f%%" . " \${execbar echo %3.0f }\n",
$d->[0], $dl_rate, $percent_done, $percent_done);
}
}
printf("\${color FFFFFF}%6.1f kB/s up %6.1f kB/s down\n\n \${color ffffff}", $uprate / 1024, $downrate / 1024);
print join("\n", @res), "\n";Offline