google-code-prettify

2007-08-02

NetBSDからWindowsに接続されているプリンタに印刷する

基本的には、NetBSD Documentation: Printing to a remote SMB printer from NetBSDの通り。

1. net/sambaをインストール

2. /usr/pkg/etc/samba/smb.confで、wins server = xxx.xxx.xxx.xxxを指定する。wins supportはコメントアウトする。

3. /etc/rc.confで、
lpd=YES
nmbs=YES

とし、lpdとnmbdを起動しておく

4. smbclientコマンドで、接続できるかテストする。
$ smbclient //machinename/printername
必要なら、-U usernameでユーザー名を指定する。

5. print/ghostscriptをインストール。

6. smbprintを/usr/local/bin/に置き、実行パーミッションの設定をする。

7. 素のsmbprintだとユーザー名をsmbclientに正しく渡してくれないので、
| smbclient "\\\\$server\\$service" $password -U $server -N -c 'print -' >> $logfile
を、
| smbclient "\\\\$server\\$service" $password -U $username -N -c 'print -' >> $logfile
と書き換える。

8. printcapを書く。

lp|lufer|hplj4:\
:mx#0:sh:lp=/dev/null:sd=/var/spool/lpd/lufer:\
:af=/etc/lpd/lufer/acct:if=/usr/local/bin/smbprint:

lpはプリンタ名、その後ろのluferとhplj4は何でもいいみたい。よくわからんけど。
sdはスプールディレクトリ。mkdirしておこう。
afは設定ファイルを置くディレクトリ。何でも良い。この場合は、/etc/lpd/lufer/に設定ファイルを置く事になる(acct部は無視される)。

9. 設定ファイルを書く。
server=lufer // サーバー名
service=hp // 共有名
username= // ユーザー名
password= // パスワード
device=ljet4 // ghostscriptでのデバイス名
gs_options=-r300x300 // ghostscriptに渡すオプション
スペースを含む時は、""でくくってやる事。
service="printer for 3F"
gs_options="-r300x300 -sPAPERSIZE=a4"
のように。

10. テスト
うまく行けば、$ lpr -P lp chess.psのようにすると、印刷される。

11. トラブルシューティング
- lprをした直後に$ lpq -P lpとして、何も表示されなければ、スプールディレクトリが変なのかも。
- smbprintは/tmp/smb-print.logにログを作るので、lprの後しばらくたってもこのファイルが無い場合、smbprintが呼ばれていない。smbprintのpermissionやprintcapや設定ファイルを見直そう。
- あとは、/tmp/smb-print.logを見て、エラーメッセージを参考に。

12. windows 2000の場合の注意
windows 2000の場合、
ERRDOS - ERRbadaccess (Invalid open mode.) opening remote file stdin-2348
というエラーが出る事がある。windows側で、スプールを使わずにプリンタに直接データを送り込むように設定していると、そうなる。
スプールを使うようにwindows側の設定を変えましょう。


参考
http://www.netbsd.org/docs/misc/smbprint/
http://www.mail-archive.com/samba@lists.samba.org/msg01621.html

0 件のコメント: