Музыкальная шкатулка подручными средствами Andrushock Xakep, номер #062, стр. 062-110-3 Далее в "очередь печати" ставим на воспроизведение первый музыкальный файл, передав программе lpr в качестве аргумента имя виртуального принтера: $ lpr -Pmp3 test.mp3 $ lpq -Pmp3 mp3 is ready and printing Rank Owner Job Files Total Size active andrushock 1 test.mp3 7671624 bytes Удаление поставленных в очередь заданий производится с помощью lprm. Если аргументом выступает идентификатор (берется из вывода lpq, столбец Job), то будет удалено соответствующее задание; если дефис, то все задания пользователя (в случае с суперпользователем - абсолютно все задания); если lprm вызван без аргумента, то текущее задание. $ lprm -Pmp3 dfA001 dequeued сfA001 dequeued По умолчанию lpr/lpq/lprm используют устройство печати lp. Чтобы постоянно не вводить после имени программы "-Pmp3", через переменную окружения PRINTER можно задать имя дополнительного принтера: $ export PRINTER=mp3 Обнуляется значение ранее объявленной переменной командой unset: $ unset PRINTER Клиент всегда прав Наверное, ни для кого не секрет, что возможность совместного использования ресурсов является одной из сильных сторон *nix-систем, причем общим ресурсом может равнозначно выступать как файл, так и принтер. Так что попробуем разрешить другим компьютерам по сети отправлять музыкальные задания на нашу шкатулку. Для этого в файле /etc/hosts.lpd нужно определить права доступа к локальному демону печати и немного перенастроить /etc/printcap у клиентов. На www.redhat.com/ в одном из мануалов, посвященных печати в Linux, настоятельно рекомендуется в /etc/hosts.lpd вместо IP-адресов прописывать полные имена хостов, от которых требуется получать задания на печать. Ок, ок, ок. Разработчики дурного не посоветуют, поэтому сначала занесем алиасы клиентов в /etc/hosts (если в сети нет DNS-сервера), и только потом займемся разграничением доступа: # vi /etc/hosts 192.168.1.1 midian.home.net 192.168.1.2 andrushock.home.net # vi /etc/hosts.lpd midian.home.net На стороне клиента достаточно создать лог-файл для журналирования событий, учетным файлом можно пренебречь: # cp /dev/null /var/log/audio.err Клиентский файл /etc/printcap немного отличается от серверного. Кроме пустой директивы lp, каталога сброса и журнального файла, он будет содержать две новые переменные: в записи rm (:rm=192.168.1.2:) мы определим IP-адрес сервера печати, а с помощью rp (:rp=mp3:) укажем удаленный принтер. # vi /etc/printcap mp3|remote audio spooler:\ lp=:rm=192.168.1.2:rp=mp3:sd=/var/spool/lpd:lf=/var/log/audio.err: На клиенте также необходимо загрузить демон системы печати: # lpd Все приготовления сделаны, теперь можно переходить непосредственно к тестированию: $ lpr -Pmp3 /home/ftp/temp/hope.mp3 $ lpq -Pmp3 mp3 is ready and printing Rank Owner Job Files Total Size active andrushock 2 /home/ftp/temp/hope.mp3 9690608 bytes 1st andrushock 3 Bitter_Piece.mp3 6540519 bytes |