LINUX与UNIX SHELL编程指南027.pdf
《LINUX与UNIX SHELL编程指南027.pdf》由会员分享,可在线阅读,更多相关《LINUX与UNIX SHELL编程指南027.pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、下载第27章 几个脚本例子本章包含了我最常用的几个脚本。你会发现它们都相当短小而简单。这就是脚本的一个优点;它不是很长、很复杂,只需很短的代码就能够完成相当多的功能,可以节约大量的时间。本章中包含以下内容:各种脚本的例子。我本来打算在本章中提供一个通用的数据验证数据库脚本,但是由于它超过了 5 0 0行,我觉得编辑肯定不会同意把它收入书中。那个脚本几年前只有几行,后来由于不断增加功能,变成了现在这么长。最后,我选择了如下六个脚本作为例子:p i n g a l l:一个按照/e t c/h o s t s文件中的条目逐一p i n g所有主机的脚本。b a c k u p _ g e n:一个
2、通用的备份脚本,能够加载缺省设置。d e l.l i n e s:一个引用s e d命令的脚本,能从文件中删除若干行。a c c e s s _ d e n y:一个能够阻止某些特定用户登录的工具。l o g r o l l:一个能够清除超过某一长度的日志的工具。n f s d o w n:一个快速u n m o u n t所有n f s文件系统的工具。27.1 pingall几年前我写了一个名为 p i n g a l l的脚本在夜间运行,把它作为常规报告脚本的一部分。它能够按照/e t c/h o s t s文件中的条目逐一p i n g所有的主机。该脚本列出/e t c/h o s t
3、s文件并查找其中的非注释行(不以#开头的行)。然后使用一个w h i l e循环读入所有的行,接下来使用 a w k分析出每行的第一个域,并把它赋给变量 A D D R。最后使用f o r循环逐一p i n g相应的地址。下面就是该脚本。上述脚本可以很容易地进行扩展,加进其他网络报告工具。27.2 backup_gen在本章中我选择了这个脚本并不是因为它展示了如何备份目录,而是因为它是一个同其他脚本共享设置的很好例子。b a c k u p _ g e n是一个用于备份的脚本,它从一个缺省的配置文件中读入设置,然后根据这些参数对系统进行备份。用户可以根据自己的需要改变这些缺省设置。这是一个不同
4、脚本如何使用相同设置或仅在自己运行期间改变相应设置的极好例子。当该脚本执行时,它首先确认源文件b a c k u p.d e f a u l t s是否存在,如果不存在,则退出。该脚本在运行时,会显示出一个题头和缺省设置,并询问用户是否需要改变任何缺省设置。如果用户回答“是”,在他们修改设置之前,该脚本就会提示他们输入一个代码,用户可以有三次机会;如果输入正确的代码后仍无法改变设置,这就意味着用户必须要使用缺省设置。一般来说,在输入正确代码后,用户可以改变下列设置(中的为缺省设置):磁带设备 r m t 0 可以选择r m t 1和r m t 3 备份完成后是否向系统管理员发邮件 是可以选择否
5、 备份的类型全备份可以选择普通备份或s y b a s e备份脚本中使用了一些临时变量来保存被修改的设置。用户可以按回车键选择缺省设置。下列设置不能被改变:备份日志文件名。用户代码。接着所有的改变会生效。在这些改变生效之后,相应的临时变量又会被重新赋予缺省值。在备份进行之前,首先要测试磁带设备。备份过程使用 f i n d和c p i o命令,它们从设置文件中读入相应变量的缺省值,或使用用户设定的值。下面就是该脚本。第27章 几个脚本例子307下载308第五部分 高级s h e l l编程技巧下载第27章 几个脚本例子309下载源文件backup.defaults中包含函数continue_p
6、rompt,还有所有缺省设置。下面就是该源文件。310第五部分 高级s h e l l编程技巧下载下面是该脚本运行时的输出,缺省设置被显示在屏幕上,用户被询问是否要改变这些设置:第27章 几个脚本例子311下载下面是用户改变缺省值的过程。在下面的例子中,备份类型被用户改变,但是该脚本在检查了相应的磁带设备之后,发现它有点问题。在使用了最后一个状态命令之后,该脚本将会退出。27.3 del.lines之所以要编写这个脚本,是因为应用程序开发者总是问我“用s e d的哪个命令删除空行?”。我决定写一个小脚本给他们使用,以免他们老是打电话问我这个命令。这个脚本只是包装了一下s e d命令,但它能够使
7、用户很方便地使用,他们非常喜欢用。脚本一般都不长。如果你认为写一个脚本能够使某些任务自动化,能够节约时间,那么你就可以编写一个脚本。这个脚本可以处理一个或多个文件。每个文件在用 s e d删除空行之前要先核实是否存在。s e d的输出被导入一个文件名中含有$的临时文件,最后这个临时文件又被移回到原来的文件中。该脚本使用s h i f t命令取得所有的文件名,用 w h i l e循环逐个处理所有的文件,直至处理完为止。可以使用del.lines-help获得一个简短的帮助。你也可以创建一个更好的帮助。下面是该脚本。312第五部分 高级s h e l l编程技巧下载27.4 access.den
8、y在对系统进行某些更新时,你可能不希望用户登录,这时可以使用/e t c/n o l o g i n文件,大多数系统都提供这个文件。一旦在/e t c目录中使用t o u c h命令创建了一个名为 n o l o g i n的文件,除r o o t以外的任何用户都将无法登录。如果系统不支持这种方法,你一样还可以做到这点可以自己创建这个文件,下面就是具体的做法。可以在/e t c/p r o f i l e文件中加入下面的代码:现在,可以通过在/e t c目录下创建n o l o g i n文件来阻止除根用户以外的其他用户登录。记住,该文件要对所有用户可读。第27章 几个脚本例子313下载当决定
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LINUX与UNIX SHELL编程指南027 LINUX UNIX SHELL 编程 指南 027
限制150内