
參考案例:
需求:編寫一個Centos6.7作業系統初始化配置的腳本
第一步:需求拆分
1)基礎環境是Centos6.7
2)系統初始化配置,整理經常用到的初始化配置操作
#關閉selinux
#關閉防火牆
#改機器名
#修改網卡的配置檔案
#修改ssh配置檔案
…
3)要編寫的是一個腳本,那就要符合腳本的規則
#!/bin/sh
#creat by laoxue
#Date 2017-5-18
#used for centos init
#聲明基礎變量
#腳本主體
第二步:開始編寫腳本
在第一步的需求拆分中,已将各個部分細分完畢,接下來要做的就是,在第一步第三小節的腳本架構的基礎上進行填充就好了。
[root@BJ-YF-web001 xuekun]# vim Centos6.7_init.sh
#聲明基礎變量
LOG_PATH=/centos
LOG_NAME=${LOG_PATH}/a.log
APP_DATE=$(date +%Y%m%d-%H:%M:%S)
HOST_NAME=$1
HOST_PORT=$2
#腳本主體
NETWORK=eth0
if [ ! -d ${LOG_PATH} ];then
mkdir ${LOG_PATH}
fi
echo "開始時間:" $(date +%Y%m%d-%H:%M:%S) >>${LOG_NAME}
#關閉selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config >>${LOG_NAME}
#關閉防火牆
/etc/init.d/iptables stop >>${LOG_NAME}
chkconfig iptables off >>${LOG_NAME}
#改機器名
hostname BJ-YE-web001 >>${LOG_NAME}
sed -i 's/HOSTNAME=test/HOSTNAME=${HOST_NAME}/g' /etc/sysconfig/network >>${LOG_NAME}
#修改網卡的配置檔案
sed -i 's/ONBOOT=no/ONBOOT=yes/g' /etc/sysconfig/network-scripts/ifcfg-${NETWORK} >>${LOG_NAME}
ifdown ${NETWORK} && ifup ${NETWORK}
#修改ssh配置檔案
cp /etc/ssh/sshd_config /etc/ssh/sshd_config_laoxue-${APP_DATE}
sed -i 's/#Port 22/Port $HOST_PORT/g' /etc/ssh/sshd_config >>${LOG_NAME}
sed -i 's/#PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config >>${LOG_NAME}
sed -i 's/#PermitEmptyPasswords no/PermitEmptyPasswords no/g' /etc/ssh/sshd_config >>${LOG_NAME}
sed -i 's/#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config >>${LOG_NAME}
/etc/init.d/sshd restart
echo "結束時間:" $(date +%Y%m%d-%H:%M:%S) >>${LOG_NAME}
腳本主體看起來稍稍複雜,隻不過是用sed指令替換了我們用vim編輯配置檔案的方式。外加if語句對目錄的判斷。當然這個腳本還不是最好的,隻是拿來做例子,為大家提供一個寫Shell腳本的思路,再難的腳本,都是由一條條指令拼接起來的。
更多編寫Shell腳本的思路和技巧請關注“老薛Linux大講堂”