Windows で rshd
まず Windows に接続されてるプリンタを使うには Windows のコマンドを Linux でリモート操作出来なければならないので、Windows で rshd を常駐させる。(多分これが一番簡単)
ダウンロードして来た rshd を Windows で動かすためには、Readme に書いてあるように <WINDIR> (Win95, 98 なら C:\WINDOWS)に .rhosts というファイルをつくる。
Windows のエクスプローラでは '.(ドット)'から始まるファイルを作れないので、MS-DOSプロンプト上で edit コマンドを使いファイルを作るか、一度別の名前でファイルを作り rename コマンドで名前を変更する。
このファイルの書式は Linux の .rhosts と同じで
ホスト名-HOGE.org
のように書く。この場合は ホスト名-hoge.com からの ユーザ名-hogehoge と、ホスト名-HOGE.org からの全てのユーザに実行許可が与えられる。
rshd -r と起動すると全てのホスト及びユーザからアクセスできるようになるので、何が起こっても後悔しないヒトはこちらでもOK。
毎回起動するのは面倒なので、スタートアップか、タスクに登録する。
Windows で Postscript
あとは Postscript を印刷するので Ghostscript + 日本語化キットが必要。
以下の Ghostscript の情報は古いので、最新情報は上のサイトで確認してください。
会津大学の CTAN および FTP ミラーサイトから以下の3つのファイルをダウンロード :
※以前のバージョンがインストールされている場合は必ずアンインストール及びフォルダの削除を行なう。
まず上の2つをインストールしたあと gs650w32.exe インストールフォルダ(デフォルトなら C:\gs)に直接日本語化キットを解凍する。
ghostscript に path を通す為 C:\autoexec.bat に以下の2行を追加する。以下はインストールフォルダがデフォルトの場合、変更した時は c:\gs を変更したフォルダに変える。(スペースを途中に挟むと正しく path が設定されない。)
SET GS_LIB=C:\gs\gs6.50\lib;C:\gs\gs6.50\kanji;C:\gs\fonts
再起動をする。(しないと autoexec.bat が読み込まれないからで、手動で path
を設定すれば再起動は必要ない。)
日本語設定は、c:\gs\gs6.50\kanji 内の article9.ps を GSview で表示して日本語が確認できればOK。
smbclient
Windows で postscript が印刷できるようになったら、次はファイルを Windows に移動する為、samba に含まれるsambaclientを使用する。sambaclient の簡単な使用法は、
である。詳しくはこちらへ。
Windows のフォルダを書きこみ可で共有フォルダにする。下の例の場合名前が hoge
というマシンで spool という名の共有フォルダを作る。
例 :
これで /tmp にある hoge.ps が Windows の共有フォルダに移動すれば成功である。
rsh で印刷
ファイルが移動後に、rsh コマンドを使う。(hoge.com は Windows 側のホスト名またはIPアドレス。C:\spool\hoge.ps には印刷するファイル。720はプリンタの解像度)
Windows で印刷のダイアログが出ていれば成功。あとは OK
ボタンを押せば印刷される。
Windows で印刷の OK ボタンを押す
rsh だけでは、Windows で印刷のダイアログが出て印刷されないのでマシンが近くにある場合は押す。ソレをしたくないヒトはボタンを勝手に押すソフトを Windows で動かす。2種類ある。
ボタンを自動で押すソフト
ボタンを自動で押すソフトを探したら下の2つが見付かった。
これらのソフトを使って OK ボタンが出現したら自動的に押されるようにする。
このボタンを押す方法ではソフトを常駐させなければならない上に、他のプログラムがダイアログウィンドウを開いたときでもボタンを押してしまう副作用がある。
Windows のスクリプトを作れるソフト
Windows の GUI 操作などをスクリプトでかけるソフトを rsh で起動する。
UWSC ダウンロードして解凍する。以下の例では C:\uwsc\ に解凍している。
Windows 側に置くスクリプトファイル C:\uwsc\print.uws は
for 回数 = 1 to 5 // 一回では失敗する可能性があるので数回繰り返す
印刷ID = GETID("印刷")
ifb 印刷ID >= 0 then
ClkItem(印刷ID, "OK", CLK_BTN)
Exit
endif
Sleep(2)
next
のように書く。(上は一例)
上のスクリプトを rsh で動かす。
このスクリプトで動かした場合は動作に多少のタイムラグがあるので誤動作する可能性がある。
スクリプトをもっと精巧に作ればよくなるかもしれない。詳しくは
こちらへ。
lpd での設定
いちいちコマンドを打つのが面倒なので、lpd でこの作業をやりたいヒトは以下の設定を行なう。
以下の太字のところは自分の環境に合わせる。この辺の詳しいところは上に挙げたサイトにいったほうがわかりやすい。
/usr/local/bin/hogeprint というファイルを作って
自動ボタン押しソフトを使う場合
rm -f /tmp/hoge.tmp
cat > /tmp/hoge.ps
/usr/bin/smbclient "//hoge/spool" "hogepasswd" -U "hogeuser" -c "lcd /tmp; put hoge.ps; quit"
rsh hoge.com gswin32c -q -dNOPAUSE -dSAFER -dBATCH -sDEVICE=mswinpr2 -r720 -sOutputFile=- "C:\spool\hoge.ps" -c quit
rm -f /tmp/hoge.tmp
UWSC を使う場合
rm -f /tmp/hoge.tmp
cat > /tmp/hoge.ps
rsh hoge.com '"C:\uwsc\uwsc.exe" "C:\uwsc\print.uws"'
/usr/bin/smbclient "//hoge/spool" "hogepasswd" -U "hogeuser" -c "lcd /tmp; put hoge.ps; quit"
rsh hoge.com gswin32c -q -dNOPAUSE -dSAFER -dBATCH -sDEVICE=mswinpr2 -r720 -sOutputFile=- "C:\spool\hoge.ps" -c quit
rm -f /tmp/hoge.tmp
と書く。
そして、/etc/printcap に
:cm=HogeHoge printer:\
:lp=/dev/hoge:\
:sd=/var/spool/lpd/hoge:\
:af=/var/spool/lpd/hoge/acct:\
:mx#0:\
:if=/usr/local/bin/hogeprint:
を付け足す。この場合 touch /dev/hoge を行っておく必要がある。
とか書き、実行許可を与えておく。(chmod +x /usr/local/bin/hogeprint)
以上いろいろと調べた結果思いついたやり方を一応のせたけれど、明らかにセキュリティ上の問題があるので一般には止めたほうが良いと思う。