Canon Pro 300
Onderhouds afbeelding
Minimale afbeelding die alle kleuren even aanraakt met een lichte intensiteit om het inkt verbruik tot een minimum te beperken.
#!/bin/bash
# Outputbestand
OUT="/home/serveradmin/canon_pro_300/maintenance.png"
WIDTH=1000
HEIGHT=1000
BOX=118
GAP=50
# Kleuren
PBK="#EDEDED"
MBK="#E8E8E8"
C="#CCFFFF"
M="#FFCCFF"
Y="#FFFFCC"
PC="#D6F2FF"
PM="#FFD6F2"
R="#FFE5E5"
G="#E5FFE5"
CO="#F7F7F7"
GRID="#F5F5F5"
# Begin met witte achtergrond
convert -size ${WIDTH}x${HEIGHT} xc:white "$OUT"
# Rasterlijnen (verticale + horizontale)
for ((i=0; i<WIDTH; i+=50)); do
convert "$OUT" -stroke "$GRID" -strokewidth 1 -draw "line $i,0 $i,$HEIGHT" "$OUT"
done
for ((j=0; j<HEIGHT; j+=50)); do
convert "$OUT" -stroke "$GRID" -strokewidth 1 -draw "line 0,$j $WIDTH,$j" "$OUT"
done
# Kleurvakjes tekenen
convert "$OUT" \
-fill "$PBK" -draw "rectangle $GAP,$GAP $((GAP+BOX)),$((GAP+BOX))" \
-fill "$MBK" -draw "rectangle $((GAP*2+BOX)),$GAP $((GAP*2+BOX*2)),$((GAP+BOX))" \
-fill "$C" -draw "rectangle $((GAP*3+BOX*2)),$GAP $((GAP*3+BOX*3)),$((GAP+BOX))" \
-fill "$M" -draw "rectangle $((GAP*4+BOX*3)),$GAP $((GAP*4+BOX*4)),$((GAP+BOX))" \
-fill "$Y" -draw "rectangle $((GAP*5+BOX*4)),$GAP $((GAP*5+BOX*5)),$((GAP+BOX))" \
\
-fill "$PC" -draw "rectangle $GAP,$((GAP*2+BOX)) $((GAP+BOX)),$((GAP*2+BOX*2))" \
-fill "$PM" -draw "rectangle $((GAP*2+BOX)),$((GAP*2+BOX)) $((GAP*2+BOX*2)),$((GAP*2+BOX*2))" \
-fill "$R" -draw "rectangle $((GAP*3+BOX*2)),$((GAP*2+BOX)) $((GAP*3+BOX*3)),$((GAP*2+BOX*2))" \
-fill "$G" -draw "rectangle $((GAP*4+BOX*3)),$((GAP*2+BOX)) $((GAP*4+BOX*4)),$((GAP*2+BOX*2))" \
-fill "$CO" -draw "rectangle $((GAP*5+BOX*4)),$((GAP*2+BOX)) $((GAP*5+BOX*5)),$((GAP*2+BOX*2))" \
"$OUT"
Canon‑queue opnieuw inschakelen
sudo cupsenable Canon_Pro_300
sudo cupsaccept Canon_Pro_300
weekly_print.sh
Wekelijks onderhoudsprint om de inkt van de Canon_Pro_300 niet in te laten drogen en inktverspilling tegen te gaan.
#!/bin/bash
#
# Weekly maintenance print voor Canon Pro 300
# Met foutdetectie, queue-checks en logging voor cron
#
set -euo pipefail
# Log alles naar stdout/stderr zodat cron het mailt
echo "=== Weekly print gestart: $(date) ==="
PRINTER="Canon_Pro_300"
FILE="/home/serveradmin/canon_pro_300/maintenance.png"
# 1. Bestaat het bestand?
if [[ ! -f "$FILE" ]]; then
echo "ERROR: Bestand ontbreekt: $FILE" >&2
exit 1
fi
# 2. Queue-status controleren
QUEUE_STATUS=$(lpstat -p "$PRINTER" 2>&1 || true)
echo "Queue-status:"
echo "$QUEUE_STATUS"
if echo "$QUEUE_STATUS" | grep -q "disabled"; then
echo "WARN: Printerqueue is disabled, poging tot inschakelen..."
sudo cupsenable "$PRINTER" || {
echo "ERROR: Kon queue niet inschakelen." >&2
exit 1
}
sudo cupsaccept "$PRINTER" || {
echo "ERROR: Kon queue niet accepteren." >&2
exit 1
}
echo "Queue opnieuw ingeschakeld."
fi
# 3. Test of lp beschikbaar is
if ! command -v lp >/dev/null 2>&1; then
echo "ERROR: lp command niet gevonden in PATH." >&2
exit 1
fi
# 4. Printopdracht uitvoeren
echo "Printopdracht uitvoeren..."
if ! lp -d "$PRINTER" "$FILE"; then
echo "ERROR: lp faalde bij het versturen van de printopdracht." >&2
exit 1
fi
echo "Printopdracht succesvol verstuurd."
# 5. Queue opnieuw controleren
POST_STATUS=$(lpstat -p "$PRINTER" 2>&1 || true)
echo "Queue-status na print:"
echo "$POST_STATUS"
if echo "$POST_STATUS" | grep -q "disabled"; then
echo "ERROR: Queue is disabled geraakt na het printen. Filter-crash vermoedelijk." >&2
exit 1
fi
echo "=== Weekly print voltooid: $(date) ==="
cronjob
crontab -e
MAILTO="theo.langstraat@delta.nl"
0 8 * * 1 /bin/bash /home/serveradmin/canon_pro_300/weekly_print.sh