LINUX.ORG.RU

Как отправить файл в /dev для печати на принтере

 


0

1

Здравствуйте! Я в процессе изучения специальных файлов устройств в /dev, и у меня возникла сложность. Нашел специальный файл принтера следующим образом:

$ lsusb
Вывод:
	>Bus 001 Device 008: ID 0482:0493 Kyocera Corp.
Перехожу к директорию /dev/bus/usb/001
и нахожу там специальный файл 008. Чтобы убедиться в том, что это действительно файл моего принтера, ввожу:
	

$ udevadm info --query=all --name=/dev/bus/usb/001/008
В выводе вижу:
	>ID_MODEL=FS-1040
	>ID_VENDOR=Kyocera
	>ID_MODEL_ID=0493
	>ID_VENDOR_ID=0482
и т.д. Я так понимаю - это и есть спец. файл моего принтера.
Теперь хочу передать в этот файл pdf-файл, чтобы принтер его распечатал:
	
$ cat ~/text.pdf > /dev/bus/usb/001/008
Вывод: 
	cat: ошибка записи: Недопустимый аргумент
Скажите пожалуйста, что я делаю не так?

Это файл generic usb устройства, он не поддерживает тупой записи в него чего попало. Рассказы про «всё файл» на самом деле не имеют отношения к реальности.

anonymous
()
Ответ на: комментарий от anonymous

Это файл generic usb устройства

Рассказы про «всё файл» на самом деле не имеют отношения к реальности

Господь, его уже не спасти ― ЖГИ!

anonymous
()
Ответ на: комментарий от anonymous

Дурачок, юниксовой работы как с обычным файлом оно не поддерживает, используются ioctl().

anonymous
()
Ответ на: комментарий от anonymous

Получается, передать спец. файлу принтера pdf для печати нельзя вообще? Или есть другой файл для этого принтера в /dev?

RiD_32
() автор топика
Ответ на: комментарий от anonymous

Да про Cups я само собой знаю. Просто задался таким вопросом, а знаний маловато.

RiD_32
() автор топика

Помню времена, когда в дистрибутивах были lpd/lpr, а у меня был LPT принтер. Собственно, у меня и сейчас есть уже другой принтер, который поддерживает LPT.

В те годы оно работало как-то так:

lpr -P printername test.pdf
lpd принимал файл, и в соответствии с драйвером отправлял на LPT порт.

Теперь вместо LPT USB, а вместо lpd - CUPS.

Проблема не в файлах. Проблема в проприетарном железе, протоколы которого засекречены. Но, частично реверсинжинирятся в драйвера.

saahriktu ★★★★★
()
Ответ на: комментарий от anonymous

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

Юниксовая работа, используется ioctl… и что? Ты писал по поводу того, что это нарушает «все есть файл», но на самом деле нихера это ничего не нарушает.

anonymous
()
Ответ на: комментарий от saahriktu

Помню времена, когда в дистрибутивах были lpd/lpr

Это не очень звучит, учитывая что lpr никуда не делся (и я думаю не денется), а lp вообще задокументирован в POSIX, правда и то и другое печатает через cups.

┌ home :: ~ :: ls
└ d_a % rpm -qf $(type -p lpr)
cups-client-1.6.3-22.el7.x86_64

И я думаю lp или lpr бы даже невозбранно напечатали мне что-нибудь на принтере по умолчанию, будь у меня таковой. Но можно завтра проверить на работке.

d_a ★★★★★
()
Ответ на: комментарий от anonymous

Не реализованы очевидные практические применения — адепты концепции отправляются вместе с ней на парашу, заниматься демагогией друг с дружкой.

anonymous
()

modinfo usblp

insmod usblp

apt install cups

lpr -o raw filename

sova ★★
()
Последнее исправление: sova (всего исправлений: 1)
Ответ на: комментарий от anonymous

Кому очевидные, болезный. Концепция все есть файл не обещает, что во все файлы можно будет писать, и эта запись будет выполнять именно действие X, которое тебя нужно.

Может еще в бинарь захочешь записать echo run > /path/to/bin, чтобы у тебя это выполнило функцию запуска? Ну а что, ты же так видишь! А если бинарь не запустится, то это нарушение концепции «все есть файл».

anonymous
()
Ответ на: комментарий от anonymous

Именно, вообще ничего практического ваша концепция не обещает, те является подвидом религии.

anonymous
()

Ты бы ещё docx-файл на него отправил бы и удивлялся — а чо это он не документ печатает?

berrywizard ★★★★★
()
Ответ на: комментарий от futurama

Так никто не спорит что более древняя. Но, те времена я не застал. А LPRng застал.

saahriktu ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.