在系统管理中,最常见、最重要的任务之一就是用户和组的管理。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 助手方法。
事情就是这么简单。