71 lines
2.3 KiB
Bash
Executable File
71 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# Скрипт для сброса подвисших задач печати HP принтера на macOS
|
||
|
||
set -e
|
||
|
||
echo "🔍 Поиск HP принтеров..."
|
||
|
||
# Найти все HP принтеры
|
||
HP_PRINTERS=$(lpstat -p 2>/dev/null | grep -i "hp" | awk '{print $2}' || true)
|
||
|
||
if [ -z "$HP_PRINTERS" ]; then
|
||
echo "❌ HP принтеры не найдены в системе"
|
||
echo ""
|
||
echo "Доступные принтеры:"
|
||
lpstat -p 2>/dev/null | awk '{print " - " $2}' || echo " (нет принтеров)"
|
||
exit 1
|
||
fi
|
||
|
||
echo "✅ Найдены HP принтеры:"
|
||
echo "$HP_PRINTERS" | while read printer; do
|
||
echo " - $printer"
|
||
done
|
||
|
||
echo ""
|
||
echo "📋 Проверка задач печати..."
|
||
|
||
# Для каждого HP принтера
|
||
echo "$HP_PRINTERS" | while read printer; do
|
||
echo ""
|
||
echo "🖨️ Обработка принтера: $printer"
|
||
|
||
# Проверить задачи
|
||
JOBS=$(lpstat -o "$printer" 2>/dev/null | awk '{print $1}' | cut -d- -f1 | sort -u || true)
|
||
|
||
if [ -z "$JOBS" ]; then
|
||
echo " ✅ Нет задач в очереди"
|
||
else
|
||
JOB_COUNT=$(echo "$JOBS" | wc -l | tr -d ' ')
|
||
echo " ⚠️ Найдено задач: $JOB_COUNT"
|
||
|
||
# Отменить все задачи для этого принтера
|
||
echo " 🗑️ Отмена всех задач..."
|
||
cancel -a "$printer" 2>/dev/null || true
|
||
|
||
# Отменить задачи по ID
|
||
echo "$JOBS" | while read job_id; do
|
||
if [ ! -z "$job_id" ]; then
|
||
cancel "$job_id" 2>/dev/null || true
|
||
fi
|
||
done
|
||
|
||
echo " ✅ Задачи отменены"
|
||
fi
|
||
|
||
# Сбросить состояние принтера
|
||
echo " 🔄 Сброс состояния принтера..."
|
||
cupsenable "$printer" 2>/dev/null || true
|
||
cupsaccept "$printer" 2>/dev/null || true
|
||
lpadmin -p "$printer" -o printer-is-accepting-jobs=true 2>/dev/null || true
|
||
|
||
echo " ✅ Принтер готов к работе"
|
||
done
|
||
|
||
echo ""
|
||
echo "✅ Готово! Все подвисшие задачи HP принтеров сброшены"
|
||
echo ""
|
||
echo "📊 Текущий статус:"
|
||
lpstat -p 2>/dev/null | grep -i "hp" || echo " (нет HP принтеров)"
|
||
|