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

首頁(yè) > 編程 > Ruby > 正文

使用Ruby編寫(xiě)腳本進(jìn)行系統(tǒng)管理的教程

2020-02-24 15:37:29
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Ruby具有非常強(qiáng)大的功能,因?yàn)樗梢允褂迷S多內(nèi)置和外部庫(kù),因此它可以利用自己的能力在正常的系統(tǒng)管理工作環(huán)境中解決許多腳本需求,其實(shí)使用Ruby編程的很有趣的,武林技術(shù)頻道為大家詳細(xì)介紹使用Ruby編寫(xiě)腳本進(jìn)行系統(tǒng)管理的教程。

簡(jiǎn)介

Ruby 是一種功能極其豐富的、免費(fèi)的、簡(jiǎn)單的、可擴(kuò)展的、可移植的、面向?qū)ο蟮哪_本編程語(yǔ)言。最近,它在 Web 領(lǐng)域廣受歡迎。這在一定程度上要?dú)w因于非常強(qiáng)大的 Web 應(yīng)用程序開(kāi)發(fā)框架 Rails,Rails 正是用 Ruby 編寫(xiě)的。Rails,也稱(chēng) Ruby on Rails(ROR),顧名思義,它為快速、有效地開(kāi)發(fā) Web 應(yīng)用程序提供一個(gè)非常強(qiáng)大的平臺(tái)。它是高度可伸縮的,Web 上有很多站點(diǎn)就是用 Ruby on Rails 構(gòu)建的。

除了與 Rails 一起用作 Web 應(yīng)用程序開(kāi)發(fā)平臺(tái)外,Ruby 還具有較少被提及的另一面,那就是作為一種強(qiáng)大的腳本編程語(yǔ)言,就像 Python 或 Perl 那樣。它擁有非常強(qiáng)大的功能,由于可以使用很多內(nèi)建的和外部的庫(kù),因此可利用它的威力來(lái)解決通常系統(tǒng)管理工作環(huán)境中出現(xiàn)的很多腳本編程需求。

系統(tǒng)管理需要大量編寫(xiě)腳本以使事情更簡(jiǎn)單、更有效。編寫(xiě)腳本比單調(diào)的手動(dòng)工作能更好地解決用戶(hù)管理、進(jìn)程管理、文件管理、軟件包管理和其他基本的自動(dòng)化需求。在這個(gè)場(chǎng)景中,Ruby 非常有用。它有一套很好的庫(kù)可滿(mǎn)足這一點(diǎn)。

對(duì)于本文,我假設(shè)讀者具有 Ruby 的應(yīng)用知識(shí)。這里提供的基本例子使用純 Ruby,因此可以在 Ruby 支持的任何類(lèi) UNIX? 系統(tǒng)以及 Windows? 上運(yùn)行。對(duì)于更高級(jí)的 Cfruby 例子,需要能夠使用一個(gè) UNIX 系統(tǒng)。下面所有的例子已經(jīng)在一臺(tái) Linux? 機(jī)器上使用 Ruby v1.8.4 進(jìn)行了測(cè)試。它們應(yīng)該也能用于最新版本的 Ruby。

實(shí)踐中的 Ruby

第一個(gè)例子在指定路徑中搜索符合給定模式的文件,并以用戶(hù)友好的方式給出關(guān)于這些文件的詳細(xì)信息。實(shí)現(xiàn)這一目標(biāo)不必依賴(lài)于任何命令行實(shí)用程序,只需使用 Ruby 內(nèi)建的 API。因此,這個(gè)例子在有 Ruby 運(yùn)行的任何平臺(tái)上都能運(yùn)行。

而且,這個(gè)例子展示了 Ruby 在簡(jiǎn)化腳本編寫(xiě)需求方面有多強(qiáng)大。它不是簡(jiǎn)單地模擬 *nix "find" 命令,而是構(gòu)建在該命令之上,因而在使用 Ruby 時(shí)具有很強(qiáng)的定制能力。
清單 1. 在給定路徑中搜索符合給定模式的模式的文件,并顯示它們的詳細(xì)信息

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

在這個(gè)例子中:

  • ??? 第 5-11 行 - 請(qǐng)求用戶(hù)提供搜索路徑和搜索模式。
  • ??? 第 16 行 - 使用 Ruby 中 “Find” 類(lèi)中的 “find” 方法遍歷指定的搜索路徑。
  • ??? 第 17 行 - 檢查發(fā)現(xiàn)的文件是否為一個(gè)目錄。如果是目錄,并且不是 “.”,則遞歸地遍歷該目錄。
  • ??? 第 24 行 - 使用 “File” 類(lèi)中的 “fnmatch” 方法檢查發(fā)現(xiàn)的文件是否符合給定的模式。
  • ??? 第 25-34 行 - 如果文件符合模式,則打印文件的詳細(xì)信息。

下面是這個(gè)腳本的一個(gè)示例輸出。
清單 2. 第一個(gè)例子的示例輸出

[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---------------------------------------------------

在系統(tǒng)管理期間,最常見(jiàn)的一個(gè)需求是有效地使用 zip 文件來(lái)管理備份,或者將一組文件從一臺(tái)計(jì)算機(jī)轉(zhuǎn)移到另一臺(tái)計(jì)算機(jī)。在這個(gè)方面,Ruby 很有優(yōu)勢(shì)。這里的第二個(gè)例子構(gòu)建在第一個(gè)例子的基礎(chǔ)上,但是包含了一個(gè)場(chǎng)景,在此場(chǎng)景中,需要將搜索到的文件打包到 zip 文件中。

內(nèi)建的 zlib 模塊可幫助處理 gzip 文件,對(duì)于大多數(shù)情況它都?jí)蚝?。但是,在這里我將使用另一個(gè)很好的 Ruby 庫(kù),即 “rubyzip”,來(lái)創(chuàng)建和處理 zip 歸檔文件。請(qǐng)查看 參考資料 小節(jié),找到下載它的鏈接。而且要注意,這個(gè)例子使用純 Ruby,它不依賴(lài)于計(jì)算機(jī)上當(dāng)前提供的任何命令行實(shí)用程序。

安裝 rubyzip

??? 通過(guò)提供的鏈接下載 “rubyzip” gem,并將它復(fù)制到系統(tǒng)中。(在撰寫(xiě)本文之際,它的文件名是 “rubyzip-0.9.1.gem”)。
??? 運(yùn)行 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 }

這個(gè)腳本為根據(jù)提供的搜索路徑和搜索模式搜索到的文件創(chuàng)建一個(gè)名為 “test.zip” 的 zip 文件。

這個(gè)例子做以下事情:

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

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

[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 - 高級(jí)的系統(tǒng)管理

根據(jù) Cfruby 站點(diǎn)的定義,“Cfruby 允許使用 Ruby 進(jìn)行系統(tǒng)管理。它既是一個(gè)用于系統(tǒng)管理的 Ruby 函數(shù)庫(kù),又是一個(gè)類(lèi) Cfengine 的克隆品(實(shí)際上是用于系統(tǒng)管理的一種特定領(lǐng)域語(yǔ)言,即 DSL)”。

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

  1. ??? Cfrubylib – 一個(gè)純 Ruby 庫(kù),其中包含用于系統(tǒng)管理的類(lèi)和方法。這包括文件復(fù)制、查找、校驗(yàn)和檢查、包管理、用戶(hù)管理等。
  2. ??? Cfenjin – 一種簡(jiǎn)單的腳本編程語(yǔ)言,可幫助為系統(tǒng)管理任務(wù)編寫(xiě)腳本(不必知道 Ruby)。

Cfruby 可以作為一個(gè) Ruby gem 或 tar 壓縮文件下載。gem 是最簡(jiǎn)單、最容易的方式。獲取 gem,并使用 “gem install” 命令安裝它。

安裝 Cfruby:

  • ??? 將下載的 Cfruby gem 文件復(fù)制到系統(tǒng)中。(在撰寫(xiě)本文之際,它的文件名是 “cfruby-1.01.gem”)。
  • ??? 運(yùn)行 gem 安裝 cfruby-1.01.gem。

Cfruby 現(xiàn)在應(yīng)該被安裝到系統(tǒng)上。
使用 Cfruby

現(xiàn)在,我將展示 Cfruby 的功能,以及它如何大大簡(jiǎn)化系統(tǒng)管理。

有兩種基本的方式可訪(fǎng)問(wèn) Cfruby 庫(kù)提供的功能:

  1. ??? 直接使用 libcfgruby 中的 Ruby 類(lèi)。
  2. ??? 使用 cfrubyscript 包裝器,它為 libcfruby 提供了一個(gè)更簡(jiǎn)潔的接口。

直接使用 libcfruby 中的 Ruby 類(lèi)

Libcfruby 是 Cfruby 的核心,它包含一組模塊,這些模塊提供了各種用于簡(jiǎn)化系統(tǒng)維護(hù)和設(shè)置的功能。為了使用 libcfruby,需要在安裝 Cfruby gem 之后,將 “require_gem 'cfruby'” 添加到腳本的頂端。這樣便可以直接訪(fǎng)問(wèn) libcfruby 中的所有核心模塊,在腳本中可以根據(jù)需要按任意方式使用它們。這種方法惟一的缺點(diǎn)是 libcfruby 比較大,它將所有的類(lèi)和方法都放入到它們各自的名稱(chēng)空間中。所以,為了訪(fǎng)問(wèn)任何一個(gè)類(lèi),都需要以名稱(chēng)空間加以限定。例如,libcfruby 提供了一個(gè)用于獲得系統(tǒng)類(lèi)型的方法。要獲取操作系統(tǒng)的類(lèi)型,需要做以下事情:
清單 5. 使用 libcfruby 獲取操作系統(tǒng)類(lèi)型

require 'rubygems'require_gem 'cfruby'os = Cfruby::OS::OSFactory.new.get_os()puts(os.name)

這只是獲得操作系統(tǒng)的名稱(chēng)。隨著您用 libcfruby 做更多的事情,您的腳本中將充斥著更多指定名稱(chēng)空間的語(yǔ)句。正是由于這一點(diǎn),另一種使用 Cfruby 的方法就顯得很方便。
使用 cfrubyscript 包裝器,這個(gè)包裝器為 libcfruby 提供了一個(gè)更簡(jiǎn)潔的接口

為了使用 cfrubyscript 包裝器,需要添加:
清單 6. 使用 cfrubyscript

require 'rubygems'require_gem 'cfruby'require 'libcfruby/cfrubyscript'

這樣會(huì)將 cfrubyscript 包括到腳本中,然后就可以通過(guò)一個(gè)更簡(jiǎn)單的接口來(lái)訪(fǎng)問(wèn) libcfruby 的功能。

cfrubyscript 做到了以下幾點(diǎn):

  • ??? 它將一組變量導(dǎo)出到全局名稱(chēng)空間,例如 $os、$pkg、$user、$proc 和 $sched。
  • ??? 它將大多數(shù)主要模塊放到主名稱(chēng)空間中,所以可以調(diào)用 FileEdit.set 而不是 Cfruby::FileEdit.set。
  • ??? 它為 String 和 Array 添加了很多助手方法,這些方法可以做一些 Cfruby 事情(安裝程序、編輯文件等)。
  • ??? 它還提供了一個(gè)很好的日志記錄器。

所以,不再需要在腳本中指定一大堆的名稱(chēng)空間。上面用于獲取操作系統(tǒng)類(lèi)型的例子現(xiàn)在變成這樣:
清單 7. 使用 cfrubyscript 獲取操作系統(tǒng)的類(lèi)型

require 'rubygems'require_gem 'cfruby'require 'libcfruby/cfrubyscript'puts($os.name)

這可以翻譯成一個(gè)單獨(dú)的調(diào)用,該調(diào)用使用全局變量 $os。Cfruby 的確強(qiáng)大,它為管理類(lèi) *nix 系統(tǒng)提供了很多功能。

現(xiàn)在來(lái)看看其中一些功能,以及使用它們的一些基本例子。
用戶(hù)管理

在系統(tǒng)管理中,最常見(jiàn)、最重要的任務(wù)之一就是用戶(hù)和組的管理。Cfruby 以一種可移植的、簡(jiǎn)單的方式提供了一套強(qiáng)大的方法來(lái)實(shí)現(xiàn)該任務(wù)。

該任務(wù)是使用 UserManager 對(duì)象實(shí)現(xiàn)的,這個(gè)對(duì)象可以像下面這樣從 OS 模塊獲得。
清單 8. 使用 libcfruby 獲得 UserManager 對(duì)象

require 'rubygems'require_gem 'cfruby'osfactory = Cfruby::OS::OSFactory.new()os = osfactory.get_os()usermgr = os.get_user_manager()

如果使用 cfrubyscript 方式,那么已經(jīng)有一個(gè)全局用戶(hù)管理對(duì)象,即 $user,它可以直接用于調(diào)用方法。我將使用這種方法,因?yàn)檫@樣更簡(jiǎn)單,更易于閱讀。

下面展示如何使用它來(lái)創(chuàng)建和刪除一個(gè)用戶(hù)。
清單 9. 使用 cfgrubyscript 進(jìn)行用戶(hù)管理

require 'rubygems'require_gem 'cfruby'require 'libcfruby/cfrubyscript'$user.adduser('newusername','password')$user.deleteuser('usernametodelete',true)

上述代碼做什么事情?

  • ??? 第 1、2 行 – 和通常一樣,將 libcfruby 和 cfrubyscript 包括到腳本中。
  • ??? 第 3 行 – 以用戶(hù)名 “newusername” 和第二個(gè)參數(shù)指定的密碼創(chuàng)建一個(gè)新用戶(hù)。
  • ??? 第 4 行 – 刪除用戶(hù)名為 “usernametodelete” 的用戶(hù)。第二個(gè)參數(shù)的值可以是 true 或 false,用于指定是否刪除被刪除用戶(hù)的主目錄。

類(lèi)似地,組操作也可以使用 UserManager 對(duì)象中的 addgroup() 和 deletegroup() 方法來(lái)完成。
進(jìn)程管理

管理員的另一項(xiàng)重要的任務(wù)是跟蹤系統(tǒng)上運(yùn)行的進(jìn)程,并管理它們。Cfruby 在這方面也很有用,它為有效地處理進(jìn)程提供了方法。

您可以使用 Cfruby 實(shí)現(xiàn)它。
清單 10. 使用 cfgrubyscript 進(jìn)行進(jìn)程管理

require 'rubygems'require_gem 'cfruby'require 'libcfruby/cfrubyscript'$proc.kill($proc.vim)'ps –aef'.exec()

上述代碼做什么事情?

  • ??? 第 3 行 – 使用全局 ProcessManager 對(duì)象 $proc 關(guān)閉由參數(shù)指定的 “vim” 進(jìn)程。$proc.vim 是在系統(tǒng)上運(yùn)行的 “vim” 進(jìn)程的一個(gè) ProcessInfo 類(lèi)型的對(duì)象。它們是由 cfrubyscript 自動(dòng)創(chuàng)建的。
  • ??? 第 4 行 – 用指定的命令 “ps –aef” 啟動(dòng)一個(gè)新進(jìn)程。可以從命令字符串中直接調(diào)用 exec 方法。

包管理

系統(tǒng)管理員必須負(fù)責(zé)的另一項(xiàng)任務(wù)是管理系統(tǒng)上的包。Cfruby 提供了一些方法用于方便地在系統(tǒng)上安裝和刪除軟件。
清單 11. 使用 cfgrubyscript 進(jìn)行包管理

require 'rubygems'require_gem 'cfruby'require 'libcfruby/cfrubyscript'all = $pkg.packages()installed = $pkg.installed_packages()ruby.install()

上述代碼做什么事情?

  • ??? 第 3 行 – 使用 cfrubyscript 創(chuàng)建的全局 $pkg PackageManager 對(duì)象,通過(guò)調(diào)用 packages() 方法獲得系統(tǒng)上所有可用的包。
  • ??? 第 4 行 – 獲得所有已安裝的包的列表。
  • ??? 第 5 行 – 通過(guò)調(diào)用 install 方法安裝 Ruby 包??梢酝ㄟ^(guò)包名本身直接調(diào)用 install 助手方法。

事情就是這么簡(jiǎn)單。
文件管理

Cfruby 還可以幫助管理系統(tǒng)上的文件。通過(guò)使用 Cfruby 提供的方法,可以輕松地創(chuàng)建、編輯、刪除、更改所有權(quán)和更改許可等等。
清單 12. 使用 cfgrubyscript 進(jìn)行文件管理

require 'rubygems'require_gem 'cfruby'require 'libcfruby/cfrubyscript''/etc/ssh'.chown_mod('root', 'wheel', 'u=rw,g=r,o-rwx', `:recursive` => true)

上述代碼做什么事情?

??? 第 3 行 – 更改文件 “/etc/ssh” 的所有者和組以及許可。直接從文件本身調(diào)用 chown_mod() 方法。這樣,這是通過(guò) cfrubyscript 的助手對(duì)象和方法實(shí)現(xiàn)的。注意,這里只用一行就實(shí)現(xiàn)了該功能。

所以,上述例子應(yīng)該已經(jīng)讓您了解到 Cfruby 有多強(qiáng)大,使用它來(lái)管理系統(tǒng)有多容易。而且,由于提供了一套非常直觀的類(lèi)和方法,它使得系統(tǒng)管理的整個(gè)任務(wù)變得更加容易,也更加有趣。

關(guān)于 Cfruby 和它的那一整套功能還有很多需要知道的。它附帶有一套很好的文檔。建議您看一看這些文檔,這樣才能將這個(gè) Ruby 庫(kù)的全部威力釋放出來(lái)。請(qǐng)查看參考資料小節(jié),獲取相關(guān)鏈接。

結(jié)語(yǔ):Ruby不僅可以與用于Web應(yīng)用程序開(kāi)發(fā)的Rails框架一起使用。它也可以像腳本編程語(yǔ)言一樣強(qiáng)大。作為shell腳本的一個(gè)很好的替代品,它經(jīng)常被用來(lái)實(shí)現(xiàn)系統(tǒng)管理中的腳本需求。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

可以免费观看的毛片| 国产91精品久久久久久久网曝门| 国产青春久久久国产毛片| 成人在线国产精品| 日韩一区二区三区精品| 欧美日韩一级在线观看| 亚洲mv在线观看| 在线视频免费在线观看一区二区| 亚洲mm色国产网站| 一区二区三区午夜视频| 亚洲码无人客一区二区三区| 久久男人天堂| а√天堂资源地址在线下载| 亚洲综合小说网| 精品国产伦一区二区三| 国产白袜脚足j棉袜在线观看| 国产精品丝袜一区二区三区| 欧美日韩精品二区第二页| 中文乱码免费一区二区三区下载| 秋霞成人午夜鲁丝一区二区三区| 国产精品正在播放| 在线精品91av| 99久久综合狠狠综合久久止| 亚洲日本视频在线| 国产亚洲第一伦理第一区| 欧美综合社区国产| 中文字幕高清在线免费播放| 欧美激情中文字幕乱码免费| 久久精品国产电影| 中文字幕丰满人伦在线| 欧美在线不卡区| 国产视频123区| www.久久草| 日本韩国一区二区三区| 免费观看的成年网址| 亚洲日韩中文字幕在线播放| 国产婷婷一区二区三区| 久久久久97国产| 精品国产aⅴ| 香港欧美日韩三级黄色一级电影网站| 偷拍一区二区三区| 久久另类ts人妖一区二区| 成年人福利网站| 亚洲成人激情社区| 亚洲精品18在线观看| 国产大片一区二区| 国产一区二区免费在线观看| 久久久久久久国产视频| 57pao成人国产永久免费| 天天躁日日躁成人字幕aⅴ| 亚洲+小说+欧美+激情+另类| 欧美三日本三级三级在线播放| 免费看黄色三级| 成人免费观看视频大全| av免费在线观看网址| 九色成人免费视频| 国产精品久久777777毛茸茸| 日韩精品视频在线观看网址| 亚洲xx在线| 警花av一区二区三区| 国内自拍视频在线观看| 免费欧美激情| 91久久精品久久国产性色也91| 在线播放网站| 中文字幕视频一区二区三区久| 看女生喷水的网站在线观看| 亚洲欧洲视频| 中国日本在线视频中文字幕| 亚洲一区二区在线观看视频| 精品美女在线播放| 成人黄页在线观看| 亚洲欧美日韩网站| 麻豆一区二区三区在线观看| 成人h动漫精品| 六月天色婷婷| 日本一区二区三区在线观看视频| 亚洲免费影院| 四虎精品在永久在线观看| 国产日韩一区二区三区在线| 16—17女人毛片毛片| av资源中文在线| 亚洲精品一区二区| eeuss一区二区三区| 97久久精品午夜一区二区| 69亚洲精品久久久蜜桃小说| 欧美三级蜜桃2在线观看| 欧美日一区二区在线观看| 日本久久久久久久久久久久| 精品综合久久久| 久久午夜羞羞影院免费观看| 久久亚洲春色中文字幕| 天堂在线视频免费观看| 91手机视频在线| 欧美国产激情视频| 国产男女激情视频| 国产精品一 二 三| 国产传媒久久久| 亚洲自拍偷拍精品| 日韩影片在线观看| 99re热这里只有精品免费视频| 久久亚洲av午夜福利精品一区| 欧美日韩精品在线| 日韩精品无码一区二区三区久久久| 性色av免费观看| 久久不射中文字幕| 国产免费999| 国产精品视频不卡| 亚洲色成人网站www永久四虎| 亚洲图片激情小说| 久久米奇亚洲| 性欧美又大又长又硬| 久青草国产97香蕉在线视频| 欧美jizzhd精品欧美巨大免费| 日本电影亚洲天堂一区| 不卡一区二区在线| avav成人| 亚洲精品一区二区在线播放∴| 69视频在线| 视频免费观看| 无码小电影在线观看网站免费| www日韩tube| 精品一区二区国语对白| 91麻豆精品国产91| av免费看在线| 国产成人久久精品麻豆二区| 国内一区二区三区| 日本韩国欧美中文字幕| 在线播放你懂得| 国产精品露出视频| 日韩欧美精品在线| 精品伦理一区二区| 亚洲字幕av一区二区三区四区| xvideos入口| 亚洲成人激情小说| 黄色的视频在线观看免费| 日本在线视频网| 国产在线精品成人一区二区三区| 国产一区二区三区四区五区六区| 国产亚洲综合精品| 熟女人妻一区二区三区免费看| 91丝袜呻吟高潮美腿白嫩在线观看| 日韩中文字幕视频网| 亚洲色图网址| 香蕉视频免费在线播放| avhd101老司机| 蜜臀视频在线观看| 只有这里有精品| 97视频在线观看网站| 久久不射中文字幕| 日韩电影大全网站| 麻豆视频在线观看免费网站| 亚洲一区一卡| 可以看av的网址| 青青久久av北条麻妃海外网| 亚洲精选视频免费看| 国产chinese男男gaygay网站| 亚洲综合色丁香婷婷六月图片| 久久久精品网站| 欧美69wwwcom| 男人天堂手机在线| 成人一区二区三区视频在线观看| 亚洲三级在线观看视频| 亚洲色欧美另类| 超薄肉色丝袜脚交一区二区| 91九色porny在线| 亚洲精品字幕在线| 在线成人中文字幕| 亚洲精品中文字幕在线| 国产伦精品一区二区三毛| 日本一本中文字幕| 成人毛片老司机大片| 一区二区三区四区高清视频| 国产成人一区二区三区影院在线| 久久久久亚洲av成人毛片韩| 精品亚洲aⅴ在线观看| 九九热视频这里只有精品| 亚洲成人第一网站| 妺妺窝人体色777777| 日本黄色免费视频| 亚洲熟女乱色一区二区三区久久久| 亚洲网站在线| 45www国产精品网站| 久久综合伊人77777麻豆| 亚洲一区国产视频| 亚洲欧洲视频在线| 亚洲美女色播| 天堂中文资源在线观看| 最新中文字幕av专区| 佐佐木明希av| 成人免费观看在线网址| 国产精品一级二级三级| 一级少妇精品久久久久久久| 超碰成人97| 亚州av综合色区无码一区| 国产精品理人伦一区二区三区| 青春草免费在线视频| 国产美女扒开尿口久久久| 黄色大片中文字幕| 国产中年熟女高潮大集合| 你懂的视频在线观看| 中文字幕一二三| jvid福利写真一区二区三区| 天天色综合6| 一本一生久久a久久精品综合蜜| 亚洲综合免费观看高清完整版| 国产秀色在线www免费观看| 午夜cr在线观看高清在线视频完整版| 老女人av在线| 日韩午夜免费视频| 日本一级特级毛片视频| 亚洲精品乱码久久久久久| 亚洲成人天堂| 福利在线视频导航| 一级毛片免费视频| 亚洲免费专区| 91国拍精品国产粉嫩亚洲一区| 免费成人小视频| www.成年人| 国产精品毛片久久久久久久| heyzo高清在线| 人体精品一二三区| 国产精品亚洲人成在99www| free性欧美hd另类精品| 亚洲第一精品电影| 久久久久久亚洲精品不卡| 精品无人区乱码1区2区3区免费| av一区二区三区免费观看| 综合网日日天干夜夜久久| 亚洲人视频在线观看| 精品一区二区久久久久久久网站| 五月天亚洲综合小说网| 美女黄a一级视频| 久久国产精品国产精品| 国产在线精品一区二区| 久久精品网址| 国产美女主播在线观看| av在线播放一区二区三区| 国产一区二区在线播放视频| 电影天堂爱爱爱爱| 欧美激情成人动漫| 骚虎视频欧美| 毛茸茸free性熟hd| 色偷偷噜噜噜亚洲男人的天堂| 日本网站在线看| 国产卡二和卡三的视频| 日韩欧美在线一区| 日本美女视频网站| av在线你懂的| 国产精品久久久久久久久久新婚| 这里只有精品国产| www.999av| 日韩免费特黄一二三区| 日韩av在线播放观看| 中文字幕日韩在线观看| 18av视频| 日本一区二区三区在线视频| 日韩国产欧美三级| 一级片黄色录像| 亚洲高清在线观看一区| 天天干天天干天天干| 最近日本中文字幕| 天天爱天天操天天干| 国产精品久久久久久超碰| 亚洲视频网在线直播| 一区二区冒白浆视频| 日韩不卡免费高清视频| 日韩一级二级三级精品视频| 中文字幕在线一区二区三区| 亚洲区第一页| 亚洲主播在线播放| 国产日韩欧美高清免费| 99精彩视频| 在线精品视频播放| 一区在线播放视频| 亚洲中字黄色| 影音先锋电影在线观看| 欧美三级视频网站| 岛国在线最新| 手机版av在线| 欧美一区日韩一区| 久久久久久久黄色片| 日本欧美一级片| 久久一二三国产| 网站在线你懂的| 亚洲欧美日韩精品久久久久| 无人码人妻一区二区三区免费| 日韩理论片av| 嫩模私拍啪啪| 日韩欧美亚洲区| 亚洲一区中文在线| 亚洲一区二区伦理| 欧美日韩中文视频| 精品婷婷色一区二区三区蜜桃| 粉嫩av免费一区二区三区| 国产又粗又黄又爽的视频| 亚洲欧美在线aaa| 天天撸天天射| 瑜伽美女视频| 久久国产精品99国产| 久久久久久久久国产精品| 视频一区国产精品| 精品亚洲成a人片在线观看| 桃乃木香奈和黑人aⅴ在线播放| 日本成人中文字幕| 久久精品免费播放| 欧美日韩性生活片| 久久久久久久久福利| 亚洲已满18点击进入在线看片| 国产精品国产三级国产| 国产成人精品福利| 亚洲色诱最新| 久中文字幕一区| 6699久久国产精品免费| 国产另类自拍| 国产精品69精品一区二区三区| 精品久久久久久久久久ntr影视| 精品国产一区二区三区香蕉沈先生| 一级日本不卡的影视| 性18欧美另类| 精品国产精品网麻豆系列| 欧美婷婷六月丁香综合色| 3d动漫啪啪精品一区二区免费| 亚洲精品一区二区三区蜜桃| 久久精品影视大全| 91超碰国产在线| 男女性色大片免费观看一区二区| japansex久久高清精品| 国产人成在线视频|