Протоколирование заданий печати (ВыньХР/2003)

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Urgor
лейтенант
Сообщения: 663
Зарегистрирован: 2006-03-14 16:30:18
Откуда: Гилея (СПб)
Контактная информация:

Протоколирование заданий печати (ВыньХР/2003)

Непрочитанное сообщение Urgor » 2007-05-03 14:20:24

Приперло тут руководству знать кто куда и сколько печатал.... Вариант собрать все принтеры в одну комнату и поставить жандарма почему-то не вызвал энтузиазма :) Пришлось искать другие решения... Поглядев сторонние софтины пришел к выводу что они не обладают нужной гибкостью :( Прикинув создал табличку:

Код: Выделить всё

CREATE TABLE `printers` (
  `rowid` int(11) NOT NULL auto_increment,
  `pname` char(20) default NULL,
  `puser` char(15) default NULL,
  `mname` char(15) default NULL,
  `document` char(80) default NULL,
  `pages` int(2) default '0',
  `jobid` int(4) default '0',
  `ptime` datetime default NULL,
  `stat` int(2) default NULL,
  PRIMARY KEY  (`rowid`),
  UNIQUE KEY `ux_jobid` (`jobid`,`ptime`,`pname`),
) ENGINE=MyISAM;
И склепал скриптик для выборки данных и засылки всем желающим на почту: (это за предыдущий день... думаю переписать чтоб за месяц/год/век генерило труда не составит :) )

Код: Выделить всё

/root/>cat print-daily.pl
#!/usr/bin/perl -w

# MySQL - хост где БД
$db_host = 'localhost';
# MySQL юзер
$db_user = 'printlogger';
# MySQL пароль
$db_password = 'printlogger';
# MySQL база данных
$db_database = 'printer';
# подрубаем модуль для работы с MySQL
use DBI;

$admemail="admin\@mydomain.ru";
$RobotName="Stat robot";
$RobotAddr="no-reply\@mydomain.ru";
my @monthstr = ('января','февраля','марта','апреля',
                'мая','июня','июля','августа',
                'сентября','октября','ноября','декабря');

sub SendEMail {
    open (SENDMAIL, "|/usr/sbin/sendmail -t") or die "sendmail not ready";
    print SENDMAIL "From: $RobotName <$RobotAddr>\n";
    print SENDMAIL "To: $_[0]\n";
    print SENDMAIL "Reply-To: Admin <$admemail>\n";
    print SENDMAIL "Content-Type: text/plain; charset=win-1251\n";
    print SENDMAIL "Subject: $_[1]\n\n";
    print SENDMAIL "$_[2]";
    close (SENDMAIL) or warn "sendmail didn`t close nicely";
  };

my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst)=localtime(time);
$year=$year + 1900;
++$month;
if ($month < 10) {$month = '0' . $month};
if ($mday  < 10) {$mday  = '0' . $mday};

my $dsn = "DBI:mysql:database=$db_database;host=$db_host";
my $dbh = DBI->connect($dsn, $db_user, $db_password);
  $sql = "select pname, sum(pages) as pages from printers where ptime like '$year-$month-$mday%' group by pname order by pages;";
  $body="Отпечатано\tПринтер\n";
  my $pages = 0;
  my $sth = $dbh->prepare($sql);
  $sth->execute();
  while (@tmp = $sth->fetchrow_array()) {
        ($pname, $pages) = @tmp;
    $body=$body . "${pages}\t\t${pname}\n";
  }
  $sth->finish();

  $subj = 'Отчет по отпечатанному за '. $mday .' ' . $monthstr[$month - 1] . ' '. $year . ' года';
  $msg = $subj . "\n\n" . $body;
  SendEMail('admin@mydomain.ru', $subj, $msg);
  SendEMail('bigboss@mydomain.ru', $subj, $msg);
1;
Сама прога лежит здесь
О конфиге:
После решетки `#` можно писать что угодно, а вот в присвоении пробелы не переваривает. Потом добавлю вызовы trim(), хотя задача стояла не в написании парсера конфига :)
Установка осуществляется:
1. Распаковать куда-нибудь
2. Отредактировать конфиг (если поменяли название проги меняйте и имя конфига)
3. Запускаете printlogger.exe -install чтоб прописалось в список сервисов и стартовало при старте машины автоматом. Соответственно printlogger.exe -deinstall убирает из сервисов.
4. Зайти в остнастку службы и запустить сервис PrintJobLogger
Гм. Вроде все :)
Власть в руках у чужаков, и ты им платишь дань...

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Urgor
лейтенант
Сообщения: 663
Зарегистрирован: 2006-03-14 16:30:18
Откуда: Гилея (СПб)
Контактная информация:

Непрочитанное сообщение Urgor » 2007-05-03 14:41:34

Да, совсем забыл: надо докинуть в папку с прогой libmySQL.dll той версии что у вас сервер. Берется это чудо на http://www.mysql.org
Власть в руках у чужаков, и ты им платишь дань...

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Непрочитанное сообщение alex3 » 2007-05-03 15:29:01

мож в "скрипты, написанные на коленках"?
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

Аватара пользователя
Sova
старшина
Сообщения: 444
Зарегистрирован: 2006-09-13 14:10:59
Откуда: Цхинвал-Москва
Контактная информация:

Непрочитанное сообщение Sova » 2007-05-03 20:33:37

alex3 писал(а):мож в "скрипты, написанные на коленках"?
Туда его - вещь нужная

Happy_demon
сержант
Сообщения: 194
Зарегистрирован: 2006-08-16 16:33:55
Откуда: Санкт-Петербург

Непрочитанное сообщение Happy_demon » 2007-05-04 7:48:51

в мускуле не силен. создаю таблицу. если через пхпадмин, то

Код: Выделить всё

Ошибка
SQL-запрос: 

CREATE TABLE `printers` (

`rowid` int( 11 ) NOT NULL AUTO_INCREMENT ,
`pname` char( 20 ) default NULL ,
`puser` char( 15 ) default NULL ,
`mname` char( 15 ) default NULL ,
`document` char( 80 ) default NULL ,
`pages` int( 2 ) default '0',
`jobid` int( 4 ) default '0',
`ptime` datetime default NULL ,
`stat` int( 2 ) default NULL ,
PRIMARY KEY ( `rowid` ) ,
UNIQUE KEY `ux_jobid` ( `jobid` , `ptime` , `pname` ) ,
) ENGINE = MYISAM 

Ответ MySQL:  

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ENGINE=MyISAM' at line 13 
через консоль тоже

Код: Выделить всё

[root@bc ~]# mysql -u root -p printer < printers.sql
Enter password:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 13
не подскажете, где искать?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35145
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-05-04 7:54:22

Код: Выделить всё

UNIQUE KEY `ux_jobid` ( `jobid` , `ptime` , `pname` ) , 
запятой в конце строки не должно быть.
и оно явно на это ругается.
Убей их всех! Бог потом рассортирует...

Happy_demon
сержант
Сообщения: 194
Зарегистрирован: 2006-08-16 16:33:55
Откуда: Санкт-Петербург

Непрочитанное сообщение Happy_demon » 2007-05-04 8:06:28

вот честно, хотел свое сообщение отредактировать или удалить-сам допер (тут в мускуле разбираться не нужно, тут с орфографией как и в любом языке надо разобраться), а мне уже ответили. Прияяятно. Спасибо.

Happy_demon
сержант
Сообщения: 194
Зарегистрирован: 2006-08-16 16:33:55
Откуда: Санкт-Петербург

Непрочитанное сообщение Happy_demon » 2007-05-04 9:57:51

ну вот уже почти. прога архи нужная. вот что пишит лог

Код: Выделить всё

2007-05-04 10:27:42 2003 - Can't connect to MySQL server on '192.168.25.2' (10061)
2007-05-04 10:27:42 Server: 
2007-05-04 10:27:42 Client: 4.1.21
2007-05-04 10:27:42 Protocol: 0
2007-05-04 10:32:41 Ошибка при пинге: 2006 - MySQL server has gone away
2007-05-04 10:37:41 Ошибка при пинге: 2006 - MySQL server has gone away
2007-05-04 10:42:41 Ошибка при пинге: 2006 - MySQL server has gone away
2007-05-04 10:47:41 Ошибка при пинге: 2006 - MySQL server has gone away
ну сначала- там просто пользователь был с локалхоста, исправил. насчет dll. на серваке

Код: Выделить всё

mysql  Ver 14.7 Distrib 4.1.22, for portbld-freebsd6.1 (i386) using  5.0
а на сайте мускула нашел под винду только 4.1.21, может в этом проблема?
конфиг вроде исправил по минимуму

Код: Выделить всё

# Файл логов
log_file=c:\temp\printers.log
# Хост с мускулом
Host=192.168.25.2
# Порт слушаемый мускулом
Port=3306
# База куда будем гадить
DataBase=printer
# Юзер, которому можно гадить
# (нужен только insert)
User_Name=printeradmin
# Пароль юзера
Password=pr1nter
единственное, что этот юзер может в этой базе все, не только инсерт, может еще и в этом проблема?

Аватара пользователя
Urgor
лейтенант
Сообщения: 663
Зарегистрирован: 2006-03-14 16:30:18
Откуда: Гилея (СПб)
Контактная информация:

Непрочитанное сообщение Urgor » 2007-05-04 10:06:31

фарвол? с твоей машины соединение на 192.168.25.2:3306 доступно?
Власть в руках у чужаков, и ты им платишь дань...

Happy_demon
сержант
Сообщения: 194
Зарегистрирован: 2006-08-16 16:33:55
Откуда: Санкт-Петербург

Непрочитанное сообщение Happy_demon » 2007-05-04 10:41:45

нет, файера не было. на серваке просто было

Код: Выделить всё

[root@bc /usr/local/etc/squid]# cat /etc/my.cnf | grep bind
bind-address=127.0.0.1
закаментировал эту строку-могу подключиться по телнету
Z:\>telnet 192.168.25.2 3306 с виндовой машины
теперь в логах

Код: Выделить всё

2007-05-04 11:27:12 Stopping service.....
2007-05-04 11:27:13 Connected to MySQL server at 192.168.25.2 via TCP/IP
2007-05-04 11:27:13 Server: 4.1.22-log
2007-05-04 11:27:13 Client: 4.1.21
2007-05-04 11:27:13 Protocol: 10
но в базе - пусто. я пару страниц отпечатал, тишина...

Аватара пользователя
Urgor
лейтенант
Сообщения: 663
Зарегистрирован: 2006-03-14 16:30:18
Откуда: Гилея (СПб)
Контактная информация:

Непрочитанное сообщение Urgor » 2007-05-04 10:53:16

но в базе - пусто. я пару страниц отпечатал, тишина...
На локальный принтер печатаешь или сетевой? Прога пасет только ЛОКАЛЬНЫЕ, т.е. те которые заведены как "локальный принтер, подключенный к этому компухтеру". Те же которые ссылаются на шары с другой машины не будет брать...
Власть в руках у чужаков, и ты им платишь дань...

Happy_demon
сержант
Сообщения: 194
Зарегистрирован: 2006-08-16 16:33:55
Откуда: Санкт-Петербург

Непрочитанное сообщение Happy_demon » 2007-05-04 11:26:04

действительно, поставил доменный принтер как локальный, только с айпи портом- все забегало, заплясало!!!! сегодня поставлю на сам сервак. письма мне постольку-поскольку, а веб морду простенькую я обязательно замутю.
СПАСИБО ЗА ЭТУ ПРОГРАММУ!

Аватара пользователя
Urgor
лейтенант
Сообщения: 663
Зарегистрирован: 2006-03-14 16:30:18
Откуда: Гилея (СПб)
Контактная информация:

Непрочитанное сообщение Urgor » 2007-06-08 9:58:18

Кто скачал -- обновитесь. Поправил досадный баг с утечкой памяти...
Власть в руках у чужаков, и ты им платишь дань...