домовой
спустя год после внедрения сетевых принтеров на склады произошло ЭТО. Внезапно поломался принтер. Об этом узнали всего лишь 30 документов спустя ( что очень быстро. даже суток не прошло. ).
пока принтер меняли и существовала очередь печати полез разбираться можно ли удаленно узнать есть ли в очереди печати конкретного принтера задания.
оказалось что можно и даже просто
всего лишь
lpq -P имя принтера -h имя хоста где cups -U имя пользователя от которого обратиться
первые две строки ответа заголовок.
начиная с третьей строки задания в порядке добавления в очередь.
В итоге после 10 минут обсуждения родился план.
0. получить первое задание
1. поискать текст первого задания в файле XXXX
если найден
то
сообщать "ахтунг враги близко. печать не идет"
иначе
сообщать "в багдаде все спокойно"
2. записать первое задание куда нибудь в файл XXXX
ну и функция проверяющая состояние принтера выглядит примерно так
todo надо переименовать файл куда пишется первая задача принтера
check_printer()
{
if [ ! -e /tmp/check_printer ]
then
mkdir /tmp/check_printer
fi
cnt=`lpq -h $1 -U $2 -P $3|wc -l`
if (( $cnt > 2 )) # "очередь не пуста"
then
printer_first_task=`lpq -h $1 -U $2 -P $3|head -n 3 |tail -n 1`
if [ -f /tmp/check_printer/$3.txt ]
then
if grep "$printer_first_task" /tmp/check_printer/$3.txt >>/dev/null
then
echo "очередь не движется "
exit 1
else
echo "$printer_first_task" > /tmp/check_printer/$3.txt
# echo "Очередь движется"
exit 0
fi
else
echo "$printer_first_task" > /tmp/check_printer/$3.txt
fi
else
rm -f /tmp/check_printer/$3.txt
# echo "очередь пуста"
exit 0
fi
}
пока принтер меняли и существовала очередь печати полез разбираться можно ли удаленно узнать есть ли в очереди печати конкретного принтера задания.
оказалось что можно и даже просто
всего лишь
lpq -P имя принтера -h имя хоста где cups -U имя пользователя от которого обратиться
первые две строки ответа заголовок.
начиная с третьей строки задания в порядке добавления в очередь.
В итоге после 10 минут обсуждения родился план.
0. получить первое задание
1. поискать текст первого задания в файле XXXX
если найден
то
сообщать "ахтунг враги близко. печать не идет"
иначе
сообщать "в багдаде все спокойно"
2. записать первое задание куда нибудь в файл XXXX
ну и функция проверяющая состояние принтера выглядит примерно так
todo надо переименовать файл куда пишется первая задача принтера
check_printer()
{
if [ ! -e /tmp/check_printer ]
then
mkdir /tmp/check_printer
fi
cnt=`lpq -h $1 -U $2 -P $3|wc -l`
if (( $cnt > 2 )) # "очередь не пуста"
then
printer_first_task=`lpq -h $1 -U $2 -P $3|head -n 3 |tail -n 1`
if [ -f /tmp/check_printer/$3.txt ]
then
if grep "$printer_first_task" /tmp/check_printer/$3.txt >>/dev/null
then
echo "очередь не движется "
exit 1
else
echo "$printer_first_task" > /tmp/check_printer/$3.txt
# echo "Очередь движется"
exit 0
fi
else
echo "$printer_first_task" > /tmp/check_printer/$3.txt
fi
else
rm -f /tmp/check_printer/$3.txt
# echo "очередь пуста"
exit 0
fi
}