系统初始化脚本 shell 基本的变量截取 主机名 salt配置 网卡配置等 部分信息已隐藏去
#!/bin/bash # =============================== # Desc: System init Script # Author: Wuxp,Bailm # Version: 2017.07.26 # =============================== HW=`ip a | grep ether | head -n1 | awk '{print $2}'` &>/dev/null IP=`ip a | grep 'brd' | grep -v : | egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}/" | egrep -E "^(192\.168|10\.|172\.1[6789]\.|172\.2[0-9]\.|172.3[01]\.)" | sed "s~/~~"` PIP=`ip a | grep 'brd' | grep -v : | egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}/" | egrep -v "^0|^10|^172\.1[6789]\.|^172\.2[0-9]\.|^172.3[01]\.|^192\.168|^127|^169\.254|^255|255$" | sed "s~/~~"` &>/dev/null GATEW=`ip route show | grep $IP | awk -F' ' '{print $NF}' | awk -F'.' '{print $1"."$2"."$3".250"}'` &>/dev/null GATEW_ZQ=`ip route show | grep $IP | awk -F' ' '{print $NF}' | awk -F'.' '{print $1"."$2"."$3".1"}'` &>/dev/null OSV=`cat /etc/redhat-release | egrep -o [0-9] | head -n 1` &>/dev/null NET_segment=`echo $IP | awk -F'.' '{print $1}'` #################### selinux and iptables ################### sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux #################### eth0 #################### mod_eth0 () { if [ ${NET_segment} == 10 ] then cat << EOF1 > /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ONBOOT=yes BOOTPROTO=static TYPE=Ethernet #HWADDR=$HW IPADDR=$IP NETMASK=255.255.255.0 GATEWAY=$GATEW EOF1 echo '---eth0 OK---' else cat << EOF1 > /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ONBOOT=yes BOOTPROTO=static TYPE=Ethernet #HWADDR=$HW IPADDR=$IP NETMASK=255.255.255.0 GATEWAY=$GATEW_ZQ EOF1 echo '---eth0 OK---' fi } ##################### Hostname ################### mod_hostname () { echo -ne " ======================================================== ZW: ZxxxxxxxxxxxxxxxxxxxxxxxxxIPIP DXT: DxxxxxxxxxxxxxxxxxxxxxxxxxxxxP {0xxxxxxxxxxxxx} SandBox: ZxxxxxxxxxxxxxxxxxxxIP QY: ZxxxxxxxxxxxxxxxxxxxxP {Dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} ======================================================== " read -p 'please input hostname: ' name sed -e '/^HOSTNAME/c HOSTNAME='$name'' -e '/^$/d' -i /etc/sysconfig/network hostname $name echo "127.0.0.1 $name " >>/etc/hosts echo "---hostname OK---" } ############################## intranet ############################# intranet () { mod_eth0 mod_hostname #################### ROUTE ################ cat << EOF > /sbin/ifup-local #!/bin/bash if [ "\$1" = "eth0" ];then ip route add 172.16.0.0/12 via $GATE ip route add 192.168.0.0/16 via $GATE ip route add 10.0.0.0/8 via $GATE fi EOF chmod 755 /sbin/ifup-local echo "---route OK---" } ########################### internet ########################### internet () { mod_eth0 mod_hostname start_udev &>/dev/null ipmac=`ifconfig eth0 | grep H | awk '{print toupper($5)}'` udevmac=`cat /etc/udev/rules.d/70-persistent-net.rules | grep eth0 | awk -F\" '{print toupper($8)}'` if [ "$ipmac" = "$udevmac" ];then ################## eth1 ################## IP1=`ifconfig eth1 | grep inet | awk '{print $2}' | cut -d: -f2` cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 ONBOOT=yes BOOTPROTO=static TYPE=Ethernet IPADDR=${IP1} NETMASK=255.255.255.0 EOF echo "---eth1 OK---" #################### ROUTE ################ GATE1=`ifconfig eth1 | grep inet | awk '{print $2}' | cut -d: -f2 | awk -F. '{print $1"."$2"."$3".1"}'` cat << EOF > /sbin/ifup-local #!/bin/bash if [ "\$1" = "eth1" ];then ip route add 172.16.0.0/12 via $GATE1 ip route add 192.168.0.0/16 via $GATE1 ip route add 10.0.0.0/8 via $GATE1 fi EOF chmod 755 /sbin/ifup-local echo "---route OK---" fi } ################### System Release ######################### system_release () { for i in `seq 4 7` do cat /etc/redhat-release | egrep -w "$i\..+" 1>/dev/null if [ $? == 0 ];then return $i fi done } ###################### Yum Install Salt-Minion ############################## salt_install () { system_release case $? in 6) #6.X cd /etc/yum.repos.d/; #rm -fr *; # # yum install salt-minion zeromq -y chkconfig salt-minion on ;; 7) #7.X yum install wget -y cd /etc/yum.repos.d/; # rm -fr *; # # yum install salt-minion zeromq -y chkconfig salt-minion on ;; esac } salt_config () { rm -fr /etc/salt/pki/minion/minion_master.pub Net12=$(echo $IP | awk -F. '{print $1$2}') if [ ${Net12} -eq 10100 ] then # # sed -e '/^master/d' -e '/^id:/d' -e '/^#id:/a id: '$IP'' -i /etc/salt/minion;service salt-minion restart;chkconfig salt-minion on sed -e '/^master/d' -e '/^#master:/a master: 192.168.30.56' -e '/^id:/d' -e '/^#id:/a id: '$IP'' -i /etc/salt/minion systemctl restart salt-minion 2>/dev/null || service salt-minion restart systemctl enable salt-minion 2>/dev/null || chkconfig salt-minion on elif [ ${Net12} -eq 1xxxxxxxxxxxxx ] then sed -e '/^master/d' -e '/^#master:/a master:
' -e '/^id:/d' -e '/^#id:/a id: '$IP'' -i /etc/salt/minion2.168.30.56
systemctl restart salt-minion 2>/dev/null || service salt-minion restart systemctl enable salt-minion 2>/dev/null || chkconfig salt-minion onelse sed -e '/^master/d' -e '/^#master:/a master: 1xxxxxxxxxxx47' -e '/^id:/d' -e '/^#id:/a id: '$IP'' -i /etc/salt/minion systemctl restart salt-minion 2>/dev/null || service salt-minion restart systemctl enable salt-minion 2>/dev/null || chkconfig salt-minion onfi}###########################################################################################################################################echo -ne "======================================================== Input: 1:Local | 2:Public | 3:Salt | 4:Hostname======================================================== Please: " read modecase $mode in1) intranet /etc/init.d/network restart ;;2) internet /etc/init.d/network restart ;;3) salt_install salt_config ;;4) mod_hostname ;;*) echo "please input 1 | 2 | 3:Salt | 4:Hostname" ;;esac