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

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

事情就是这么简单。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b072736f490363a042912c6b37ea4432.html