首页 > 代码库 > firstboot script 类似功能实现

firstboot script 类似功能实现

#!/bin/bash

echo "fdisk success"

-sed -i ‘/fdisk.sh/d‘  /etc/rc.d/rc.local
+sed -i ‘s/fdisk.sh/reboot.sh/‘  /etc/rc.d/rc.local
+ reboot

主要是格式化磁盘,写在 /etc/rc.local 删除不彻底(/etc/rc.local 是links,用sed 修改文件时 把/etc/rc.local 变成regular file)  这个回头找个时间再看看sed实现原理,运行脚本是执行完后 从rc.d/rc.local 中去掉 /opt/fdisk.sh 

#!/bin/bash

-if [ ! -f /opt/fdisk ]
-then
-  echo "fdisk not exist"
-  touch /opt/fdisk
-  echo "reboot"
-else
  -echo "fdisk is exist" 
  touch /opt/testNB
  sed -i ‘/reboot.sh/d‘  /etc/rc.d/rc.local
-fi

这一步 先test -f /opt/fdisk 文件存在,则执行mkfs.ext4 等操作, 这个文件本身是不存在的,所以先利用这一点 创建fdisk 文件,再reboot, 启动后,会在执行这个脚本,由于文件fdisk 存在了,就开始执行下面的操作。

我是写了个/opt/testNB的文件,最后都搞定了,就需要把reboot.sh 这个脚本干掉。

[root@BJ-W-2101 opt]# cat /etc/rc.d/rc.local 
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don‘t
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
/opt/fdisk.sh
-/opt/reboot.sh


下面是在开机把salt-minion id的 信息添加到/etc/salt/minion中

#!/bin/bash

if [ -z `grep "^id:" /etc/salt/minion ` ]
then
 echo "id is not found"
 ip=`cat /etc/sysconfig/network-scripts/ifcfg-eth0|awk -F"=" ‘/IPADDR/{print $2}‘|tr -d ‘"‘`
 echo "id: $ip" >> /etc/salt/minion
 /etc/init.d/salt-minion restart
else
 echo "id is exist in file"
fi
sed -i ‘/salt.sh/d‘  /etc/rc.d/rc.local

格式化磁盘脚本 开机自动格式化磁盘,生成/dev/vda5 挂载到/export上

#!/bin/bash
# script name fdisk.sh
# create user: davis.ying@gmail.com
fdisk -cu /dev/vda <<ESXU
n 
e


n


w
ESXU
sed -i ‘s/fdisk.sh/new.sh/‘  /etc/rc.d/rc.local
reboot

#!/bin/bash
# script name: new.sh
mkfs.ext4 /dev/vda5

#mount -t ext4 /dev/vda5 /export

uuid=`blkid /dev/vda5|awk -F‘"‘ ‘{print $2}‘`

echo "UUID=$uuid /export                 ext4    defaults      1 2" >>/etc/fstab

mount -a

sed -i ‘/new/d‘ /etc/rc.d/rc.local

[root@ export]# cat /etc/rc.local 
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don‘t
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
/opt/fdisk.sh