Skrypt Bash do automatycznego monitorowania drukarek w CUPS i powiadamiania e-mailem

Skrypt Bash do automatycznego monitorowania drukarek w CUPS i powiadamiania e-mailem

Poniżej znajdziesz skrypt w Bashu, który pobiera listę drukarek z serwera CUPS, sprawdza ich status, a następnie wysyła powiadomienie e-mailem w przypadku wykrycia błędu lub braku odpowiedzi. Zakładam, że masz zainstalowany klient CUPS (cups-client) na swoim systemie.

Skrypt (monitoruj_drukarki.sh):

#!/bin/bash

# Adres serwera CUPS
SERWER_CUPS="localhost"

# Adres e-mail, na który zostanie wysłane powiadomienie
ADRES_EMAIL="twoj@email.com"

# Godziny, w których skrypt ma działać (od 8:00 do 16:59)
CZAS_ROZPOCZECIA=8
CZAS_ZAKONCZENIA=16

# Pobieranie aktualnej godziny
AKTUALNA_GODZINA=$(date +%H)

# Sprawdzanie, czy aktualna godzina mieści się w określonym przedziale
if [[ "$AKTUALNA_GODZINA" -ge "$CZAS_ROZPOCZECIA" && "$AKTUALNA_GODZINA" -le "$CZAS_ZAKONCZENIA" ]]; then
  # Pobieranie listy drukarek z serwera CUPS
  LISTA_DRUKAREK=$(lpstat -a | awk '{print $1}')

  # Iteracja przez każdą drukarkę
  for DRUKARKA in $LISTA_DRUKAREK; do
    # Sprawdzanie statusu drukarki
    STATUS=$(lpstat -p "$DRUKARKA" | awk '{print $2}')

    # Sprawdzanie, czy status to błąd lub nieodpowiedź
    if [ "$STATUS" != "idle" ]; then
      # Wysyłanie powiadomienia e-mailem
      TEMAT="Powiadomienie o błędzie drukarki: $DRUKARKA"
      TRESC="Drukarka $DRUKARKA ma status $STATUS. Wymaga uwagi."
      echo "$TRESC" | mail -s "$TEMAT" "$ADRES_EMAIL"
    fi
  done
fi

Po utworzeniu skryptu, nadaj mu prawa do wykonania:

chmod +x monitoruj_drukarki.sh

Następnie dodaj zadanie do crontab w celu uruchamiania skryptu co 5 minut od poniedziałku do piątku w godzinach 8:00-16:59:

crontab -e

Dodaj poniższą linię na końcu pliku crontab:

*/5 8-16 * * 1-5 /sciezka/do/monitoruj_drukarki.sh

Zapisz plik crontab i zakończ edycję. Teraz skrypt będzie cyklicznie sprawdzał status drukarek CUPS i wysyłał e-mail z raportem w przypadku wykrycia błędu lub braku odpowiedzi, w godzinach od 8:00 do 16:59, od poniedziałku do piątku.