您的位置:首页 > 运维架构 > Shell

简单Shell脚本的设计

2019-06-12 09:03 1331 查看
版权声明:苏苏吖 https://blog.csdn.net/weixin_44774638/article/details/91489141

问题
本案例要求编写三个脚本程序,分别实现以下目标:
1)在屏幕上输出一段文字“Hello World”
2)能够为本机快速配好Yum仓库
3)能够为本机快速装配好vsftpd服务
方案
当脚本的代码量较大,或者脚本需要传递给其他合作者使用时,规范的脚本可以显著降低代码维护的难度(可能几个月以后需要更改功能)、提高代码的易读性(小伙伴不会频繁的来问你“这个变量用来干吗的”之类的问题)。
注意:在学习Shell脚本的过程中,如果代码量比较少,通常就省略注释了。
一个规范的Shell脚本构成包括:
脚本声明(需要的解释器、作者信息等)
注释信息(步骤、思路、用途、变量含义等)
可执行语句(操作代码)
Shell脚本的执行方式:
方法一,作为“命令字”:指定脚本文件的路径,前提是有 x 权限
方法二,作为“参数”:使用sh、source或者点号 . 来加载脚本文件
步骤
实现此案例需要按照如下步骤进行。

步骤一:编写第一个Shell脚本,输出“Hello World”

1)手动测试脚本功能的实现
要输出一段话,可以使用echo命令,将指定的字符串放在单引号内即可:

[root@svr5 ~]# echo 'Hello World'
Hello World

2)根据手动任务操作编写脚本文件

[root@svr5 ~]# vim  /root/first.sh
#!/bin/bash
echo  'Hello World'

[root@svr5 ~]# chmod  +x  /root/first.sh  					//添加可执行权限

3)执行脚本,测试效果

[root@svr5 ~]# /root/first.sh
Hello World

步骤二:编写为本机快速配Yum仓库的Shell脚本

1)手动测试脚本功能的实现
为RHEL客户机配置Yum时,需要进入/etc/yum.repos.d/目录下建立指定的仓库配置文件;另外,还要注意排除其他仓库配置的干扰。从无到有的任务实现过程,整理后的操作大致如下(以光盘触发挂载点/misc/cd作Yum库为例)。
首先,清理现有的Yum仓库配置文件:

[root@svr5 ~]# rm -rf /etc/yum.repos.d/*.repo
[root@svr5 ~]# ls /etc/yum.repos.d/*  						//确认清理结果

ls: 无法访问/etc/yum.repos.d/*: 没有那个文件或目录
然后,建立新的Yum仓库配置文件:

[root@svr5 ~]# vim /etc/yum.repos.d/rhel6.repo
[rhel6]
name=Red Hat Enterprise Linux 6
baseurl=file:///misc/cd
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

2)根据手动任务操作编写脚本文件
通过vim编辑器建立rhel6.repo的操作需要用户交互键入内容,不方便在Shell脚本中使用。但是因为Yum配置内容是固定的,因此可以采用echo显示配置再重定向到仓库文件的方式,配置内容放在单引号内、正常换行即可。
编写的脚本内容参考如下:

[root@svr5 ~]# vim  /root/el6repo.sh
#!/bin/bash
rm  -rf  /etc/yum.repos.d/*.repo
echo  '[rhel-packages]
name=Red Hat Enterprise Linux 6
baseurl=file:///misc/cd
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
'  > /etc/yum.repos.d/rhel6.repo

[root@svr5 ~]# chmod +x /root/el6repo.sh  					//添加可执行权限

3)执行脚本,测试效果
为了方便检查效果,先清理/etc/yum.repos.d/目录:

[root@svr5 ~]# rm -rf /etc/yum.repos.d/*
[root@svr5 ~]# ls /etc/yum.repos.d/*  						//确认清理结果

ls: 无法访问/etc/yum.repos.d/*: 没有那个文件或目录
执行配置Yum仓库的脚本:

[root@svr5 ~]# /root/el6repo.sh
[root@svr5 ~]#

检查配置结果:

[root@svr5 ~]# ls /etc/yum.repos.d/*  						//仓库配置已建立
/etc/yum.repos.d/rhel6.repo

[root@svr5 ~]# yum repolist  								//Yum仓库已可用
rhel-packages                              | 3.9 kB     00:00 ...
rhel-packages/primary_db                  | 3.1 MB     00:00 ...
repo id                repo name                       status
rhel-packages         Red Hat Enterprise Linux 6     3,690
repolist: 3,690

步骤三:编写快速装配vsftpd服务的Shell脚本

1)手动测试脚本功能的实现
根据在Linux网络服务部分学过的知识,装配vsftpd服务包括以下过程。
首先,确保安装vsftpd软件包(执行yum安装即可):

root@svr5 ~]# yum -y install vsftpd   					//不管是否已安装
.. ..
然后,确保启动vsftpd服务:
[root@svr5 ~]# service vsftpd restart  				//不管是否已启动
.. ..
最后,可设置vsftpd开机后能够自动运行:
[root@svr5 ~]# chkconfig vsftpd on  					//不管是否已设置

2)根据手动任务操作编写脚本文件
按照手动任务的顺序编排脚本内容,参考如下:

[root@svr5 ~]# vim  /root/ftpon.sh
#!/bin/bash
yum  -y  install  vsftpd  &> /dev/null
service  vsftpd  restart
chkconfig  vsftpd  on

[root@svr5 ~]# chmod  +x  /root/ftpon.sh  				//添加可执行权限

3)执行脚本,测试效果
为了方便检查效果,先移除vsftpd软件包:

[root@svr5 ~]# yum -y remove vsftpd
.. ..
[root@svr5 ~]# rpm -q vsftpd  							//确认已卸载
package vsftpd is not installed
执行快速装配vsftpd服务的脚本:
[root@svr5 ~]# /root/ftpon.sh
关闭 vsftpd:                                              [失败]
为 vsftpd 启动 vsftpd:                                    [确定]
确认脚本执行结果:
[root@svr5 ~]# rpm -q vsftpd
vsftpd-2.2.2-11.el6_4.1.x86_64

[root@svr5 ~]# service vsftpd status
vsftpd (pid 45694) 正在运行...

[root@svr5 ~]# chkconfig --list vsftpd
vsftpd          0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: