首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>linux基础>经验技巧>正文

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

http://www.oklinux.cn  2009-02-28  IBM    会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

除了用作强大的 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


在这个例子中:

第 5-11 行 - 请求用户提供搜索路径和搜索模式。
第 16 行 - 使用 Ruby 中 “Find” 类中的 “find” 方法遍历指定的搜索路径。
第 17 行 - 检查发现的文件是否为一个目录。如果是目录,并且不是 “.”,则递归地遍历该目录。
第 24 行 - 使用 “File” 类中的 “fnmatch” 方法检查发现的文件是否符合给定的模式。
第 25-34 行 - 如果文件符合模式,则打印文件的详细信息。

下面是这个脚本的一个示例输出。


清单 2. 第一个例子的示例输出

[root@logan]# ruby findexample.rb

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

Enter the search path : /test

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

Filename : s.rb
Permissions : 100644
Owning uid : 1
Owning gid : 1
Size (bytes) : 57
---------------------------------------------------
Filename : test.rb
Permissions : 100644
Owning uid : 0
Owning gid : 0
Size (bytes) : 996
---------------------------------------------------
Filename : s1.rb
Permissions : 100644
Owning uid : 1
Owning gid : 1
Size (bytes) : 39
---------------------------------------------------


在系统管理期间,最常见的一个需求是有效地使用 zip 文件来管理备份,或者将一组文件从一台计算机转移到另一台计算机。在这个方面,Ruby 很有优势。这里的第二个例子构建在第一个例子的基础上,但是包含了一个场景,在此场景中,需要将搜索到的文件打包到 zip 文件中。

内建的 zlib 模块可帮助处理 gzip 文件,对于大多数情况它都够好。但是,在这里我将使用另一个很好的 Ruby 库,即 “rubyzip”,来创建和处理 zip 归档文件。请查看 参考资料 小节,找到下载它的链接。而且要注意,这个例子使用纯 Ruby,它不依赖于计算机上当前提供的任何命令行实用程序。

共7页: 上一页 1 [2] [3] [4] [5] [6] [7] 下一页

上一篇:13款Linux值得考虑的专门发行版   下一篇:初出茅庐:安装Linux系统前的准备工作

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·初出茅庐:安装Linux系统前的准备工作
·13款Linux值得考虑的专门发行版
·Ubuntu下使用Alien实现DEB与RPM互相转换
·使用NTLDR在Windows启动GNU/Linux
·Linux 下使用 MPlayer 观看高清电影的三种解决方案
·Linux时区选择为何没有北京?
·SUSE与Ubuntu回收站具体路径
·Ubuntu下建立一个从其他系统访问加密文件存储
·Ubuntu学习笔记之重新配置显卡
·Linux环境下的MPICH安装
·Ubuntu中安装RTL8187SE网卡
·Fedora 10 最佳多媒体播放解决方案
·Firefox在Wine中的运行速度快过原生
·Linux下利用l7filter封杀迅雷、QQ、MSN
·ThinkPad X61上经历Ubuntu 8.10(安装笔记)
·GNOME Shell: 下一代的 GNOME 桌面组件?
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·初出茅庐:安装Linux系统前的准备工作
·13款Linux值得考虑的专门发行版
·Ubuntu下使用Alien实现DEB与RPM互相转
·使用NTLDR在Windows启动GNU/Linux
·Linux 下使用 MPlayer 观看高清电影的
·Linux时区选择为何没有北京?
·SUSE与Ubuntu回收站具体路径
·Ubuntu下建立一个从其他系统访问加密文
·Ubuntu学习笔记之重新配置显卡
·Linux环境下的MPICH安装
·Ubuntu中安装RTL8187SE网卡
·Fedora 10 最佳多媒体播放解决方案
  阅读排行
·安装Ubuntu分区的推荐方案及方法
·Linux爱好者入门教程
·Ubuntu下安装苹果MAC风格主题(图)
·Ubuntu 3D桌面特效展示!超绚目(图)
·红旗Linux桌面版6.0SP1发布及下载
·新手看招:调试工具GDB基本知识全接触
·Ubuntu下安装MP3播放器Audacious
·Ubuntu 8.04 硬盘安装过程
·Fedora 9 配置yum源
·Windows XP虚拟机vmware中安装Linux步
·Linux下安装tar.gz、rpm、tar.bz2软件
·Ubuntu 8.04如何安装之完美硬盘安装法
·Ubuntu看安装Sopcast看网络电视(配图)
·从硬盘安装RHEL 5(Red Hat Enterprise
·Ubuntu 8.04下fcitx输入法的安装及使用
网摘收藏: