#!/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 принтеров)"