Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #62, ФЕВРАЛЬ 2004 г.

Музыкальная шкатулка подручными средствами

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

Назад на стр. 062-110-2  Содержание  Вперед на стр. 062-110-4