Potrzebujesz pomocy z C, C++, perl, python, itp.
pmielcza
Posty: 7 Rejestracja: 30 marca 2010, 18:51
Post
autor: pmielcza » 14 kwietnia 2010, 14:18
Witam.
Poszukuję gotowego skryptu, który z pliku /var/log/cups/page_log wydobędzie dane i zapisze do innego pliku np. wydruki.txt w postaci
Kod: Zaznacz cały
User Jobs Pages
JUREK 39 101
hobbit 114 304
Printer Jobs Pages
Kyocera 121 127
PDFPrint 32 278
Znalazłem coś takiego w
internecie ale napisane w perlu, a ja chciałbym to samo (podobne) ale
w bashu .
Kod: Zaznacz cały
#!/usr/bin/perl
while (<>) {
($printer, $user, $jobsnumber, $date, $offset,
$pagenumber, $pages, $opc, $ip) = split(' ');
$PrinterPages{$printer} += $pages;
if (not $Jobs{$jobsnumber}) {$PrinterJobs{$printer} ++;}
$UserPages{$user}+= $pages;
if (not $Jobs{$jobsnumber}) {$UserJobs{$user} ++;}
$Jobs{$jobsnumber}++;
}
printf "%-15s %5s %8s\n", qw(User Jobs Pages);
foreach $user (sort keys %UserJobs) {
printf "%-15s %5d %8d\n",
$user, $UserJobs{$user}, $UserPages{$user};
}
print "\n";
printf "%-15s %5s %8s\n", qw(Printer Jobs Pages);
foreach $prn (sort keys %PrinterPages) {
printf "%-15s %5d %8d\n",
$prn, $PrinterJobs{$prn}, $PrinterPages{$prn};
}
Germanos
Posty: 11 Rejestracja: 27 maja 2010, 10:47
Post
autor: Germanos » 14 lipca 2010, 19:02
Chciałbym się dopisać do tematu. Również jak kolega wyżej, proszę o pomoc w wyciągnięciu informacji z page_log.
Bastian
Member
Posty: 1424 Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ
Post
autor: Bastian » 15 lipca 2010, 16:19
A może być awk? Jeśli tak to postaram się coś napisać w wolnej chwili.
PS. Awk jest domyślnie w każdym dystrybucji więc przenośność zagwarantowana, a skrypt będzie częścią basha.
Germanos
Posty: 11 Rejestracja: 27 maja 2010, 10:47
Post
autor: Germanos » 15 lipca 2010, 16:21
Pewnie, zawsze to jakiś krok do przodu
z góry dzięki.
Nadal jednak gdyby ktoś mógł to przetłumaczyć na basha byłoby bardzo miło.
lessmian2
Member
Posty: 1088 Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków
Post
autor: lessmian2 » 16 lipca 2010, 08:32
Bastian pisze: a skrypt będzie częścią basha
Że jak częścią basha, bo nie rozumiem?
Co Wy się tak uparliście na tego basha, skoro często w innych językach daną rzecz można zrobić łatwiej, szybciej i przyjemniej, a tu już macie gotowe rozwiązanie.
Bastian
Member
Posty: 1424 Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ
Post
autor: Bastian » 16 lipca 2010, 21:38
skrypt.sh
W tym sensie.
Dzisiaj może napiszę po robocie.
Wklej proszę Twojego page_log bo u mnie logowanie jest wyłączone i nie mam wzorca.
Germanos
Posty: 11 Rejestracja: 27 maja 2010, 10:47
Post
autor: Germanos » 06 listopada 2010, 14:47
Może to pomoże:
http://www.cups.org/documentation.php/r ... -conf.html (oczywiście trzeba wyszukać ctrl+f "page_log") i jeszcze jeśli chodzi o przykład page_logu to:
http://www.cups.org/documentation.php/d ... e_log.html
Dodane:
Wrzucam wycinek z page_log:
Kod: Zaznacz cały
Lexmark_C540n_Dyr root 1 [05/Nov/2010:19:21:40 +0100] 1 1 - localhost
Lexmark_C540n_Dyr root 1 [05/Nov/2010:19:23:51 +0100] 1 1 - localhost
Lexmark_E120N_P1BI root 2 [05/Nov/2010:19:50:03 +0100] 1 1 - localhost
Lexmark_E120N_P1BP root 3 [05/Nov/2010:19:50:09 +0100] 1 1 - localhost
Lexmark_X203n_P2P2 root 4 [05/Nov/2010:19:53:07 +0100] 1 1 - localhost
Może teraz komuś się uda.
Bastian
Member
Posty: 1424 Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ
Post
autor: Bastian » 18 stycznia 2011, 23:29
Aj, przez przypadek znalazłem ten wątek. Zupełnie zapomniałem, że miałem coś napisać.
Kod: Zaznacz cały
#!/bin/bash
PL="page_log"
ML="moj_log"
awk '{if(jid[$2]){
{if($3!= jid[$2]){
jcount[$2]++; pages[$2]++; jid[$2] = $3
}else {
pages[$2]++; jid[$2]= $3 }}
}else {
jid[$2] = $3
jcount[$2]= 1
pages[$2] = 1
}}
{if(pjid[$1]){
{if($3!= pjid[$1]){
pjcount[$1]++; ppages[$1]++; pjid[$1] = $3
}else {
ppages[$1]++; pjid[$1]= $3 }}
}else {
pjid[$1] = $3
pjcount[$1]= 1
ppages[$1] = 1
}}
END{
{print "User Jobs Pages"}
{for (u in jcount)
print u" "jcount[u]" "pages[u]}
{print "-------------------------"}
{print "Printer Jobs Pages"}
{for (p in pjcount)
print p" "pjcount[p]" "ppages[p]}
}' ${PL} > ${ML}
Pamiętać o prawach do czytania i zapisu dla
użytkownika co odpala ten skrypt. Miłego korzystania.
Germanos
Posty: 11 Rejestracja: 27 maja 2010, 10:47
Post
autor: Germanos » 19 stycznia 2011, 17:40
Także już zapomniałem, że prosiłem tutaj o pomoc w tej sprawie.
Dziękuję za pomoc.