单元任务书11_Shell函数的应用

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1单元任务书11_Shell函数的应用任务目标:能够使用条件测试能够使用if条件语句能够使用for、while循环语句能够使用case分支语句能够使用其他控制语句能够使用函数任务一:使用Shell脚本进行系统管理实验环境:公司配备了一台Linux服务器用于分公司员工的技术培训,因此需要经常成批量地添加用户账号;另外该服务器还用于运行培训部的Web站点,需要经常监控网站服务程序的运行状态。实验准备:安装好Linux操作系统的计算机需求描述编写脚本程序用于监测系统服务httpd的运行状态当服务状态失常时在“/var/log/htmon.log”文件中记入日志自动将状态失常的httpd服务重新启动若重启httpd服务失败,则尝试重新启动服务器主机周一至周五期间每隔15分钟执行一次监测任务编写脚本程序用于批量添加用户提供交互,能根据提示指定添加用户的数量(少于100)、用户名前缀,并能设置帐号的失效时间、初始密码用户名编号统一使用2位数,如使用“01”、“02”的形式编写脚本批量删除用户通过命令行参数指定要删除用户的名称前缀删除以该前缀开头的所有用户,但要防止误删除root用户实现思路:编写htmon.sh脚本文件用于监测httpd服务状态2通过“servicehttpdstatus”命令的返回值判断服务状态使用重定向符号“”追加记录日志结合crond计划任务定期执行编写myuadd.sh脚本用于批量添加用户帐号使用read命令提示用户输入变量值进行交互使用while语句循环执行添加用户的命令操作使用if语句判断用户编号,小于10时自动在前缀后补“0”编写myudel.sh脚本用于批量删除用户帐号通过位置参数“$1”传递要删除用户的名称前缀结合“grep-vroot”排除掉root用户使用for循环批量删除符合条件的用户1、#vi/opt/htmon.sh用于监测httpd服务的状态#!/bin/bashservicehttpdstatus&/dev/nullif[$?–ne0];thenecho“HTTPServerisdown.Attime:`date`”/var/log/htmon.logservicehttpdrestartservicehttpdstatus&/dev/nullif[$?–ne0];thenchkconfig-level2345httpdonshutdown-rnowfifi#chownu+x/opt/htmon.sh#crontab–e2、#vimyuadd.sh用于批量添加用户账号#!/bin/bashread-p“Thenumberofusers(1-99):”NUMread-p“Usernameprefixis:”PREread-p“Expiretimeis(YYYY-mm-dd):”ETIMEread-p“Initialpassword:”PWi=1while[$i–le$NUM]doif[$i–lt10];thenUN=”${PRE}0$i”ElseUN=”${PRE}$i”Fi3useradd-e$ETIME$UNecho$PW|passwd-stdin$stdin$UN&/dev/nullleti++done#chmodu+xmyuadd.sh#./myuadd.sh任务二:编写简单的系统服务控制脚本实验环境:在一台RHEL5服务器中通过源码编译安装了zebra软件,用于提供软路由服务,为了更方便对zebra服务进行启动、终止等管理操作,需要编写简单的zebrad服务启动脚本。实验准备:安装好Linux操作系统的计算机需求描述为已安装的zebra程序编写zebrad服务控制脚本(保存到/etc/init.d/目录中)启动服务:/etc/init.d/zebradstart终止服务:/etc/init.d/zebradstop重启服务:/etc/init.d/zebradrestart查看服务状态:/etc/init.d/zebradstatus未正确指定“start”、“stop”、“restart”、“status”参数时,输出用法帮助信息后退出在启动、终止服务时应显示相关提示信息将zebrad添加为系统服务(chkconfig--addzebrad),确认在运行级别3、5中的自启动状态。问题分析:在zebrad服务脚本中应该使用case分支语句,编写时可以参考“/etc/init.d/”目录中其他系统服务的脚本,如atd、crond等为了让zebrad服务能够被chkconfig工具识别并进行管理,在脚本开头部分需要设置必要的配置参数(否则将不能添加为系统服务),如下所示:4#!/bin/bash#chkconfig:23459960#description:Start/Stopthezebrarouterdaemon.其中,第2行的配置记录用于告诉chkconfig命令的一些控制信息,即被添加为服务时在运行级别2、3、4、5的启动状态自动设为“启用”,启动该服务时优先顺序为99,终止该服务的优先顺序为60,第3行用于提供本服务的描述信息(在ntsysv工具中可以按F1键查看)退出脚本程序的操作可以使用“exit返回值”的命令格式,例如,“exit1”表示结束脚本的执行,并将返回状态值设为1。实现思路:参考已有的系统脚本建立zebrad脚本文件将启动、终止zebra程序等执行操作分别定义为函数通过“/usr/local/sbin/zebra-d”命令启动zebra服务结合“/var/run/zebra.pid”文件中的PID号终止zebra进程通过判断“zebra-d”进程信息确定zebra服务状态设置case分支语句读取执行脚本时提供的未知参数“$1”,并进行比较若为“start”、“stop”等字串,分别调用对应函数否则执行默认操作,显示用法帮助信息并退出执行“chkconfig--addzebrad”添加为系统服务脚本文件如下:#vi/etc/init.d/zebrad#!/bin/bash#chkconfig:23459960#description:Start/Stopthezebrarouterdaemon../etc/init.d/functionsStart(){echo-n“startzebradaemon…”/usr/local/sbin/zebra–d[$?–eq0]&&echo“OK”}stop(){echo-n“shutdownzebradaemon...”kill`cat/var/run/zebra.pid`&/dev/null5[$?-eq0]&&echo“OK”}status(){psaux|grep“zebra–d”|grep-v“grep”&/dev/nullif[$?–eq0];thenecho“zebradaemonisup.”elseecho“zebradaemonisdown.”fi}case“$i”instart)start;;stop)stop;;restart)startstop;;status)status;;*)Echo“Usage:$0{start|stop|restart|status}”exit1esac#chmoda+x/etc/init.d/zebrad

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功