指定したのとは別のプリンタから印刷される

先日仕事で行った先で、
「印刷なんですけど、たまに違うほうのプリンタから出るときがあるんですよ。」
と言われた。
問題の印刷はサーバー上のプログラムから出しているもので、ユーザーが操作するクライアントPC側では出力先のプリンタの指定をすることは出来ない。
しかもサーバ上での設定で違うプリンタを指定しているなら毎回違うほうのプリンタから出るはずなのだが、毎回ではなく”たまに”だということなので単純な設定ミスでは無い。
不思議なこともあるものだと思っていたら、思わぬところに原因があった。
件の印刷は本社のサーバ上で動作するプログラムが出力し、その際に出力先を現場に置いてある別のサーバに定義してあるプリンタを指定している。
この現場のサーバでのプリンタの定義に問題があった。
現場のサーバは古く、印刷システムがlpdなので、プリンタは/etc/printcapで定義している。
この定義の中にはプリンタのエントリが2台分あるのだが、スプールディレクトリの指定(sd=/var/spool/lpd/hogeの部分)が2台とも同じディレクトリになっていた。
仮に1台目をプリンタA、2台目をプリンタBとした場合、プリンタAに対して印刷要求を出した場合もプリンタBに出した場合も実際の印刷データは同じディレクトリに置かれることになる
このためプリンタAに対して印刷要求を出した際に、たまたまプリンタBに対応するデーモンが動作していると、プリンタAに出力する筈のデータもプリンタBに出力してしまい、データをプリンタBに送り終わるとデータを消去することになる。
しかもプリンタは直付けではなくプリンタサーバ経由での接続の為、データの転送はプリンタに直接送るよりも早く終わる。
このため本来印刷する筈のプリンタAではなく、もう一方のプリンタBで印刷されるということが起きてしまっていた。

いやぁ、最初は目的のプリンタにデータを送れない場合に自動で切り替えているのかと思ったが、そんな設定をした覚えはないし、lpdはそんな頭の良いことはしてくれない(爆)。
判明してみれば初歩的な設定のミスだったが、今後は気をつけないとなぁ。

←クリックしてくれると嬉しいです。
PR

コメントを残す