精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Python自動化運維實戰:從Linux系統中收集數據

新聞 前端 自動化
使用Linux命令可以查看當前系統狀態和運行狀況的相關數據。然而,單個Linux命令和應用程序只能獲取某一方面的系統數據。

 使用Linux命令可以查看當前系統狀態和運行狀況的相關數據。然而,單個Linux命令和應用程序只能獲取某一方面的系統數據。我們需要利用Python模塊將這些詳細信息反饋給管理員,同時生成一份有用的系統報告。

我們將報告分為兩部分。第一部分是使用platform模塊獲取的一般系統信息,第二部分是硬件資源,如CPU和內存等。

首先從導入platform模塊開始,它是一個內置的Python庫。platform模塊中有很多方法,它們可用來獲取當前運行Python命令的操作系統的詳細信息。

  1. import platform 
  2. system = platform.system() 
  3. print(system) 

上述代碼的運行結果如下。

Python自動化運維實戰:從Linux系統中收集數據

該腳本返回當前系統的類型,同樣的腳本在Windows系統上運行會得到不同的結果。當它在Windows系統上運行時,輸出結果就變成Windows。

Python自動化運維實戰:從Linux系統中收集數據

常用的函數uname()和Linux命令(uname -a)的功能一樣:獲取機器的主機名、體系結構和內核信息,但是uname()采用了結構化格式,以便通過序號來引用相應的值。

  1. import platform 
  2. from pprint import pprint 
  3. uname = platform.uname() 
  4. pprint(uname) 

上述代碼的運行結果如下。

Python自動化運維實戰:從Linux系統中收集數據

system()方法獲得的第一個值是系統類型,第二個是當前機器的主機名。

使用PyCharm中的自動補全功能可以瀏覽并列出platform模塊中的所有可用函數,按Ctrl + Q組合鍵就可以查看每個函數的文檔(見下圖)。

Python自動化運維實戰:從Linux系統中收集數據

然后,使用Linux文件提供的信息列出Linux機器中的硬件配置。這里需要記住,在/proc/目錄下可以訪問CPU、內存以及網絡等相關信息;我們將讀取這些信息并在Python中使用標準的open()函數訪問它們。查看/proc/目錄可以獲取更多信息。

下面給出具體的腳本。

首先,導入platform模塊,它僅在當前任務中使用。

  1. #!/usr/bin/python 
  2. __author__ = "Bassim Aly" 
  3. __EMAIL__ = "basim.alyy@gmail.com" 
  4.  
  5. import platform 

然后,定義函數。以下代碼包含了本次練習中需要的兩個函數——check_feature()和get_value_from_string()。

  1. def check_feature(feature,string): 
  2.     if feature in string.lower(): 
  3.         return True 
  4.     else
  5.         return False 
  6. def get_value_from_string(key,string): 
  7.     value = "NONE" 
  8.     for line in string.split("\n"): 
  9.         if key in line: 
  10.             value = line.split(":")[1].strip() 
  11.     return value 

最后是Python腳本的主要部分,其中包括用來獲取所需信息的Python代碼。

  1. cpu_features = [] 
  2. with open('/proc/cpuinfo') as cpus: 
  3.     cpu_data = cpus.read() 
  4.     num_of_cpus = cpu_data.count("processor"
  5.     cpu_features.append("Number of Processors: {0}".format(num_of_cpus)) 
  6.     one_processor_data = cpu_data.split("processor")[1
  7.     print one_processor_data 
  8.     if check_feature("vmx",one_processor_data): 
  9.         cpu_features.append("CPU Virtualization: enabled"
  10.     if check_feature("cpu_meltdown",one_processor_data): 
  11.         cpu_features.append("Known Bugs: CPU Metldown "
  12.     model_name = get_value_from_string("model name ",one_processor_data) 
  13.     cpu_features.append("Model Name: {0}".format(model_name)) 
  14.  
  15.     cpu_mhz = get_value_from_string("cpu MHz",one_processor_data) 
  16.     cpu_features.append("CPU MHz: {0}".format((cpu_mhz))) 
  17.  
  18. memory_features = [] 
  19. with open('/proc/meminfo') as memory: 
  20.     memory_data = memory.read() 
  21.     total_memory = get_value_from_string("MemTotal",memory_data).replace("kB",""
  22.     free_memory = get_value_from_string("MemFree",memory_data).replace("kB",""
  23.     swap_memory = get_value_from_string("SwapTotal",memory_data).replace("kB",""
  24.     total_memory_in_gb = "Total Memory in GB: 
  25. {0}".format(int(total_memory)/1024
  26.     free_memory_in_gb = "Free Memory in GB: 
  27. {0}".format(int(free_memory)/1024
  28.     swap_memory_in_gb = "SWAP Memory in GB: 
  29. {0}".format(int(swap_memory)/1024
  30.     memory_features = 
  31. [total_memory_in_gb,free_memory_in_gb,swap_memory_in_gb] 

這部分代碼用來輸出從上一節的代碼中獲取的信息。

  1. print("============System Information============"
  2.  
  3. print(""
  4. System Type: {0
  5. Hostname: {1
  6. Kernel Version: {2
  7. System Version: {3
  8. Machine Architecture: {4
  9. Python version: {5
  10. """.format(platform.system(), 
  11.            platform.uname()[1], 
  12.            platform.uname()[2], 
  13.            platform.version(), 
  14.            platform.machine(), 
  15.            platform.python_version())) 
  16.  
  17. print("============CPU Information============"
  18. print("\n".join(cpu_features)) 
  19.  
  20. print("============Memory Information============"
  21. print("\n".join(memory_features)) 

在上面的例子中我們完成了以下任務。

(1)打開/proc/cpuinfo并讀取其內容,然后將結果存儲在cpu_data中。

(2)使用字符串函數count()統計文件中關鍵字processor的數量,從而得知機器上有多少個處理器。

(3)獲取每個處理器支持的選項和功能,我們只需要讀取其中一個處理器的信息(因為通常所有處理器的屬性都一樣)并傳遞給check_feature()函數。該方法的一個參數是我們期望處理器支持的功能,另一個參數是處理器的屬性信息。如果處理器的屬性支持第一個參數指定的功能,該方法返回True。

(4)由于處理器的屬性數據以鍵值對的方式呈現,因此我們設計了get_value_from_string()方法。該方法根據輸入的鍵名通過迭代處理器屬性數據來搜索對應的值,然后根據冒號拆分返回的鍵值對,以獲取其中的值。

(5)使用append()方法將所有值添加到cpu_feature列表中。

(6)對內存信息重復相同的操作,獲得總內存、空閑內存和交換內存的大小。

(7)使用platform的內置方法(如system()、uname()和python_version())來獲取系統的相關信息。

(8)輸出包含上述信息的報告。

腳本輸出如下圖所示。

Python自動化運維實戰:從Linux系統中收集數據

 

另一種呈現數據的方式是利用第5章中介紹的Matplotlib庫,可視化隨時間變化的數據。

11.1.1 通過郵件發送收集的數據

從上一節生成的報告中可以看到系統中當前的資源。在本節中,我們調整腳本,增強其功能,比如,將這些信息通過電子郵件發送出去。對于網絡操作中心(Network Operation Center,NOC)團隊來說,這個功能非常有用。當某個特殊事件(如HDD故障、高CPU或丟包)發生時,他們希望被監控系統能夠自動給他們發送郵件。Python有一個內置庫smtplib,它利用簡單郵件傳輸協議(Simple Mail Transfer Protocol,SMTP)從郵件服務器中發送和接收電子郵件。

使用該功能要求在計算機上安裝本地電子郵件服務器,或者能夠使用免費的在線電子郵件服務(如Gmail或Outlook)。在這個例子中我們將使用SMTP登錄Gmail網站,將數據通過電子郵件發送出去。

接下來,開始動手修改腳本,為其添加SMTP功能。

將所需模塊導入Python,這次需要導入smtplib和platform。

  1. #!/usr/bin/python 
  2. __author__ = "Bassem Aly" 
  3. __EMAIL__ = "basim.alyy@gmail.com" 
  4.  
  5. import smtplib 
  6. imp        ort platform 

下面是check_feature()和get_value_from_string()這兩個函數的代碼。

  1. def check_feature(feature,string): 
  2.     if feature in string.lower(): 
  3.         return True 
  4.     else
  5.         return False 
  6.  
  7. def get_value_from_string(key,string): 
  8.     value = "NONE" 
  9.     for line in string.split("\n"): 
  10.         if key in line: 
  11.             value = line.split(":")[1].strip() 
  12.     return value 

最后是Python腳本的主體,其中包含了獲取所需信息的Python代碼。

  1. cpu_features = [] 
  2. with open('/proc/cpuinfo') as cpus: 
  3.     cpu_data = cpus.read() 
  4.     num_of_cpus = cpu_data.count("processor"
  5.     cpu_features.append("Number of Processors: {0}".format(num_of_cpus)) 
  6.     one_processor_data = cpu_data.split("processor")[1
  7.     if check_feature("vmx",one_processor_data): 
  8.         cpu_features.append("CPU Virtualization: enabled"
  9.     if check_feature("cpu_meltdown",one_processor_data): 
  10.         cpu_features.append("Known Bugs: CPU Metldown "
  11.     model_name = get_value_from_string("model name ",one_processor_data) 
  12.     cpu_features.append("Model Name: {0}".format(model_name)) 
  13.  
  14.     cpu_mhz = get_value_from_string("cpu MHz",one_processor_data) 
  15.     cpu_features.append("CPU MHz: {0}".format((cpu_mhz))) 
  16.  
  17. memory_features = [] 
  18. with open('/proc/meminfo') as memory: 
  19.     memory_data = memory.read() 
  20.     total_memory = get_value_from_string("MemTotal",memory_data).replace("kB",""
  21.     free_memory = get_value_from_string("MemFree",memory_data).replace("kB",""
  22.     swap_memory = get_value_from_string("SwapTotal",memory_data).replace("kB",""
  23.     total_memory_in_gb = "Total Memory in GB: 
  24. {0}".format(int(total_memory)/1024
  25.     free_memory_in_gb = "Free Memory in GB: 
  26. {0}".format(int(free_memory)/1024
  27.     swap_memory_in_gb = "SWAP Memory in GB: 
  28. {0}".format(int(swap_memory)/1024
  29.     memory_features = 
  30. [total_memory_in_gb,free_memory_in_gb,swap_memory_in_gb] 
  31.  
  32. Data_Sent_in_Email = "" 
  33. Header = """From: PythonEnterpriseAutomationBot <basim.alyy@gmail.com> 
  34. To: To Administrator <basim.alyy@gmail.com> 
  35. Subject: Monitoring System Report 
  36.  
  37. ""
  38. Data_Sent_in_Email += Header 
  39. Data_Sent_in_Email +="============System Information============" 
  40.  
  41. Data_Sent_in_Email +=""
  42. System Type: {0
  43. Hostname: {1
  44. Kernel Version: {2
  45. System Version: {3
  46. Machine Architecture: {4
  47. Python version: {5
  48. """.format(platform.system(), 
  49.            platform.uname()[1], 
  50.            platform.uname()[2], 
  51.            platform.version(), 
  52.            platform.machine(), 
  53.            platform.python_version()) 
  54.  
  55. Data_Sent_in_Email +="============CPU Information============\n" 
  56. Data_Sent_in_Email +="\n".join(cpu_features) 
  57.  
  58. Data_Sent_in_Email +="\n============Memory Information============\n" 
  59. Data_Sent_in_Email +="\n".join(memory_features) 

下面給出連接到gmail服務器所需的信息。

  1. fromaddr = 'yyyyyyyyyyy@gmail.com' 
  2. toaddrs = 'basim.alyy@gmail.com' 
  3. username = 'yyyyyyyyyyy@gmail.com' 
  4. password = 'xxxxxxxxxx' 
  5. server = smtplib.SMTP('smtp.gmail.com:587'
  6. server.ehlo() 
  7. server.starttls() 
  8. server.login(username,password) 
  9.  
  10. server.sendmail(fromaddr, toaddrs, Data_Sent_in_Email) 
  11. server.quit() 

在前面的例子中實現了以下功能。

(1)第一部分與上一個例子相同,只是沒有將數據輸出到終端,而是將其添加到Data_Sent_in_Email變量中。

(2)Header變量表示電子郵件標題,包括發件人地址、收件人地址和電子郵件主題。

(3)使用smtplib模塊內的SMTP()類連接到公共Gmail SMTP服務器并完成TTLS連接。這也是連接Gmail服務器的默認方法。我們將SMTP連接保存在server變量中。

(4)使用login()方法登錄服務器,最后使用sendmail()函數發送電子郵件。sendmail()有3個輸入參數——發件人、收件人和電子郵件正文。

(5)關閉與服務器的連接。

腳本輸出如下圖所示。

Python自動化運維實戰:從Linux系統中收集數據

11.1.2 使用time和date模塊

到目前為止,我們已經能將從服務器中生成的自定義數據通過電子郵件發送出去。但由于網絡擁塞、郵件系統故障或任何其他問題,生成的數據與電子郵件的傳遞時間之間可能存在時間差,因此我們不能根據收到電子郵件的時間來推算實際生成數據的時間。

出于上述原因,需要使用Python中的datetime模塊來獲取被監控系統上的當前時間。該模塊可以使用各種字段(如年、月、日、小時和分鐘)來格式化時間。

除此之外,datetime模塊中的datetime實例實際上是Python中獨立的對象(如int、string、boolean等),因此datetime實例在Python中有自己的屬性。

使用strftime()方法可以將datetime對象轉換為字符串。該方法使用下表中的格式符號來格式化時間。

Python自動化運維實戰:從Linux系統中收集數據

修改腳本,將下面的代碼段添加到代碼中。

  1. from datetime import datetime 
  2. time_now = datetime.now() 
  3. time_now_string = time_now.strftime("%Y-%m-%d %H:%M:%S"
  4. Data_Sent_in_Email += "====Time Now is {0}====\n".format(time_now_string) 

在這段代碼中,首先從datetime模塊中導入datetime類。然后使用datetime類和now()函數創建time_now對象,該函數返回系統的當前時間。最后使用帶格式化符號的strftime()來格式化時間并將其轉換為字符串,用于輸出(注意,該對象包含了datetime對象)。

腳本的輸出如下。

Python自動化運維實戰:從Linux系統中收集數據

11.1.3 定期運行腳本

在腳本的最后一步,設置運行腳本的時間間隔,它可以是每天、每周、每小時或某個特定的時間。該功能使用了Linux系統上的cron服務。cron用來調度周期性的重復事件,例如,清理目錄、備份數據庫、轉儲日志或任何其他事件。

使用下面的命令可以查看當前計劃中的任務。

  1. crontab -l 

編輯crontab需要使用-e選項。第一次運行cron時,系統會提示你選擇自己喜歡的編輯器(nano或vi)。

典型的crontab由5顆星組成,每顆星代表一個時間項(見下表)。

Python自動化運維實戰:從Linux系統中收集數據

如果需要每周五晚上9點運行某個任務,可以使用下面的配置。

  1. 0 21 * * 5 /path/to/command 

如果需要每天0點運行某條命令(比如備份),使用這個配置。

  1. 0 0 * * * /path/to/command 

另外,還可以讓cron以某個特定時間間隔運行。如果需要每5min運行一次命令,可以使用這個配置。

  1. */5 * * * * /path/to/command 

回到腳本,如果我們期望它每天早上7:30運行,使用這個配置。

  1. 30 7 * * * /usr/bin/python /root/Send_Email.py 

最后,記得在退出之前保存cron配置。

最好使用絕對路徑的Linux命令,而不是相對路徑,以避免出現任何潛在的問題。

 

 

責任編輯:張燕妮 來源: 今日頭條
相關推薦

2013-04-16 14:55:21

自動化運維Puppet實戰

2013-04-11 17:31:28

運維自動化Cobbler

2012-10-22 14:54:48

2014-08-04 10:10:35

IT運維自動化運維

2018-06-23 07:31:05

2017-03-22 18:30:44

Linux運維自動化ansible

2017-03-22 16:31:30

Linux運維自動化ansible

2017-10-13 13:14:35

互聯網

2024-06-11 10:41:14

2011-09-01 10:22:03

Cobbler運維自動化

2016-09-23 09:22:12

2012-11-20 17:22:57

2015-10-08 10:55:23

云服務自動化運維 ANSIBLE

2018-07-26 13:50:37

IT架構運維

2014-09-22 11:24:18

運維

2020-11-06 08:43:21

AIOps運維DevOps

2014-05-16 14:31:55

運維自動化Cobbler

2014-03-12 15:04:08

資產管理系統cmdb自動化運維

2017-01-17 16:12:26

數據中心運維技術故障

2018-05-02 11:16:27

數據中心
點贊
收藏

51CTO技術棧公眾號

爽爽爽爽爽爽爽成人免费观看| 久久精品久久久精品美女| 欧美va亚洲va| 成年人黄色片视频| 精精国产xxxx视频在线| 喷水一区二区三区| 欧美精品免费看| 素人fc2av清纯18岁| 日韩城人网站| 疯狂做受xxxx欧美肥白少妇| 亚洲精品日韩在线观看| 丰满人妻一区二区| 蜜桃视频在线一区| 久久久久久com| 手机看片福利视频| 大型av综合网站| 欧美视频第二页| 欧美激情视频免费看| 天堂中文а√在线| 91丨国产丨九色丨pron| 成人精品一区二区三区| 日本三级小视频| 欧美私人啪啪vps| 最近2019中文字幕第三页视频| 国产真人无码作爱视频免费| 日韩三级免费| 成人欧美一区二区三区在线播放| 国产精品久久久91| 青青草手机在线观看| 成人免费看片39| 日韩经典第一页| 亚洲成a人片在线www| 一区二区三区| 欧美三级日韩三级| 国产一区二区视频免费在线观看 | 在线中文字幕第一页| 久久一区二区三区国产精品| 成人免费91在线看| 国产熟女一区二区三区四区| 日韩av在线免费观看不卡| 国内自拍欧美激情| 久久免费在线观看视频| 中文字幕一区二区精品区| 中文日韩在线视频| 亚洲精品成人av久久| 婷婷五月色综合香五月| 亚洲精品久久久久久久久久久| 成人午夜视频免费在线观看| 国产美女精品写真福利视频| 亚洲第一在线综合网站| 日本黄网站色大片免费观看| 国产一二三区在线观看| 中文字幕亚洲区| 一区二区三区四区在线视频| 日本成人网址| 亚洲精品国产无天堂网2021| 少妇久久久久久被弄到高潮| 在线黄色网页| 亚洲一区在线看| 日本精品久久久久久久久久| ririsao久久精品一区| 亚洲国产成人av好男人在线观看| 日韩欧美精品久久| 成人免费黄色网页| 日本一区二区三级电影在线观看| 亚洲综合国产精品| 国产乱人乱偷精品视频a人人澡| 一区二区三区福利| 欧美在线视频一区二区| 亚洲 国产 日韩 欧美| 蜜桃久久久久久久| 2019国产精品视频| 朝桐光av在线一区二区三区| 成人动漫一区二区| 美国av一区二区三区| 国产香蕉在线| 亚洲视频在线观看三级| 9191国产视频| 色偷偷色偷偷色偷偷在线视频| 亚洲免费毛片网站| 激情五月婷婷六月| 僵尸再翻生在线观看| 在线视频亚洲一区| 久久久久久国产精品日本| 97久久亚洲| 亚洲视频在线播放| 亚洲一级生活片| 日韩午夜免费视频| 国产精品视频26uuu| 99久久国产热无码精品免费| 波多野结衣在线aⅴ中文字幕不卡| 国产成人精品免高潮在线观看| 星空大象在线观看免费播放| 色婷婷狠狠五月综合天色拍| 一区二区三区动漫| 日本老熟俱乐部h0930| 国产欧美91| 国产噜噜噜噜噜久久久久久久久| 久久久久久av无码免费看大片| 国产一区二区三区久久久久久久久| 欧美成人免费播放| 欧美亚韩一区二区三区| 久草在线在线精品观看| 久久精品一区二区三区不卡免费视频| 91精品国产乱码久久| 播五月开心婷婷综合| 天堂资源在线亚洲视频| av中文字幕电影在线看| 欧美日韩一区二区在线观看视频| 无需播放器的av| 成人免费直播在线| 久久激情视频久久| 亚洲 欧美 视频| 国产精品综合在线视频| 日韩三级在线播放| 欧美xxxhd| 日韩精品一区二区三区中文精品| 亚洲av综合色区无码另类小说| 国产一精品一av一免费爽爽| 亚洲人成网站777色婷婷| 亚洲色婷婷一区二区三区| 水野朝阳av一区二区三区| 成人欧美视频在线| 老司机午夜在线| 欧洲人成人精品| 日本xxx在线播放| 欧美日韩国产免费观看| 国产综合色香蕉精品| 黄视频在线播放| 欧美日韩国产在线| 国产69视频在线观看| 中文精品久久| 91亚洲午夜在线| 天堂аⅴ在线地址8| 欧美在线观看禁18| 亚洲精品视频久久久| 日韩一级精品| 国产亚洲一区二区三区在线播放| 酒色婷婷桃色成人免费av网| 性欧美疯狂xxxxbbbb| 国产ts在线观看| 国产精品久久久久一区二区三区厕所| 欧美国产视频一区二区| 国产成人精品一区二区无码呦| 成人黄色av电影| 成年女人18级毛片毛片免费| 欧美第一在线视频| 久久成人亚洲精品| 国产99视频在线| 亚洲靠逼com| 日本中文字幕在线不卡| 一区二区三区在线| 51国偷自产一区二区三区| 99自拍视频在线观看| 日韩你懂的电影在线观看| 欧美片一区二区| 成人一区在线看| 91成人在线观看喷潮教学| 人人精品亚洲| 国产精品户外野外| 日本中文字幕在线2020| 7777精品伊人久久久大香线蕉完整版 | 欧美xxxx做受欧美.88| 国产毛片在线视频| 亚洲精品少妇30p| 韩国一区二区三区四区| 激情久久五月| 老牛影视免费一区二区| 欧美与亚洲与日本直播| 久久久国产影院| 国精品人妻无码一区二区三区喝尿 | 日韩精品国内| 久久亚洲精品中文字幕| 成年无码av片在线| 黄色av网站免费在线观看| 狠狠色狠狠色综合日日小说| 91视频在线网站| 久久99国产精品久久| 国产91在线亚洲| 亚洲裸色大胆大尺寸艺术写真| 欧美夫妻性生活xx| 天堂网在线中文| 欧美亚洲一区二区在线| 国产人妻精品一区二区三区不卡| 蜜桃视频一区二区三区| 91国在线高清视频| 日韩动漫一区| 国产一区二区视频在线观看| 国产美女情趣调教h一区二区| 欧美人与性动xxxx| 国产一级做a爱免费视频| 国产亚洲欧美色| 无码人妻一区二区三区在线视频| 97在线精品| 国产日韩精品久久| 图片一区二区| 日本精品在线视频| 羞羞网站在线免费观看| 一本一本久久a久久精品牛牛影视| 中文字幕在线观看视频网站| 国产精品福利一区二区三区| 人妻av一区二区| 激情五月婷婷综合网| 中国丰满人妻videoshd| 中文精品久久| 亚洲人体一区| 天堂资源在线亚洲| 99re6热在线精品视频播放速度| 在线观看h网| 国产亚洲精品日韩| 色一情一乱一乱一区91av| 欧美日韩一区三区四区| 99精品视频99| 亚洲一区二区在线免费观看视频| 亚洲色图欧美日韩| 激情伊人五月天久久综合| www.日本xxxx| 中文在线不卡| 欧美这里只有精品| 亚洲乱码免费伦视频| 视频一区亚洲| 综合伊思人在钱三区| 国产免费高清一区| 日韩中文字幕无砖| 成人妇女免费播放久久久| 另类图片综合电影| 38少妇精品导航| 爱情岛论坛亚洲品质自拍视频网站| 亚洲精品www久久久| 在线观看中文字幕2021| 91久久一区二区| 天堂а√在线中文在线新版| 一区二区三区中文字幕在线观看| 亚洲激情 欧美| 国产美女精品人人做人人爽| 伊人网在线综合| 美女网站在线免费欧美精品| 日韩在线第三页| 六月天综合网| 久久久久久久久久久免费视频| 91综合网人人| 一本久道久久综合| 久久国产精品亚洲人一区二区三区 | 欧美性受xxx黑人xyx性爽| 激情成人在线视频| 日韩女优在线观看| 午夜精品一区二区三区免费视频| 欧美黄色一级生活片| 91麻豆蜜桃一区二区三区| 91丨porny丨对白| 91小视频在线观看| 9.1成人看片免费版| 国产区在线观看成人精品| 中文字幕伦理片| 国产精品久久久久久亚洲毛片| 精品影片一区二区入口| 波多野结衣中文字幕一区| 欧美性xxxx图片| 久久久久久久久一| 亚洲精品一区二区三区影院忠贞| 国产精品99久久久久久久vr | 亚洲爱爱爱爱爱| 中文字幕在线观看高清| 欧美日韩国产123区| 中文字幕乱码中文字幕| 欧美精品粉嫩高潮一区二区| 99产精品成人啪免费网站| 日韩视频在线你懂得| 少妇人妻一区二区| 亚洲欧美日韩网| 日本在线观看www| 久久99视频免费| 偷拍自拍在线看| 国产精品欧美一区二区| 麻豆一区在线| 精品日韩美女| 成人3d精品动漫精品一二三| 992tv成人免费观看| 亚洲三级国产| 韩国视频一区二区三区| 国产又粗又猛又爽又黄91精品| 免费涩涩18网站入口| 国产综合成人久久大片91| 亚洲少妇中文字幕| 久久一区二区三区国产精品| 国产又色又爽又高潮免费| 亚洲尤物在线视频观看| 国产一区免费看| 日韩一级精品视频在线观看| 欧美黄色免费网站| 88xx成人永久免费观看| 亚洲一区美女视频在线观看免费| 亚州欧美在线| 精品视频一区二区| 欧美3p在线观看| 欧美日韩亚洲第一| 国产精品自拍在线| wwwwxxxx国产| 亚洲综合视频在线观看| 在线视频1卡二卡三卡| 亚洲电影天堂av| 国产精品高潮呻吟久久av无限| 欧美一区 二区 三区| 97netav| 国产不卡一二三区| 国产视频在线观看网站| 美日韩一区二区| 欧美色图亚洲激情| 国产a亚洲精品| 亚洲国产成人精品视频| 中文在线观看免费高清| 精品国产一区二区三区av性色| 国产又色又爽又黄又免费| 亚洲精品国产精品自产a区红杏吧 亚洲精品国产精品乱码不99按摩 亚洲精品国产精品久久清纯直播 亚洲精品国产精品国自产在线 | a一区二区三区亚洲| 国产精品一区在线播放| 久久久久av| 亚洲天堂网一区| 91论坛在线播放| 久久精品国产亚洲av无码娇色| 婷婷国产在线综合| 91成品人影院| 亚洲天天在线日亚洲洲精| 欧美久久天堂| 99在线国产| 欧美另类专区| 午夜免费一级片| 中文字幕一区二区三区色视频| 欧美成人黄色网| 69堂亚洲精品首页| 国产三级在线免费| 97国产一区二区精品久久呦 | 黄色视屏免费在线观看| 热久久这里只有| 国产主播性色av福利精品一区| 欧美日韩一区二| 国产精品色网| 强迫凌虐淫辱の牝奴在线观看| 久久精品欧美日韩精品| 日韩欧美一级视频| 亚洲精品一区二区三区四区高清 | 欧美日韩xxx| 色婷婷成人网| 在线观看日本一区| 另类人妖一区二区av| 在线观看国产精品一区| 欧美日韩亚洲一区二区三区| 日色在线视频| 国产999精品久久久| 久久91精品| 一级在线免费视频| 欧美国产97人人爽人人喊| 中国女人一级一次看片| 中文日韩在线视频| 亚洲福利影视| 欧美 国产 精品| 丁香五精品蜜臀久久久久99网站| 无码人妻丰满熟妇啪啪欧美| 欧美综合色免费| 色综合久久久久综合一本到桃花网| 国内外成人免费激情在线视频| 8av国产精品爽爽ⅴa在线观看| 99久久免费国| 日韩亚洲在线| 国产美女永久免费无遮挡| 欧美色综合影院| 福利在线视频网站| 国产高清在线一区| 99在线|亚洲一区二区| 永久免费成人代码| 欧美性xxxxxxxx| 成人在线免费看片| 国产精品一区二区免费| 石原莉奈在线亚洲三区| 国产喷水在线观看| 日韩欧美一二三四区| 欧美激情网站| 一个色的综合| 国产成人精品影院| 六月丁香在线视频| 色噜噜亚洲精品中文字幕| 亚洲精品午夜| 欧美激情成人网| 《视频一区视频二区| 天堂网在线观看视频| 国产日韩综合一区二区性色av| 欧美色爱综合| 国产精品19p| 福利一区福利二区微拍刺激| 尤物视频在线免费观看| 国产 高清 精品 在线 a| 久久一日本道色综合久久| 精品人妻伦九区久久aaa片| 国产婷婷成人久久av免费高清 | 国产98在线| 亚洲最大成人在线| 久久久www| 久久影院一区二区| 亚洲午夜精品久久久久久久久久久久| 午夜影院在线播放|