Shell腳本編程之案例使用正則表達式
1)VMware 軟件,虛擬機爲Centos7系統,使用shell腳本配置靜態網卡
#!/bin/bash
#該shell腳本適用於VMware Centos7雙網卡的配置
#author:lokott
#version:2.0
#下面是關閉防火牆和SELinux,這裏可以不寫,本人習慣在啓動服務之前先將之關閉
systemctl stop firewalled.service &> /dev/null
setenforce 0 &> /dev/null
cp -p /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens36
#定義普通變量
var=/etc/sysconfig/network-scripts
#sed命令將dhcp換爲static,將所有的ens33換爲ens36,刪除UUID所在的行,最後添加ip地址子網掩碼以及默認網關
sed -i 's/dhcp/static/' $var/ifcfg-ens36
sed -i 's/ens33/ens36/g' $var/ifcfg-ens36
sed -i '/^UUID/d' $var/ifcfg-ens36
sed -i -e '$aIPADDR=192.168.100.100' -e '$aNETMASK=255.255.255.0' -e '$aGATEWAY=192.168.100.1' $var/ifcfg-ens36
#重啓網絡服務
systemctl restart network
#檢查是否是自己設置的ip地址,不是則直接退出
ipadd=`ifconfig ens36 |sed -n '2p' |awk '{print $2}'`
if [ $ipadd != "192.168.100.100" ]
then
exit 1
fi
2)DHCP腳本編寫
#!/bin/bash
#該腳本用於配置dhcp服務的shell腳本
#author:lokott
#version:2.0
#執行腳本的時候可以使用./dhcp.sh 2>&1 > /dev/null
yum install dhcp -y &> /dev/null
yum install expect -y &> /dev/null
var1=/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
var2=/etc/dhcp/dhcpd.conf
#下面是關閉防火牆和SELinux,這裏可以不寫,本人習慣在啓動服務之前先將之關閉
systemctl stop firewalled.service &> /dev/null
setenforce 0 &> /dev/null
#expect免交互部分
/usr/bin/expect<<-EOF
spawn cp $var1 $var2
expect {
"*?"
{send "yes\r";}
}
EOF
#將需要配置的內容添加到指定路徑下
cat <<EOF >> $var2
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.10 192.168.100.20;
option routers 192.168.100.100;
#以下是在做pxe部署時的配置
#option domain-name-servers 114.114.114.144;
#next-server 192.168.100.100;
#filename "pxelinux.0";
}
EOF
#啓動dhcp服務
systemctl restart dhcpd