天天看点

老薛带你学习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大讲堂”

继续阅读