快速业务通道

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

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

除了用作强大的 Web 应用程序开发平台外,通过与 Rails 框架相结合,Ruby 还具有较少被提及的另一面,那就是作为一种强大的脚本语言,就像 Python 或 Perl 那样.它拥有非常强大的功能,可以使用很多内建的和外部的库,因此可利用它的威力来解决通常系统管理工作环境中出现的很多脚本编写需求.,用 Ruby 编程也很有趣!

简介

Ruby 是一种功能极其丰富的、免费的、简单的、可扩展的、可移植的、面向对象的脚本编程语言.最近,它在 Web 领域广受欢迎.这在一定程度上要归因于非常强大的 Web 应用程序开发框架 Rails,Rails 正是用 Ruby 编写的.Rails,也称 Ruby on Rails(ROR),顾名思义,它为快速、有效地开发 Web 应用程序提供一个非常强大的平台.它是高度可伸缩的,Web 上有很多站点就是用 Ruby on Rails 构建的.

除了与 Rails 一起用作 Web 应用程序开发平台外,Ruby 还具有较少被提及的另一面,那就是作为一种强大的脚本编程语言,就像 Python 或 Perl 那样.它拥有非常强大的功能,可以使用很多内建的和外部的库,因此可利用它的威力来解决通常系统管理工作环境中出现的很多脚本编程需求.

系统管理需要大量编写脚本以使事情更简单、更有效.编写脚本比单调的手动工作能更好地解决用户管理、进程管理、文件管理、软件包管理和其他基本的自动化需求.在这个场景中,Ruby 非常有用.它有一套很好的库可满足这一点.


对于本文,我假设读者具有 Ruby 的应用知识.这里提供的基本例子使用纯 Ruby,因此可以在 Ruby 支持的任何类 UNIX? 系统以及 Windows? 上运行.对于更高级的 Cfruby 例子,需要能够使用一个 UNIX 系统.下面所有的例子已经在一台 Linux? 机器上使用 Ruby v1.8.4 进行了测试.它们应该也能用于最新版本的 Ruby.

实践中的 Ruby

第一个例子在指定路径中搜索符合给定模式的文件,并以用户友好的方式给出关于这些文件的详细信息.实现这一目标不必依赖于任何命令行实用程序,只需使用 Ruby 内建的 API.因此,这个例子在有 Ruby 运行的任何平台上都能运行.

,这个例子展示了 Ruby 在简化脚本编写需求方面有多强大.它不是简单地模拟 *nix "find" 命令,而是构建在该命令之上,因而在使用 Ruby 时具有很强的定制能力.


清单 1. 在给定路径中搜索符合给定模式的模式的文件,并显示它们的详细信息

require ''find''
puts ""
puts "-----------------------File Search-----------------------------------"
puts ""
print "Enter the search path : "
searchpath = gets
searchpath = searchpath.chomp
puts ""
print "Enter the search pattern : "
pattern = gets
pattern = pattern.chomp
puts"----------------------------------------------------------------------"
puts "Searching in " searchpath " for files matching pattern " pattern
puts"----------------------------------------------------------------------"
puts ""
Find.find(searchpath) do |path|
if FileTest.directory?(path)
if File.basename(path)[0] == ?.
Find.prune # Don''t look any further into this directory.
else
next
end
else
if File.fnmatch(pattern,File.basename(path))
puts "Filename : " File.basename(path)
s = sprintf("%o",File.stat(path).mode)
print "Permissions : "
puts s
print "Owning uid : "
puts File.stat(path).uid
print "Owning gid : "
puts File.stat(path).uid
print "Size (bytes) : "
puts File.stat(path).size
puts "---------------------------------------------------"
end
end
end

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号