您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 单元任务书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
本文标题:单元任务书11_Shell函数的应用
链接地址:https://www.777doc.com/doc-2593239 .html