简单Shell脚本的设计

    xiaoxiao2025-05-20  47

    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:关闭

    最新回复(0)