インクジェットプリンタを長期間放置すると起きてしまうインクの目詰まりを防ぐため、自動的にテストページを印刷するサービス
- Dockerで定期実行ジョブを実行するためのcronイメージ(commojun/cron)
- CUPS
- 利用したいプリンターがネットワークに接続していること
- プリンターのIPアドレスが固定されているか特定のホスト名でアクセスできるようになっていること
.env ファイルを作成して $PRINTER_URI 環境変数を設定する。プリンターのIPアドレス宛にブラウザでアクセスするなりして管理画面を開くとどこかにURLが記載されているはず。 .env.sample にはIPPプロトコルのサンプルっぽいURLを記載した。
ビルド
$ make build
(docker compose build)
起動
$ make up
(docker compose up -d)
コンテナのエントリポイントとなっているシェルスクリプト。crondとcupsdの2つのプロセスを実行している。
cupsdサービスを起動後、このコマンドで、使いたいプリンタを追加している。プリンタ名は printer とした。
lpadmin -p printer -E -v $PRINTER_URI -m everywhere
run.sh で読み込まれる定期実行ジョブの定義
lpコマンドを利用してプリントを実行する。オプション -o fitplot を設定することで、プリンターに現在セットされている用紙サイズに合わせてPDFを印刷するようにした。
lp -d printer -o fitplot /test-print.pdf