2010-10-15 2 views
1

Извините за мой английский!Невозможно проверить статус статуса кубки в Debian Squeeze

Я использую сжатие Debian и для присвоения, я создал 2 виртуальных принтера для копий pdf. Оба работают очень хорошо. Для проверки команды администратора; Я пытаюсь отключить один из принтеров и перенести его файл очереди на второй. Я могу сделать это легко.

Теперь я хочу написать сценарий bash, который будет проверять состояние принтера. Поэтому, если принтер отключен, он просто выполняет сценарий «move». Есть ли способ узнать статус чашечного принтера и использовать эту информацию в сценарии?

Например, команда/функция, которая может возвращать «O», это принтер чашек, и «1», если нет.

Спасибо за вашу помощь,

+0

Вы пытались использовать команду lpstat? –

ответ

1

Как уже упоминалось Андрей, вы должны быть в состоянии использовать lpstat команду справиться с этим. В частности, попробуйте разбор вывода:

lpstat -p 

При нормальных обстоятельствах, вы получите что-то вроде:

printer HP_DESKJET_940C is idle. enabled since Mon 09 Aug 2010 10:42:20 PM CDT 
printer HP_LaserJet_1012 is idle. enabled since Mon 09 Aug 2010 10:36:26 PM CDT 

Когда что-то не так с одним из принтеров, то «простой» текст изменится , Я рекомендую поиграть с состояниями ваших виртуальных принтеров, пока вы не получите нужный результат. Для вашего Баш скрипт, может быть, вы хотите что-то вроде этого:

lpstat -p | grep -E 'HP_DESKJET.*\(idle|printing\)' >/dev/null || false 

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