RIGHT:[[Mac 関係覚え書き]]
*起動時にホスト名を設定する.
**動き
起動時に,自分の MAC アドレスから /etc/ethers を参照して
自分が本来つけるべき IP アドレスを得る.
次に,得られた IP アドレスから,/etc/hosts を参照して
ホスト名を得る.
以上で得られた IP アドレスと現在の IP アドレスが同じであれば,
何もせずに終了し,
異なれば,preferences.plist を修正して再起動する.
**手順
+%%AdminTools をインストールする(/usr/sbin/systemsetup だけあればいい)%%
+/etc/hosts に IP アドレス,ホスト名を登録する.
+/etc/ethers に MAC アドレス,IP アドレスを登録する.
+/System/Library/StartupItems/SetIPHostname/ を作成する.
+/System/Library/StartupItems/SetIPHostname/ にファイル
SetIPHostname,StartupParameters.plist を作成する.
+/etc/setiphostname.shを作成する
**/System/Library/StartupItems/SetIPHostname/SetIPHostname
SetIPHostname より /etc/setiphostname.sh を呼び出す
#!/bin/sh
##
# SetIPHostname (c)
##
. /etc/rc.common
StartService ()
{
CheckForNetwork
# if [ "${NETWORKUP}" = "-NO-" ]; then exit; fi
/etc/setiphostname.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"
**/System/Library/StartupItems/SetIPHostname/StartupParameters.plist
{
Description = "Set IP address and Computer name";
Provides = ("SetIPHostname");
Requires = ("NetworkExtensions");
OrderPreference = ("None");
}
**/etc/setiphostname.sh &ref(setiphostname.sh);
/etc/hosts から MAC アドレスを 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}'`
#IP=`cat /etc/lastip`
ETHER=`ifconfig en0 |grep ether |awk -F" " '{print $2}'`
MY_IP=`grep -i ${ETHER} /etc/ethers |awk -F" " '{print $2}'`
if [ -f /etc/LAST_IP ]
then
LAST_IP=`cat /etc/LAST_IP`
els
LAST_IP=""
fi
#if [ "${MY_IP}" = "" -o "{$IP}" = "" ]
if [ "${MY_IP}" = "" -o "${MY_IP}" = "${LAST_IP}" ]
then
exit 0
fi
HOSTNAME=`grep ${MY_IP} ${HOSTS} |awk -F" " '{print $2}'`
# DEBUG
#echo "HOSTNAME MY_IP ETHER IP" > /var/tmp/tnk.txt
#echo "${HOSTNAME} ${MY_IP} ${ETHER} ${IP}" >> /var/tmp/tnk.txt
if [ "${MY_IP}" != "${IP}" ]
then
/usr/sbin/scutil --set ComputerName ${HOSTNAME}
/usr/sbin/scutil --set LocalHostName ${HOSTNAME}
/bin/ed ${PREF} <<EOF >/dev/null
1
/<key>Addresses<\/key>/
++c
<string>${MY_IP}</string>
.
w
q
EOF
echo ${MY_IP} > /etc/LAST_IP
/sbin/reboot
fi