简单shell脚本的设计

2.简单Shell脚本的设计
问题
本案例要求编写三个脚本程序,分别实现以下目标:
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:关闭

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章