老薛带你学习Linux Shell脚本编程

简介: 参考案例: 需求:编写一个Centos6.7操作系统初始化配置的脚本第一步:需求拆分 1)基础环境是Centos6.7 2)系统初始化配置,整理经常用到的初始化配置操作    #关闭selinux    #关闭防火墙    #改机器名    #修改网卡的配置文件 ...

参考案例:
需求:编写一个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
#!/bin/sh
#creat by laoxue
#Date 2017-5-18
#used for centos init

#声明基础变量
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大讲堂”


目录
相关文章
|
1月前
|
Linux 编译器 开发工具
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
|
1月前
|
存储 安全 Linux
|
4天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
43 13
|
1月前
|
Linux Shell 数据安全/隐私保护
|
25天前
|
存储 Shell Linux
Linux 如何更改默认 Shell
Linux 如何更改默认 Shell
30 0
Linux 如何更改默认 Shell
|
2月前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
78 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
1月前
|
Ubuntu Linux Shell
Linux 系统中的代码类型或脚本类型内容
在 Linux 系统中,代码类型多样,包括 Shell 脚本、配置文件、网络配置、命令行工具和 Cron 定时任务。这些代码类型广泛应用于系统管理、自动化操作、网络配置和定期任务,掌握它们能显著提高系统管理和开发的效率。
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
2月前
|
Linux 编译器 C语言
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
|
2月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
66 1
下一篇
DataWorks