Annotation of wpscripts/zlist/zlist, Revision 1.1.1.1
1.1 yason 1: #!/usr/bin/perl
2: # $Id: zlist.pl,v 1.3 2005/12/12 12:57:05 init Exp $
3: use DBI;
4: use Term::ANSIColor qw(:constants);
5: use Time::HiRes qw(gettimeofday tv_interval);
6:
7: $| = 1;
8:
9: # database
10: our $server = "MSSQL";
11: our $user = "it_men";
12: our $pass = "itmen712";
13: our $dsn = "DBI:Sybase:server=$server";
14: our $sth;
15:
16: # response handlers
17: our @numcard;
18: our @time;
19: our @pri;
20: our @path;
21: our @size;
22: our @tx_count;
23:
24: my $i; # counter
25: my $total = 0; # total files
26:
27: ###
28: my $time1 = [gettimeofday];
29:
30: # connect to database server
31: db_connect();
32:
33: # select database
34: db_select();
35:
36: # fetch zayavki
37: db_fetch(0);
38:
39: my $time2 = [gettimeofday];
40:
41: print GREEN "Время отклика от базы данных: " . tv_interval($time1, $time2) . " секунд\n". RESET;
42:
43: if( ! -e "/var/run/ztransfer.lock")
44: {
45: print YELLOW "ztransfer сейчас не запущен\n" . RESET;
46: }
47: else
48: {
49: if( -e "/var/log/ztransfer/FILE" && -e "/var/log/ztransfer/ACTION")
50: {
51: open(CURRENT, "/var/log/ztransfer/FILE");
52: my $file = <CURRENT>;
53: close(CURRENT);
54:
55: open(CURRENT, "/var/log/ztransfer/ACTION");
56: my $action = <CURRENT>;
57: close(CURRENT);
58:
59:
60: print "DEBUG: $file $action\n";
61:
62: print YELLOW "ztransfer выполняется [ " . ($action eq 'rar' ? "сжимается " : "копируется ") . "$file ]\n" . RESET;
63: }
64: else
65: {
66: print YELLOW "ztransfer выполняется\n" . RESET;
67: }
68: }
69:
70: # print out zayavki info
71: print BOLD WHITE ON_BLUE "Очередь заявок". RESET . " ($#numcard штук) :\n";
72: $i = 0;
73: while( ($numcard[$i]) )
74: {
75: print "$numcard[$i]\t[ оформлено $time[$i], приоритет=$pri[$i], файл=$path[$i] (размер=$size[$i]), счётчик передач=$tx_count[$i] ]\n";
76: $i++;
77: $total++;
78: }
79: print "\n";
80:
81:
82: # fetch jpegs
83: db_fetch(1);
84:
85: # print "****** jpegs ($#numcard) ******\n";
86: print BOLD WHITE ON_BLUE "Очередь джепегов". RESET . " ($#numcard штук) :\n";
87: $i = 0;
88: while( ($numcard[$i]) )
89: {
90: print "$numcard[$i]\t[ оформлено $time[$i], приоритет=$pri[$i], файл=$path[$i] (размер=$size[$i]) ]\n";
91: $i++;
92: $total++;
93: }
94: print "\n";
95:
96:
97: # fetch probas
98: db_fetch(2);
99:
100: # print "****** probas ($#numcard) ******\n";
101: print BOLD WHITE ON_BLUE "Очередь цветопроб". RESET . " ($#numcard штук) :\n";
102: $i = 0;
103: while( ($numcard[$i]) )
104: {
105: print "$numcard[$i]\t[ оформлено $time[$i], приоритет=$pri[$i], файл=$path[$i] (размер=$size[$i]) ]\n";
106: $i++;
107: $total++;
108: }
109: print "\n";
110:
111:
112: # print summary information
113: print BOLD WHITE . "Всего: " . RESET . "$total файлов в очереди на копирование в Заборье.\n";
114:
115: # close connection
116: db_disconnect();
117:
118:
119: ### database functions
120:
121: sub db_connect()
122: {
123: $dbh = DBI->connect($dsn, $user, $pass) or die "unable to connect to server $DBI::errstr";
124: }
125:
126:
127: sub db_select()
128: {
129: $dbh->do("use Manager");
130: }
131:
132:
133: sub db_fetch($)
134: {
135: my $type_file = shift;
136: my $i = 0;
137: my $searchpath;
138:
139: $sth = $dbh->prepare ("SELECT NumCard,Path,time_file,file_priority,tx_count FROM upload_files WHERE Status=0 AND type_file=$type_file") or die "SQL prepare failed\n";
140: $sth->execute( ) or die "unable to execute query $query error $DBI::errstr";
141:
142: # zero elements
143: $#numcard = $#path = $#time = $#pri = $#tx_count = 0;
144:
145: while( ($numcard[$i], $path[$i], $time[$i], $pri[$i], $tx_count[$i]) = $sth->fetchrow_array())
146: {
147: # truncate spaces
148: do
149: {
150: chop($path[$i]);
151: }
152: while( index($path[$i], ' ', 0) != -1 );
153:
154: $searchpath = substr($path[$i], 23);
155:
156: # hardcoded
157: $path[$i] = substr($path[$i], 30) if ($type_file == 0);
158: $path[$i] = substr($path[$i], 34) if ($type_file == 1);
159: $path[$i] = substr($path[$i], 34) if ($type_file == 2);
160:
161: # make local file path
162: $searchpath =~ tr/\\/\//; $searchpath = '/WIDEPRINT/' . $searchpath;
163:
164: # follow symlink to achieve real path
165: chomp( $_ = `dirname $searchpath | xargs /usr/bin/readlink` ); chomp( $searchpath = $_ . '/' . `basename $searchpath` );
166:
167: # finally, get file size
168: $size[$i] = -s $searchpath;
169: $size[$i] = ($size[$i] > 1048576 ? int($size[$i] / 1024 / 1024) . " MB" : int($size[$i] / 1024) . " KB");
170:
171: # this should work fine
172: $size[$i] = WHITE ON_RED . "файл не найден" . RESET if (! -e $searchpath);
173: $i++;
174: }
175:
176: $sth->finish();
177:
178: }
179:
180:
181: sub db_disconnect()
182: {
183: $dbh->disconnect();
184: }
CVSweb