天天看點

老薛帶你學習Linux Shell腳本程式設計

老薛帶你學習Linux Shell腳本程式設計

參考案例:

需求:編寫一個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大講堂”

繼續閱讀