RIGHT:[[Mac 関係覚え書き]]

*Netboot 起動時にホスト名を設定する.(Panther 版) [#o3f92cf6]
**手順 [#h985e84e]
+%%AdminTools をインストールする(/usr/sbin/systemsetup だけあればいい)%%
+/etc/hostsにIPアドレス,ホスト名を登録する.
+/Library/StartupItems/SetHostname/を作成する.
+/Library/StartupItems/SetHostname/にファイル
SetHostname,StartupParameters.plist を作成する.
+/etc/sethostname.shを作成する


**/Library/StartupItems/SetHostname/SetHostname [#ve320600]
SetHostname より /etc/sethostname.sh を呼び出す

 #!/bin/sh
 
 ##
 # SetHostname (c)
 ##
 
 . /etc/rc.common
 
 StartService ()
 {
 CheckForNetwork
 if [ "${NETWORKUP}" = "-NO-" ]; then exit; fi
 /etc/sethostname.sh
 if [ -f /var/run/syslog.pid ]; then
 kill -HUP `cat /var/run/syslog.pid`
 fi
 return 0
 }
 
 StopService ()
 {
 return 0
 }
 
 RestartService ()
 {
 return 0
 }
 
 RunService "$1"

**/Library/StartupItems/SetHostname/StartupParameters.plist [#t35f12fe]
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "
 http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
 <key>Description</key>
 <string>SetHostname</string>
 <key>OrderPreference</key>
 <string>None</string>
 <key>Provides</key>
 <array>
 <string>SetHostname</string>
 </array>
 <key>Requires</key>
 <array>
 <string>NetworkExtensions</string>
 </array>
 </dict>
 </plist>
 
**/etc/sethostname.sh(&ref(sethostname.sh);) [#k87b6956]
/etc/hosts からIPアドレスを元にホスト名を取得,
%%/Library/Preferences/SystemConfiguration/preferences.plist を書き換える.%%

 #! /bin/sh
  
 #echo "Set to LocalHostName"
 PREF=/Library/Preferences/SystemConfiguration/preferences.plist
 HOSTS=/etc/hosts
 IP=`ifconfig en0 |grep inet |grep netmask |awk -F" " '{print $2}'`
 HOSTNAME=`grep $IP $HOSTS |awk -F" " '{print $2}'`
 
 /usr/sbin/scutil --set ComputerName ${HOSTNAME}
 /usr/sbin/scutil --set LocalHostName ${HOSTNAME}
 /bin/hostname ${HOSTNAME}
 sleep 3  #<--いらんかも

古いスクリプト
 #! /bin/sh
 
 #echo "Set to LocalHostName"
 PREF=/Library/Preferences/SystemConfiguration/preferences.plist
 HOSTS=/etc/hosts
 IP=`ifconfig en0 |grep inet |grep netmask |awk -F" " '{print $2}'`
 HOSTNAME=`grep $IP $HOSTS |awk -F" " '{print $2}'`
 /bin/ed ${PREF} <<EOF >/dev/null
 1
 /LocalHostName/
 +c
 <string>${HOSTNAME}</string>
 .
 /ComputerName/
 +c
 <string>${HOSTNAME}</string>
 .
 w
 q
 EOF
 
 #touch /System/Library/CoreServices/ServerVersion.plist
 #/usr/sbin/systemsetup -setcomputername $HOSTNAME
 #rm /System/Library/CoreServices/ServerVersion.plist


*Netboot 起動時にホスト名を設定する.(Tiger 版) [#j100be09]
まだ未検証だが,
Tiger からはネットワークイメージユーティリティで,
クライアントのホスト名を指定することができそうだ.

Apple のドキュメント
「システムイメージおよびソフトウェア・アップデートの管理 バージョン 10.4以降用」
によると(p.36)

(1)
>(ネットワークイメージユーティリティの)「"共有"環境設定」をクリックし,
インストール後に NetBoot または NetInstall クライアントが取得する名前を
「コンピュータ名」フィールドに入力します.
>各クライアントのコンピュータ名とローカルホスト名は,指定した名前と
クライアントの MAC アドレス(コロンなし)に設定されます.

となっており,
コンピュータ名を指定することでクライアントのホスト名を,
ある程度自分の好きな名前に自動的につけることができるようです.

また,

(2)
>また,MAC アドレスとそれに対応するコンピュータ名およびローカルホスト名の
リストがある,タブ区切りの .txt または .rtf ファイルのパスを入力することも
できます.各クライアントは,指定したファイル内の MAC アドレスに対応する
名前を取得します.

となっているので,/etc/ethers の書式(3列目もいる)の
ファイルを用意すれば,好きなホスト名がつけられる.
私が確認できた書式は以下の通り.
(MAC アドレスの大文字小文字はどちらでもいい)

 00:30:65:XX:XX:XX       cube1      cube1
 00:30:65:XX:XX:XY       cube2      cube2

なお,この情報は NetBoot イメージ作成時に埋め込まれるようなので,
変更する場合はネットワークイメージユーティリティの「イメージ」で
情報を編集し,ネットワークイメージを再作成する必要がある.

埋め込まれた情報は,作成された Netboot イメージの System.dmg を
ダブルクリックしてマウントした際に
 /Volumes/netboot/etc/sharingNames.plist
に xml として埋め込まれている.

書式は次のような感じ.
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
 <key>kEthernetHostNameMapList</key>
 <dict>
 <key>001b639e294f</key>
 <dict>
 <key>kEthernetBonjourNameMap</key>
 <string>student1</string>
 <key>kEthernetComputerNameMap</key>
 <string>student1</string>
 <key>kEthernetHostNameMap</key>
 <string>student1</string>
 <key>kEthernetNameMap</key>
 <string>00:1b:63:9e:29:4f</string>
 </dict>
 <key>001b639e395f</key>
 <dict>
 <key>kEthernetBonjourNameMap</key>
 <string>student2</string>
 <key>kEthernetComputerNameMap</key>
 <string>student2</string>
 <key>kEthernetHostNameMap</key>
 <string>student2</string>
 <key>kEthernetNameMap</key>
 <string>00:1b:63:9e:39:5f</string>
 </dict>
 </dict>
 </dict>
 </plist>

未確認だが,ここを編集してやれば,わざわざシステムイメージユティリティから
イメージを再作成しなくてもよいと思われる.

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS