Kod: Zaznacz cały
# set to yes if you want Conky to be forked in the background
background no
# Use Xft?
use_xft yes
#xftfont Bitstream Vera Sans Mono:size=8
xftfont Terminus:encoding=utf-8:size=8
xftalpha 0.9
# Text alpha when using Xft
xftalpha 0.8
# Update interval in seconds
update_interval 1.0
# This is the number of times Conky will update before quitting.
# Set to zero to run forever.
total_run_times 0
# Create own window instead of using desktop (required in nautilus)
own_window yes
# Use pseudo transparency with own_window?
own_window_transparent yes
own_window_type override
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
# Use double buffering (reduces flicker, may not work for everyone)
double_buffer yes
# Minimum size of text area
minimum_size 20
# Draw shades?
draw_shades yes
# Draw outlines?
draw_outline no
# Draw borders around text
draw_borders no
# Stippled borders?
stippled_borders 8
# border margins
border_margin 4
# border width
border_width 1
# Default colors and also border colors
default_color white
default_shade_color black
default_outline_color white
# Text alignment, other possible values are commented
alignment top_left
#alignment top_right
#alignment bottom_left
#alignment bottom_right
# Gap between borders of screen and text
# same800 thing as passing -x at command line
gap_x 1400
gap_y 10
# Subtract file system buffers from used memory?
no_buffers yes
# set to yes if you want all text to be in uppercase
uppercase no
# number of cpu samples to average
# set to 1 to disable averaging
cpu_avg_samples 2
# number of net samples to average
# set to 1 to disable averaging
net_avg_samples 2
# Force UTF8? note that UTF8 support required XFT
override_utf8_locale yes
text_buffer_size 2048
# Add spaces to keep things from moving about? This only affects certain objects.
use_spacer yes
TEXT
${color }UpTime: ${color gold}$uptime ${color }users: ${color gold}${execi 360 users}${color }, kernel: ${color }$kernel ${color }
${color }${hr}
${color gold}${cpu cpu1}${color }% / ${color gold}${freq 1}${color }MHz / ${color gold}${hwmon temp 1}${color }°C ${color gold}${cpu cpu2}${color }% / ${color gold}${freq 2}${color }MHz / ${color gold}${hwmon temp 2}${color }°C
${color }${cpugraph cpu1 15,130 000000 ffffff} ${color }${cpugraph cpu2 15,130 000000 ffffff}
${color }Name CPU% PID%${font Bitstream Vera Sans Mono:size=8.5}
${color gold} ${top name 1}${top cpu 1} ${top pid 1}
${color } ${top name 2}${top cpu 2} ${top pid 2}
${color } ${top name 3}${top cpu 3} ${top pid 3}
${color } ${top name 4}${top cpu 4} ${top pid 4}
${color } ${top name 5}${top cpu 5} ${top pid 5}$font
${color }RAM: ${color gold}$memperc%
${color }${membar 4,275}
${color }SWAP: ${color gold}$swapperc%
${color }${swapbar 4,275}
${color }/dev/sda temp: ${color gold}${hddtemp /dev/sda}
${color }/dev/sdb temp: ${color gold}${hddtemp /dev/sdb}
${color }/:
${color }${fs_used /} zajęte z ${fs_size /}
${color }${fs_bar 4,275 /}
${color }/home/urbinek:
${color }${fs_used /home} zajęte z ${fs_size /home}
${color }${fs_bar 4,275 /home}
${color }/home/urbinek/Filmy:
${color }${fs_used /home/urbinek/Filmy} zajęte z ${fs_size /home/urbinek/Filmy}
${color }${fs_bar 4,275 /home/urbinek/Filmy}
${color }/home/urbinek/Anime:
${color }${fs_used /home/urbinek/Anime} zajęte z ${fs_size /home/urbinek/Anime}
${color }${fs_bar 4,275 /home/urbinek/Anime}
${color }eth0 usage: IP:${color gold}${addr eth0}
${color1}total connections: ${color gold}${tcp_portmon 1 65535 count}${color }/256
${color }${execi 30 cat ~/.ping_stat}
${color}Down: ${color gold}${downspeed eth0} ${color }Kb/s ${color gold} ${totaldown eth0} ${color}Up: ${color gold}${upspeed eth0} ${color }Kb/s ${color gold} ${totalup eth0}
${color }${downspeedgraph eth0 15,130 000000 ffffff} ${color }${upspeedgraph eth0 15,130 000000 ffffff}
${color }eth1 usage: IP:${color gold}${addr eth1}
${color}Down: ${color gold}${downspeed eth1} ${color }Kb/s ${color gold} ${totaldown eth1} ${color}Up: ${color gold}${upspeed eth1} ${color }Kb/s ${color gold} ${totalup eth1}
${color }${downspeedgraph eth1 15,130 000000 ffffff} ${color }${upspeedgraph eth1 15,130 000000 ffffff}
${execpi 3600 /home/urbinek/skrypty/orange.pl}
/home/urbinek/skrypty/orange.pl
Kod: Zaznacz cały
#!/usr/bin/perl
###########################################################################
# Copyright (C) 2009 by Bender88 #
# bender314@gmail.com #
# #
# This program is free software; you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation; either version 2 of the License, or #
# (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program; if not, write to the #
# Free Software Foundation, Inc., #
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #
###########################################################################
#Skrypt do wyświetlania stanu konta orange w pakietach na kartę(ale łatwo go przerobić), zaprojektowany pod conky.
#Do uruchomienia skryptu wymagany jest Perl z obsługą SSLeay dla Debiana (i Debiano podobnych) sprawę załatwi
#apt-get install perl perl-modules libcrypt-ssleay-perl libnet-ssleay-perl
#Nie wiem jak to wygląda w innych distrach ale na pewno podobnie
#Zalecany wpis w .conkyrc to ${execpi 3600 sciezka_do_orange.pl}. W ten sposob wynik bedzie kolorowany i odswiezany co 1 godzine.
#Trzeba tez ustawic text_buffer_size 2048, domyslnie execpi przyjmuje tylko 256 znakow i dalej sie wysypuje
#Skrypt powoduje opoznienie startu conky. Mozna to ominac wrzucajac go do crontab, przekierowujac wyjscie do pliku i w conky tylko wyswietlic. Mozna tez to olac, bo raz na godzine moze sie opoznic :)
#Wyswietlany tekst jest na samym dole, chyba latwo go dopasowac.
#Ustaw login i hasło !!
$login = 'LOGIN';
$pass = 'HASŁO';
#Początek skryptu
#use warnings;
use HTTP::Request::Common;
use HTTP::Cookies;
use LWP::UserAgent;
use Crypt::SSLeay;
use File::Basename;
# Funkcja do debugowania, wyjście z programu z logowaniem do pliku
# Komunikat jest wypisany na stdout, do pliku zapisuje komunikat + kod źródłowy błędnej strony (o ile jest)
# param: komunikat_wyjscia, zapisz_do_loga
sub smf_is_wrong{
open(LOG, '>'.dirname($0).'/lastlog.txt');
if( exists($_[1]) ){
print LOG 'Error:'.$_[0]."\n".$_[1];
}
else{
print LOG $_[0];
}
close(LOG);
print $_[0];
exit;
}
$cookie = HTTP::Cookies->new( #automatyczne ciasteczko
file => 'cookie.txt',
autosave => 1,
);
$ua = LWP::UserAgent->new();
$ua->agent('Mozilla/5.0'); #wałek :)
$ua->cookie_jar($cookie);
#logowanie
$loginUrl = 'https://www.orange.pl/portal/map/map/signin?noredir=1&_DARGS=/gear/static/signInLoginBox.jsp';
$req = POST $loginUrl, [ #groznie to wyglada, tablica POST skopiowana z przegladarki
'_dyncharset'=>'UTF-8',
'/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.loginErrorURL'=>'http://www.orange.pl/portal/map/map/signin',
'_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.loginErrorURL'=>'+',
'/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.loginSuccessURL'=>'http://www.orange.pl/portal/map/map/your_account',
'_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.loginSuccessURL'=>'+',
'/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.redirectOriginUrl'=>'http://www.orange.pl/portal/map/map/your_account',
'_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.redirectOriginUrl'=>'+',
'/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.requestURL'=>'',
'_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.requestURL'=>'+',
'/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.value.login'=>$login,
'_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.value.login'=>'+',
'/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.value.password'=>$pass,
'_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.value.password'=>'+',
'/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.login.x'=>'55',
'/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.login.y'=>'11',
'_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.login'=>'+',
'_DARGS'=>'/gear/static/signInLoginBox.jsp'
];
push @{ $ua->requests_redirectable }, 'POST'; #zeby sie przekierowywalo w razie potrzeby (jest taka potrzeba)
$req->referer ('http://www.orange.pl/portal/map/map/signin'); #skad przyszlismy(oczywiscie z formularza logowania :)
$res = $ua->request($req);
if ( !($res->is_success) ){
smf_is_wrong( 'Problem z połączeniem do strony logowania' );
}
if ( $res->content !~ /witaj/ ){
smf_is_wrong( 'Problem z logowaniem', $res->content );
}
#pobieranie strony ze stanem pakietów
$req = GET 'https://www.orange.pl/portal/ecare/packages';
$wait = 0; #czy czekać
$try = 0; #bywają problemy z prawidlowym wczytaniem strony, więc 4 próby (wczytywanie danych tez jest traktowane jako próba)
do{
if( $wait ){ sleep 5; } #czekanie gdy dane sa wczytywane ajaxem, ustawiam 5 sek opoznienia i probuje jeszcze raz. Dane sa cachowane, wiec odswiezenie po zaladowaniu danych da od razu wynik w formie statycznej.
$res = $ua->request($req);
if( !$res->is_success ){
smf_is_wrong( 'Problem z połączeniem do strony ze stanem pakietów' );
}
if( $res->content !~ m/podstawowe/ && ($try++ > 3) ){ #tutaj bywaja wyzej wspomniane problemy z prawidlowym wczytaniem strony
smf_is_wrong( 'Brak informacji o pakietach', $res->content );
}else{ #są pakiety, sprawdzmy jeszcze date waznosci konta (do kiedy odbieranie i dzwonienie)
$packages=$res->content; #kod źródłowy strony z pakietami
$req = GET 'https://www.orange.pl/portal/ecare';
$res = $ua->request($req);
if( !$res->is_success ){
smf_is_wrong( 'Problem z połączeniem do strony z informaja o dacie waznosci konta (do kiedy odbieranie i dzwonienie)' );
}
}
}while( $wait = ($res->content =~ 'Twoje dane dane są właśnie wczytywane') ); #Czekanie i powtorka, gdy dane są ładowane.
#pobieranie daty ( troche to porypane w perlu :/ )
($sec,$min,$hour,$day,$month,$year) = (localtime(time))[0,1,2,3,4,5];
if( length(++$month) == 1 ){
$month = '0'.$month;
}
if( length($day) == 1 ){
$day = '0'.$day;
}
if( length($min) == 1 ){
$min = '0'.$min;
}
if( length($sec) == 1 ){
$sec = '0'.$sec;
}
$date = $day.'-'.$month.'-'.($year+1900).' '.$hour.':'.$min.':'.$sec; #data
#składanie treści z dostępnych danych
#w $packages jest kod źródlowy strony z pakietami, w $res->content kod źródłowy z data waznosi stanu konta
#$date zawiera aktualna date i czas (zeby wiedziec na ile aktualne sa wyswietlane dane), format mozna zmienic nad tymi komentarzami (patrz linijka z komentarzem data)
#standardowo wyświetlaja się tylko dostępne pakiety, reszta jest pomijana (czyli gdy mamy 0,00zł to nie pojawi się w ogóle informacja o pakiecie)
#w $1 jest data waznosci $2 ile to dni $3 stan pakietu, wyjatkiem jest data waznosci gdzie kolejne wyniki są w tablicy @exp_time
#${color} i {$color yellow} to kolory dla conky
#jeśli masz pakiety, które tu sa nieuwzglednione (inna taryfa czy coś) możesz zwyczajnie dopisac linijke analogicznie do istniejacych, mozesz tez mi wyslac taki kod na bender314@gmail.com zeby inni nie musieli sie meczyc.
print "Dostępne środki Orange ($date)";
if( $packages =~ /stan konta.*?(\d{1,4},\d{2})/s && ($1 !~ '0,00') ){
print "\n".'${color}Stan Konta: ${color gold}'.$1;
}
if( @exp_time = ($res->content =~ /(\d{2}\.\d{2}\.\d{4}) \((\d{1,3}) dni/g )){
print "\n".'${color}Wykonywanie połączeń do: ${color gold}'.@exp_time[0].'${color} (${color gold}'.@exp_time[1].'${color} dni)';
print "\n".'${color}Odbieranie połączeń do: ${color gold}'.@exp_time[2].'${color} (${color gold}'.@exp_time[3].'${color} dni)';
}
if( $packages =~ /Pakiet minut z POPGadane.*?(\d{2}\.\d{2}\.\d{4}) \((\d{1,3}) dni.*?(\d{1,3} min\. \d{1,2}s)/s && ($1 !~ '0 min\. 0 s') ){
print "\n".'${color}Pakiet minut z POPGadane: ${color gold}'.$3;
print "\n".'${color}Ważne do: ${color gold}'.$1.'${color} (${color gold}'.$2.' ${color}dni)';
}
if( $packages =~ /Grosz za SMS.*?(\d{2}\.\d{2}\.\d{4}) \((\d{1,3}) dni.*?(\d{1,4}) SMS/s && ( $1 != 0 ) ){
print "\n".'${color}Smsy po groszu: ${color gold}'.$3.' ${color}do: ${color gold}'.$1.'${color} (${color gold}'.$2.' ${color}dni)';
}
if( $packages =~ /środki promocyjne.*?(\d{2}\.\d{2}\.\d{4}) \((\d{1,3}) dni.*?(\d{1,4},\d{2}\ zł)/s && ($1 !~ '0,00') ){
print "\n".'${color}Środki promocyjne: ${color gold}'.$3;
print "\n".'${color}Ważne do: ${color gold}'.$1.'${color} (${color gold}'.$2.' ${color}dni)';
}
print "\n";
Aj, zapomniałem napisać, skrypt wymaga oczywiście zainstalowanego perla oraz 2 paczek
libcrypt-ssleay-perl
libnet-ssleay-perl
dla leniwych
Kod: Zaznacz cały
sudo apt-get install libcrypt-ssleay-perl libnet-ssleay-perl
jeśli nie ma tych paczek (podaje je z debiana) to wpisz w synaptiku
i poszukaj odpowiedników, pamiętam, zę nazywały się podobnie
P.S.
Skrypt działa tylko na prepaidy, do innych rodzajów kont trzeba przerobić filtrowanie treści ale ani ja ani kumpel nie mamy telefonu na abonament/mixa x)