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/.
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
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
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