亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Ruby > 正文

使用Ruby編寫腳本進行系統管理的教程

2020-10-29 19:41:13
字體:
來源:轉載
供稿:網友

簡介

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 = getssearchpath = searchpath.chompputs ""print "Enter the search pattern : "pattern = getspattern = pattern.chompputs"----------------------------------------------------------------------"puts "Searching in " + searchpath + " for files matching pattern " + patternputs"----------------------------------------------------------------------"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  : /testEnter the search pattern : *.rb----------------------------------------------------------------------Searching in /test for files matching pattern *.rb----------------------------------------------------------------------Filename   : s.rbPermissions : 100644Owning uid  : 1Owning gid  : 1Size (bytes) : 57---------------------------------------------------Filename   : test.rbPermissions : 100644Owning uid  : 0Owning gid  : 0Size (bytes) : 996---------------------------------------------------Filename   : s1.rbPermissions : 100644Owning uid  : 1Owning gid  : 1Size (bytes) : 39---------------------------------------------------

在系統管理期間,最常見的一個需求是有效地使用 zip 文件來管理備份,或者將一組文件從一臺計算機轉移到另一臺計算機。在這個方面,Ruby 很有優勢。這里的第二個例子構建在第一個例子的基礎上,但是包含了一個場景,在此場景中,需要將搜索到的文件打包到 zip 文件中。

內建的 zlib 模塊可幫助處理 gzip 文件,對于大多數情況它都夠好。但是,在這里我將使用另一個很好的 Ruby 庫,即 “rubyzip”,來創建和處理 zip 歸檔文件。請查看 參考資料 小節,找到下載它的鏈接。而且要注意,這個例子使用純 Ruby,它不依賴于計算機上當前提供的任何命令行實用程序。

安裝 rubyzip

    通過提供的鏈接下載 “rubyzip” gem,并將它復制到系統中。(在撰寫本文之際,它的文件名是 “rubyzip-0.9.1.gem”)。
    運行 gem 安裝 rubyzip-0.9.1.gem

清單 3. 使用 zip 文件

require 'rubygems'require_gem 'rubyzip'require 'find'require 'zip/zip'puts ""puts "------------------File Search and Zip-----------------------------"puts ""print "Enter the search path  : "searchpath = getssearchpath = searchpath.chompputs ""print "Enter the search pattern : "pattern = getspattern = pattern.chompputs"----------------------------------------------------------------------"puts "Searching in " + searchpath + " for files matching pattern " + patternputs"----------------------------------------------------------------------"puts ""puts"----------------------------------------------------------------------"puts "Zipping up the found files..."puts"----------------------------------------------------------------------" Zip::ZipFile.open("test.zip", Zip::ZipFile::CREATE) { |zipfile| 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))        p File.basename(path)        zipfile.add(File.basename(path),path)    end  end end }

這個腳本為根據提供的搜索路徑和搜索模式搜索到的文件創建一個名為 “test.zip” 的 zip 文件。

這個例子做以下事情:

  •     第 9-15 行 - 請求用戶提供搜索路徑和搜索模式。
  •     第 23 行 - 創建一個新的名為 “test.zip” 的 ZipFile。
  •     第 25 行 - 使用 Ruby 中 “Find” 類中的 “find” 方法遍歷指定的搜索路徑。
  •     第 26 行 - 檢查發現的文件是否為一個目錄。如果是目錄,并且不是 “.”,則遞歸地遍歷該目錄。
  •     第 33 行 - 使用 “File” 類中的 “fnmatch” 方法檢查發現的文件是否符合給定的模式。
  •     第 35 行 - 將符合的文件添加到 zip 歸檔中。

下面是一個示例輸出:
清單 4. 第二個例子的示例輸出

[root@logan]# ruby zipexample.rb-----------------------File Search-----------------------------------Enter the search path  : /testEnter the search pattern : *.rb----------------------------------------------------------------------Searching in /test for files matching pattern *.rb--------------------------------------------------------------------------------------------------------------------------------------------Zipping up the found files...----------------------------------------------------------------------"s.rb""test.rb""s1.rb"[root@logan]# unzip -l test.zipArchive: test.zip Length   Date  Time  Name --------  ----  ----  ----   996 09-25-08 21:01  test.rb   57 09-25-08 21:01  s.rb   39 09-25-08 21:01  s1.rb --------          -------  1092          3 files

Cfruby - 高級的系統管理

根據 Cfruby 站點的定義,“Cfruby 允許使用 Ruby 進行系統管理。它既是一個用于系統管理的 Ruby 函數庫,又是一個類 Cfengine 的克隆品(實際上是用于系統管理的一種特定領域語言,即 DSL)”。

Cfruby 基本上是一個由兩部分組成的包:

  1.     Cfrubylib 亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    精品国产乱码久久久久久虫虫漫画| 欧美一级淫片丝袜脚交| 欧美激情18p| 91久久久久久久久| 欧美日韩亚洲精品一区二区三区| 日韩精品福利网站| 日韩av在线导航| 亚洲免费中文字幕| 国产成人精品一区二区三区| 91精品国产综合久久香蕉最新版| 亚洲综合日韩中文字幕v在线| 欧美激情精品在线| 亚洲综合色av| 亚洲影院色无极综合| 91香蕉嫩草神马影院在线观看| 久久久成人av| 国产精品视频久久久久| 日韩美女中文字幕| 成人在线中文字幕| 日本欧美一二三区| 欧美国产日韩在线| 精品一区二区三区电影| 高清视频欧美一级| 国产精品av在线| 亚洲а∨天堂久久精品喷水| 国产精品高潮呻吟久久av无限| 国产不卡av在线免费观看| 亚洲国产日韩欧美在线图片| 欧美激情综合亚洲一二区| 色综合亚洲精品激情狠狠| 中文字幕日韩欧美在线视频| 国产成人综合一区二区三区| 国产丝袜一区视频在线观看| 2019中文字幕在线免费观看| 久久精品国产清自在天天线| 国产成人免费91av在线| 亚洲天堂av女优| 成人激情在线观看| 精品香蕉在线观看视频一| 亚洲字幕在线观看| 精品色蜜蜜精品视频在线观看| 成人午夜在线视频一区| 亚洲人成在线观看| 日韩欧美一区二区在线| 亚洲第一视频在线观看| 久热精品视频在线观看一区| 亚洲精品国产品国语在线| 亚洲新中文字幕| 97国产成人精品视频| 久久久91精品国产| 日本视频久久久| 国产成人精品免费视频| 一级做a爰片久久毛片美女图片| 欧美成人午夜剧场免费观看| 欧美在线精品免播放器视频| 欧美激情中文字幕在线| 日韩男女性生活视频| 国产精品免费看久久久香蕉| 亚洲精品午夜精品| 久久久人成影片一区二区三区| 久久国产视频网站| 午夜免费在线观看精品视频| 欧美在线激情视频| 高跟丝袜一区二区三区| 国产精品亚洲自拍| 精品欧美一区二区三区| 欧美特级www| 久久久久久尹人网香蕉| 亚洲精品美女在线观看播放| 亚洲精品白浆高清久久久久久| 精品国产乱码久久久久酒店| 亚洲人成电影网站色…| 日韩视频免费观看| 国产一区玩具在线观看| 国产成人综合一区二区三区| 亚洲电影天堂av| 日韩av电影在线免费播放| 国内精品400部情侣激情| 国产精品亚洲视频在线观看| 欧美华人在线视频| 亚洲第一二三四五区| 九色精品美女在线| 在线国产精品视频| 国产精品老牛影院在线观看| 麻豆国产va免费精品高清在线| 亚洲天堂2020| 久久精品成人欧美大片古装| 欧美性xxxxx极品娇小| 亚洲成人激情在线观看| 欧美日韩激情美女| 日韩精品视频在线免费观看| 日韩美女视频免费在线观看| 国产精欧美一区二区三区| 久久亚洲欧美日韩精品专区| 欧美成人免费网| 成人乱人伦精品视频在线观看| 亚洲片av在线| 亚洲天天在线日亚洲洲精| 欧美性猛交xxxx黑人| 欧美日本国产在线| 97在线免费视频| 国产精品视频网址| 欧美国产日韩一区| 国产精品第3页| 国产成人鲁鲁免费视频a| 午夜精品久久久久久久99黑人| 免费91在线视频| 国产亚洲精品日韩| 美女黄色丝袜一区| 中日韩美女免费视频网站在线观看| 久色乳综合思思在线视频| 久久99久国产精品黄毛片入口| 日日噜噜噜夜夜爽亚洲精品| 欧美激情一区二区三区在线视频观看| 中文字幕日韩欧美在线| 欧美野外wwwxxx| 亚洲欧美三级伦理| 夜夜嗨av色一区二区不卡| 欧美国产高跟鞋裸体秀xxxhd| 欧美大片免费观看在线观看网站推荐| 国产成人精品一区二区三区| 91精品国产自产在线观看永久| 日韩在线视频观看正片免费网站| 九九热精品在线| 亚洲人成电影在线播放| 国产成人激情视频| 日韩精品免费看| 亚洲国产美女久久久久| 中文字幕成人在线| 91精品综合视频| 日韩亚洲精品电影| 国产丝袜一区二区三区| 久久精品人人做人人爽| 亚洲综合中文字幕68页| 国产精品久久久久免费a∨| 视频在线观看99| 亚洲影院色无极综合| 亚洲精品按摩视频| 伊人久久久久久久久久久久久| 美女久久久久久久久久久| 欧美午夜性色大片在线观看| 成人深夜直播免费观看| 欲色天天网综合久久| 欧美日韩一二三四五区| 国产成人啪精品视频免费网| 成人免费观看49www在线观看| www.欧美三级电影.com| 91精品视频一区| 成人精品久久一区二区三区| 国产精品三级美女白浆呻吟| 狠狠色狠狠色综合日日小说| 久久视频免费在线播放| 大胆欧美人体视频| 欧美精品18videosex性欧美| 热久久视久久精品18亚洲精品| 日韩av电影院| 欧美极品美女电影一区| 亚洲一区精品电影| 欧美日韩精品在线观看| 欧美裸体男粗大视频在线观看| 精品国产精品三级精品av网址| 一区二区在线视频播放| 国产一区二区三区在线看| 主播福利视频一区|