快速业务通道

利用 Ruby 的威力更有效地进行系统管理

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-12

这个脚本为根据提供的搜索路径和搜索模式搜索到的文件创建一个名为 “test.zip” 的 zip 文件.

这个例子做以下事情:

第 9-15 行 - 请求用户提供搜索路径和搜索模式.
第 23 行 - 创建一个新的名为 “test.zip” 的 ZipFile.
第 25 行 - 使用 Ruby 中 “Find” 类中的 “find” 方法遍历指定的搜索路径.
第 26 行 - 检查发现的文件是否为一个目录.如果是目录,并且不是 “.”,则递归地遍历该目录.
第 33 行 - 使用 “File” 类中的 “fnmatch” 方法检查发现的文件是否符合给定的模式.
第 35 行 - 将符合的文件添加到 zip 归档中.
下面是一个示例输出:


清单 4. 第二个例子的示例输出

[root@logan]# ruby zipexample.rb

-----------------------File Search-----------------------------------

Enter the search path : /test

Enter the search pattern : *.rb
----------------------------------------------------------------------
Searching in /test for files matching pattern *.rb
----------------------------------------------------------------------

----------------------------------------------------------------------
Zipping up the found files...
----------------------------------------------------------------------
"s.rb"
"test.rb"
"s1.rb"

[root@logan]# unzip -l test.zip
Archive: test.zip
Length Date Time Name
-------- ---- ---- ----
996 09-25-08 21:01 test.rb
57 09-25-08 21:01 s.rb
39 09-25-08 21:01 s1.rb
-------- -------
1092 3 files

Cfruby - 高级的系统管理

根据 Cfruby 站点的定义,“Cfruby 允许使用 Ruby 进行系统管理.它既是一个用于系统管理的 Ruby 函数库,又是一个类 Cfengine 的克隆品(实际上是用于系统管理的一种特定领域语言,即 DSL)”.

Cfruby 基本上是一个由两部分组成的包:

Cfrubylib – 一个纯 Ruby 库,其中包含用于系统管理的类和方法.这包括文件复制、查找、校验和检查、包管理、用户管理等.
Cfenjin – 一种简单的脚本编程语言,可帮助为系统管理任务编写脚本(不必知道 Ruby).

Cfruby 可以作为一个 Ruby gem 或 tar 压缩文件下载.gem 是最简单、最容易的方式.获取 gem,并使用 “gem install” 命令安装它.

安装 Cfruby:

将下载的 Cfruby gem 文件复制到系统中.(在撰写本文之际,它的文件名是 “cfruby-1.01.gem”).
运行 gem 安装 cfruby-1.01.gem.

Cfruby 现在应该被安装到系统上.

使用 Cfruby

现在,我将展示 Cfruby 的功能,以及它如何大大简化系统管理.

有两种基本的方式可访问 Cfruby 库提供的功能:

直接使用 libcfgruby 中的 Ruby 类.
使用 cfrubyscript 包装器,它为 libcfruby 提供了一个更简洁的接口.

直接使用 libcfruby 中的 Ruby 类

Libcfruby 是 Cfruby 的核心,它包含一组模块,这些模块提供了各种用于简化系统维护和设置的功能.为了使用 libcfruby,需要在安装 Cfruby gem 之后,将 “require_gem ''cfruby''” 添加到脚本的顶端.这样便可以直接访问 libcfruby 中的所有核心模块,在脚本中可以根据需要按任意方式使用它们.这种方法惟一的缺点是 libcfruby 比较大,它将所有的类和方法都放入到它们各自的名称空间中.,为了访问任何一个类,都需要以名称空间加以限定.例如,libcfruby 提供了一个用于获得系统类型的方法.要获取操作系统的类型,需要做以下事情:


清单 5. 使用 libcfruby 获取操作系统类型

require ''rubygems''

require_gem ''cfruby''

os = Cfruby::OS::OSFactory.new.get_os()

puts(os.name)

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号