编写Shell脚本(二)(转)
载自:http://lulu87.blog.51cto.com/1244696/373771
实验案例一:使用Shell脚本进行系统管理
实验环境
公司配备了一台Linux服务器用于分公司于昂的技术培训,因此需要经常或批量的添加用户账号,另外该服务器还有与运行培训部的web站点,需要经常监控网站服务程序的运行状态.
需求描述
编写脚本程序用于检测系统服务httpd的运行状态,要求如下:
1)、当服务状态失常时在“/var/log/htmon.log”文件中计入日志信息。
2)、自动将状态失常的httpd服务重新启动。
3)、若重新启httpd服务失败,则尝试重新启动服务器主机。
4)、结合crond计划任务服务,每周一至周五每隔15分钟执行一次检测任务。
编写脚本程序用于批量添加用户,要求如下:
1)、要求提供交互功能,当管理员执行该脚本程序时,可以根据指定需添加的用户数量(少于100人)、用户名前缀,并能够设置这些用户账号的失效时间、初始密码。
2)、用户编码统一使用两位数,如使用“01”、“02”、“03”的形式,而不是“1”、“2”、“3”的形式。
3)、编写对应的批量删除用户的脚本,部需要提供交互功能,但是要能通过命令行参数指定用户名前缀,执行脚本侯删除所有使用该前缀的用户账号,但是要防止误删除root用户。
推荐步骤
编写htmon.sh脚本文件,用于检测httpd服务的状态
1)、使用“service httpd status”命令测试httpd服务的状态,返回值为0时表示正常,返回值非0时表示不正常。
2)、服务状态失常时,通过重定向追加符号“>>”向“/var/log/htmon.log”文件中写入日志记录信息。
3)、使用“service httpd restart”命令重启httpd服务,并再次执行“service httpd status”命令查看httpd服务的状态。
4)、若服务仍然不正常,则使用chkconfig命令将httpd服务设为自启动,然后通过shutdown命令重启系统。
5)、将测试完毕的脚本文件保存到文件“/opt/htmon.sh”中,并设置计划任务定期执行。
脚本内容如下:
Crond计划服务:
编写myuadd.sh脚本,用于批量添加用户账号。
1)、使用read命令提示用户输入用户数量、用户名前缀、失效时间、初始密码等变量信息。
2)、使用while语句循环执行添加用户的命令操作。
3)、使用if语句对用户编号进行判断,对小于10的账号自动在前缀字符串末尾加上字符“0”。
脚本内容如下:
执行完该脚本的结果:
编写myudel.sh脚本,用于批量删除用户账号。
1)、使用管理员执行脚本时输入的第一个位置参数作为用户名前缀(建议不要短于3个字符,并尽量避免与其他无关用户想重叠,以免误删)。
2)、若管理员未指定位置参数,则提示错误后结束程序(可以使用“exit 1”语句,1表示脚本退出后返回Shell环境的状态值)。
3)、使用grep命令、cut命令过滤passwd文件中使用指定前缀的用户账号名称,结合“-v”选项排除掉root用户。
4)、注意先对“/etc/passwd”、“/etc/shadow”、“/etc/group”等文件做好备份,以免误删除系统用户后用于恢复(删除用户前应进行仔细对、确认)。
5)、使用for语句循环执行删除用户账号的命令操作。
脚本内容如下:
执行结果:
实验案例二:编写简单的系统服务启动脚本
实验环境
在一台rhel5服务器中通过源码编译安装了zebra软件,用于提供软路由服务。为了更方便对zebra服务进行启动、终止等管理操作,需要编写简单的zebra服务启动脚本。
需求描述
编写zebrad脚本程序,并保存到“/etc/init.d”目录,要求如下。
1)、能够执行“/etc/init.d/zebrad start”启动zebra服务程序。
2)、能够执行“/etc/init.d/zebrad stop”终止zebra服务程序。
3)、能够执行“/etc/init.d/zebrad restart”重新启动zebra服务程序。
4)、能够执行“/etc/init.d/zebrad status”查看zebra服务的状态。
5)、若执行脚本时为使用“start”、“stop”、“restart”、“status”参数,饿提示用法帮助信息后在退出。
6)、在启动、终止服务时英显示相关的提示信息。
通过执行“chkconfig –add zebrad”命令将zerbrad添加为系统服务,并确认在运行级别3、5中的启动状态。
推荐步骤
编写“/etc/init.d/zebra”脚本文件,并添加“X”权限
1)、将启动、终止、查看状态的zebra服务控制语句分别定义函数。
2)、通过“/usr/local/sbin/zebra -d”命令来启动zebra服务。
3)、通过保存在“/var/run/zebra.pid”文件中的pid号来终止zebra服务的进程。
4)、通过判断当前运行进程中的“zebra -d”信息确定zebra服务的状态,例如先执行“ps aux |grep “zebra -d”|grep –v “grep” &>/dev/null”命令,然后判断其返回状态。
5)、设置case语句,当用户提供的脚本参数($i)是“start”、“stop”、“restart”、“status”时分别调用对应的函数,否则执行默认操作,显示用法帮助信息后退出。
脚本文件内容如下:
使用“start”、“stop”、“restart”、“status”等参数测试zebra脚本程序的功能。
执行“chkconfig –add zebra”命令,将zebra添加为ixt服务,并确认其在各运行级别的启动状态。
119850602