MLDN
课程咨询[孔老师]QQ 1031143579孔老师QQ课程咨询留言 课程咨询[徐老师 ]QQ 945313230
徐老师QQ课程咨询留言
课程咨询[刘老师 ]QQ 514543793
刘老师QQ课程咨询留言
java培训
北京java培训
IT电子教育门户 高端JAVA培训 -=> 资讯中心 -=> 开源项目 -=> 正文

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

 发布日期:2009-2-27 9:06:00 发布者:[IT电子教育门户]   评论:[]  浏览:

直接使用 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)

 


    这只是获得操作系统的名称。随着您用 libcfruby 做更多的事情,您的脚本中将充斥着更多指定名称空间的语句。正是由于这一点,另一种使用 Cfruby 的方法就显得很方便。

    使用 cfrubyscript 包装器,这个包装器为 libcfruby 提供了一个更简洁的接口

    为了使用 cfrubyscript 包装器,需要添加:


    清单 6. 使用 cfrubyscript


     require 'rubygems'

require_gem 'cfruby'

require 'libcfruby/cfrubyscript'
 


    这样会将 cfrubyscript 包括到脚本中,然后就可以通过一个更简单的接口来访问 libcfruby 的功能。

    cfrubyscript 做到了以下几点:

    它将一组变量导出到全局名称空间,例如 $os、$pkg、$user、$proc 和 $sched。
    它将大多数主要模块放到主名称空间中,所以可以调用 FileEdit.set 而不是 Cfruby::FileEdit.set。
    它为 String 和 Array 添加了很多助手方法,这些方法可以做一些 Cfruby 事情(安装程序、编辑文件等)。
    它还提供了一个很好的日志记录器。

    所以,不再需要在脚本中指定一大堆的名称空间。上面用于获取操作系统类型的例子现在变成这样:


    清单 7. 使用 cfrubyscript 获取操作系统的类型

     require 'rubygems'

require_gem 'cfruby'

require 'libcfruby/cfrubyscript'

puts($os.name)
 


    这可以翻译成一个单独的调用,该调用使用全局变量 $os。Cfruby 的确强大,它为管理类 *nix 系统提供了很多功能。

    现在来看看其中一些功能,以及使用它们的一些基本例子。

用户管理

    在系统管理中,最常见、最重要的任务之一就是用户和组的管理。Cfruby 以一种可移植的、简单的方式提供了一套强大的方法来实现该任务。

    该任务是使用 UserManager 对象实现的,这个对象可以像下面这样从 OS 模块获得。


    清单 8. 使用 libcfruby 获得 UserManager 对象


     require 'rubygems'

require_gem 'cfruby'

osfactory = Cfruby::OS::OSFactory.new()

os = osfactory.get_os()

usermgr = os.get_user_manager()

 


    如果使用 cfrubyscript 方式,那么已经有一个全局用户管理对象,即 $user,它可以直接用于调用方法。我将使用这种方法,因为这样更简单,更易于阅读。

    下面展示如何使用它来创建和删除一个用户。


    清单 9. 使用 cfgrubyscript 进行用户管理

    require 'rubygems'

require_gem 'cfruby'

require 'libcfruby/cfrubyscript'

$user.adduser('newusername','password')

$user.deleteuser('usernametodelete',true)
 


    上述代码做什么事情?

    第 1、2 行 – 和通常一样,将 libcfruby 和 cfrubyscript 包括到脚本中。
    第 3 行 – 以用户名 “newusername” 和第二个参数指定的密码创建一个新用户。
    第 4 行 – 删除用户名为 “usernametodelete” 的用户。第二个参数的值可以是 true 或 false,用于指定是否删除被删除用户的主目录。
    类似地,组操作也可以使用 UserManager 对象中的 addgroup() 和 deletegroup() 方法来完成。

    进程管理

    管理员的另一项重要的任务是跟踪系统上运行的进程,并管理它们。Cfruby 在这方面也很有用,它为有效地处理进程提供了方法。

    您可以使用 Cfruby 实现它。


    清单 10. 使用 cfgrubyscript 进行进程管理

   require 'rubygems'

require_gem 'cfruby'

require 'libcfruby/cfrubyscript'

$proc.kill($proc.vim)

'ps –aef'.exec()
 


    上述代码做什么事情?

    第 3 行 – 使用全局 ProcessManager 对象 $proc 关闭由参数指定的 “vim” 进程。$proc.vim 是在系统上运行的 “vim” 进程的一个 ProcessInfo 类型的对象。它们是由 cfrubyscript 自动创建的。
    第 4 行 – 用指定的命令 “ps –aef” 启动一个新进程。可以从命令字符串中直接调用 exec 方法。

    包管理

    系统管理员必须负责的另一项任务是管理系统上的包。Cfruby 提供了一些方法用于方便地在系统上安装和删除软件。


    清单 11. 使用 cfgrubyscript 进行包管理

    require 'rubygems'

require_gem 'cfruby'

require 'libcfruby/cfrubyscript'

all = $pkg.packages()

installed = $pkg.installed_packages()

ruby.install()
 


    上述代码做什么事情?

    第 3 行 – 使用 cfrubyscript 创建的全局 $pkg PackageManager 对象,通过调用 packages() 方法获得系统上所有可用的包。
    第 4 行 – 获得所有已安装的包的列表。
    第 5 行 – 通过调用 install 方法安装 Ruby 包。可以通过包名本身直接调用 install 助手方法。

    事情就是这么简单。

文件管理

    Cfruby 还可以帮助管理系统上的文件。通过使用 Cfruby 提供的方法,可以轻松地创建、编辑、删除、更改所有权和更改许可等等。


    清单 12. 使用 cfgrubyscript 进行文件管理

    require 'rubygems'

require_gem 'cfruby'

require 'libcfruby/cfrubyscript'

'/etc/ssh'.chown_mod('root', 'wheel', 'u=rw,g=r,o-rwx', `:recursive` => true)
 


    上述代码做什么事情?

    第 3 行 – 更改文件 “/etc/ssh” 的所有者和组以及许可。直接从文件本身调用 chown_mod() 方法。这样,这是通过 cfrubyscript 的助手对象和方法实现的。注意,这里只用一行就实现了该功能。

    所以,上述例子应该已经让您了解到 Cfruby 有多强大,使用它来管理系统有多容易。而且,由于提供了一套非常直观的类和方法,它使得系统管理的整个任务变得更加容易,也更加有趣。

    关于 Cfruby 和它的那一整套功能还有很多需要知道的。它附带有一套很好的文档。建议您看一看这些文档,这样才能将这个 Ruby 库的全部威力释放出来。请查看参考资料小节,获取相关链接。

    结束语

    Ruby 不仅可以与 Rails 框架一起用于 Web 应用程序开发。它还可以像脚本编程语言一样强大,作为通常的 shell 脚本编程的一个很好的替代品,常用于实现系统管理中的脚本编程需求。

    通过使用 Ruby 的一套内建模块和一些外部的库,系统管理员可以变得更加高效,工作更加有趣。Ruby 是一个非常有用、非常强大的工具,是每个系统管理员工具箱中必备的工具。

java视频教程
JAVA核心_75对象序列化练习
 JAVA核心_75对象序列化..
JAVA核心_74对象序列化
 JAVA核心_74对象序列化..
JAVA核心_73字符编码
 JAVA核心_73字符编码 ..
JAVA核心_72Scanner
 JAVA核心_72Scann..
JAVA核心_71 IO练习 二
 JAVA核心_71 IO练习..
相关文章 推荐文章
利用 Ruby 的威力更有效地进..[2.27]
两个措施补救Linux系统swap分区..
利用ACL提高Linux系统文件控制力..
Ubuntu中Sudo和Root 帐号..
高性能Linux Kernel项目—L..
利用 Ruby 的威力更有效地进行系统..
热门文章
Struts2入门(上)
Struts2入门(中)
Struts2入门(下)
Struts2 初探
Strus 2的新表单标志的使用(一)..
Struts2中的action讲解(一..
在Struts2中实现文件上传(一)
Struts2中的action讲解(二..
在Struts2中实现文件上传(二)
在Struts 2中实现CRUD
今日更新
两个措施补救Linux系统swap分区..
利用ACL提高Linux系统文件控制力..
Ubuntu中Sudo和Root 帐号..
高性能Linux Kernel项目—L..
利用 Ruby 的威力更有效地进行系统..
Linux集群的虚拟化技术面临的挑战
Linux下如何实现不同网段之间的访问..
利用 Ruby 的威力更有效地进行系统..
使用Nagios监控网页
autojump: 在命令行下快速更改..
JAVA招聘网
 评一评
正在读取…
  姓名:
  评论:
    
【注】 发表评论必需遵守以下条例: !!!
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
关于我们 | 商务合作 | 招聘信息 | 客服中心 | 服务条款 | 免责声明 | 网站导航 QQ留言
Copyright 2009 魔乐培训MLDN.CN all rights reserved 版权所有 京ICP备07008611号