コピーした仮想マシンを自動で初期設定するスクリプトを作ってみた。

· 2 min read
コピーした仮想マシンを自動で初期設定するスクリプトを作ってみた。

サーバの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