このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

デフォルトのプリンタ設定に関わるファイルについて

発言者:kina
( Date Wednesday, October 12, 2005 12:38:39 )


はじめまして、kinaと申します。
今年から学校の教室で使用しているMacの管理担当となり、
UNIXやネットワークやプログラミングなどの知識が足りないため四苦八苦している者です(^_^;)
この度、皆様にお知恵を拝借したい事があり投稿させていただきました。
どうぞよろしくお願いいたしますm(__)m


現在iMac G5 が45台という小規模ながら、NetBootでの運用を考えて試行錯誤しています。
うまくいったらMacの台数を増やすのも夢じゃない・・・といった状況です。


NetBootそのものは稼働できるようになったのですが、
運用していく上で少し問題が発生しました。
iMacで使用させる各ソフトウェアのライセンス数にばらつきがあるのです。
ソフトAは25台分のライセンスしかなく、ソフトBは6台分足りない・・・といった感じです。
また45台を4つのグループに分けて、一つのグループにプリンタを一台ずつ割り振っています。
つまりプリンタは合計4台です。
こういったシステム環境の違いのために、
NetBootイメージが合計6つもある状態になってしまいました。
ソフトウェアのライセンスを追加し、プリンターの台数も減らしてしまえば楽なのですが、
予算や方針の都合上それができない状態にあります。


少しでもNetBootイメージの数を減らすにはどうしたら良いのか・・・と考えた結果、

「クライアントが使用するデフォルトのプリンタ設定を、
NetBoot起動時に自動的に設定できないだろうか?」

と思いつきました。


クライアントのIPアドレスはDHCPサーバでMacアドレス毎に予約をしています。
このためDHCPでありながら、固定IPのように扱える状態にあります。
これを利用して、

「クライアントのIP情報をNetBoot起動時に取得し、
取得したIP毎に任意のプリンタ設定ファイルをオリジナルの設定ファイルに上書き保存させる」

というシェルスクリプトを作ってみました。
スクリプトというものは初めてだったのですが、実際にシェルスクリプトは起動時に読み込まれ、
IP情報も取得して設定ファイルを上書きしている事を確認しました。
しかしながらデフォルトのプリンタ設定にはなんの影響も及ぼしていません。
私が「デフォルトプリンタの設定ファイル」だと思いこんでいたものは、
全く無関係のものだったようです・・・。
ちなみに私が思い違いしていたファイルは以下のものです。
/etc/cups/printers.conf


他に設定に関わるファイルがあるのだろうか、と思い色々と探してみました。
/Library/Preferences 内のファイルや、
/Users/User/Library/Preferences 内のファイルも確認してみました。
ですが、私には見つけることが出来ませんでした・・・。


デフォルトのプリンターを設定に関わるファイルをご存知の方がいらっしゃいましたら、
お教え願えませんでしょうか?
それとも、

「クライアントが使用するデフォルトのプリンタ設定を、NetBoot起動時に自動的に設定する」

という考え自体が検討違いなのでしょうか・・・?
長い上に分かりづらい点があるかもしれませんが、お知恵を拝借できたら幸いです。
どうぞ宜しくお願い致します。

今井真人 さんからのコメント
( Wednesday, October 12, 2005 21:42:31 )

AppleScript でやるほうが良いのではないでしょうか?

AppleScript>スクリプトエディタの「用語説明を開く」メニューを使って
プリンタ設定ユーティリティを開くと、それらしい命令が見えます。

kina さんからのコメント
( Thursday, October 13, 2005 09:20:55 )

今井さん、コメントありがとうございますm(__)m
早速AppleScriptに挑戦してみます!!

今井真人 さんからのコメント
( Thursday, October 13, 2005 21:51:04 )

暇つぶしがてら、AppleScriptをつついてみました。所要時間は5時間ぐらい。
スクリプトエディタで以下のテキストをペーストして実行すれば、デフォルト
のプリンタを変更できます。

tell application "Printer Setup Utility"
  -- 日本語名は「プリンタ設定ユーティリティ」
  set myprinters to get printers
  set current printer to item 4 of myprinters
  -- プリンタリストの上から4番目をデフォルトにする
  quit
end tell

今井真人 さんからのコメント
( Friday, October 14, 2005 22:59:03 )

ネットブートしたマックのIPアドレスの4番目を見て、奇数・偶数により
プリンタを振り分けるAppleScriptを考えてみました。

set myip to do shell script "ifconfig | grep 'broadcast' | awk '{print $2}'|tr '.' ' '"
-- シェルスクリプトを利用して、割り当てられたIPアドレスを取り出す
set ip4 to (word 4 of myip) mod 2 + 1
-- IPアドレスの4番目の数字を2で割った残りにプラス1する

tell application "Printer Setup Utility"
  -- 日本語名は「プリンタ設定ユーティリティ」
  set myprinters to get printers
  set current printer to item ip4 of myprinters
  quit
end tell

kina さんからのコメント
( Monday, October 17, 2005 09:16:14 )

「current printer」というのは見つけたものの、どうすれば良いのかわからず悩んでいるところでした。
AppleScriptの記述の基礎もわからず、ヘルプを読んだり参考書籍を取り寄せたり・・・。
今井さんのスクリプトを拝見して本当に驚きました。
こんなにスマートに記述・処理ができるんですね!!
ここまで教えていただけるとは思っていなかったので、本当に有り難いです。
参考に(というより理解した上で丸々コピー?)させていただきます!!
ありがとうございましたm(__)m