サーバのIPとホスト名の初期設定が面倒で思いついたスクリプト。
超適当で汚いですが、一応作ってみたので載せてみます。
# cat startup.sh
#!/bin/bash
echo '初期設定を開始します。'
echo ''
while :
do
echo 'ホスト名を入力してください。'
read host
case "$host" in
[a-z]* | [A-Z]* | [0-9]* )
echo "OK"
break ;;
exit)
exit 1 ;;
*)
echo "無効な入力です。" ;;
esac
done
while :
do
echo 'IPアドレスを入力してください'
read IP
case "$IP" in
10.0.*.*)
echo "OK"
break ;;
exit)
exit 1 ;;
* )
echo "無効な入力です。" ;;
esac
done
echo "これでよいですか?(y/n)"
echo "ホスト名"
echo $host
echo "IPアドレス"
echo $IP
read answer
case "$answer" in
y)
;;
n)
echo "終了します"
exit 1 ;;
*)
echo "終了します"
exit 1 ;;
esac
#処理が開始されます。
cp -n /etc/sysconfig/network /root/network.org
cp -n /etc/sysconfig/network-scripts/ifcfg-eth0 /root/ifcfg-eth0.org
# MACアドレスを更新するため、70-persistent-net.rulesファイルを移動します。
再起動後に新たにファイルが作成されます。
mv -n /etc/udev/rules.d/70-persistent-net.rules /root/70-persistent-net.rules.org
sed -i -e s/templete.hdserver/$host/g /etc/sysconfig/network
sed -i -e s/10.0.0.2/$IP/g /etc/sysconfig/network-scripts/ifcfg-eth0
# ifconfigから現在のMACアドレスを抜き出して、ifcfg-eth0ファイルを書き換えます。
HWADDR=`ifconfig -a |grep -i '[0-9A-F]\{2\}\(:[0-9A-F]\{2\}\)\{5\}' |awk '{print$5}'`
sed -i -e s/'[0-9A-F]\{2\}\(:[0-9A-F]\{2\}\)\{5\}'/$HWADDR/g /etc/sysconfig/network-scripts/ifcfg-eth0
if [ $? = 0 ]; then
echo "Success!"
echo "再起動が必要です。今すぐ再起動を行いますか。"
read answer2
case "$answer2" in
y | yes | YES)
reboot ;;
n | no | NO)
echo "終了します"
exit 1 ;;
esac
else
echo "Error. Processing failed."
exit 1
fi
exit 0
ちなみに/etc/sysconfig/networkと
/etc/sysconfig/network-scripts/ifcfg-eth0の中身は以下の箇所を変更済みです。
# cat /etc/sysconfig/network HOSTNAME=host # cat /etc/sysconfig/network-scripts/ifcfg-eth0 IPADDR=IP