精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日韩在线观看免费高清完整版| 亚洲人成精品久久久久| 国产成人一区三区| 日本黄区免费视频观看| 136福利精品导航| 色妞www精品视频| 亚洲国产精品女人| 涩涩视频在线观看免费| 国内精品伊人久久久久av一坑| 久久全球大尺度高清视频| 欧美老女人性生活视频| 电影一区二区在线观看| 欧美日韩日日骚| 国产一区二区网| 国产在线观看a视频| 2017欧美狠狠色| 痴汉一区二区三区| 一本大道伊人av久久综合| 亚洲人成毛片在线播放女女| 日韩综合视频在线观看| 精品人妻一区二区免费视频| 96sao精品免费视频观看| 日韩欧美中文字幕在线播放| 亚洲精品一区二区三区蜜桃久| 亚洲欧美另类视频| 国产在线一区观看| 国产精品一区二区久久久| 国产成人福利视频| 婷婷精品国产一区二区三区日韩 | 国产精品视频二区三区| 成人午夜在线免费| 91在线视频一区| 五月婷婷丁香在线| 国产精品日韩精品欧美精品| 欧美日韩国产成人| 91麻豆精品成人一区二区| 日本久久黄色| 国产亚洲精品美女久久久久| 国产中文字幕一区二区| 国产精品99久久免费观看| 欧美日韩一区二区三区在线看| 欧美日韩精品在线一区二区 | 亚洲精选视频免费看| 久久综合九色欧美狠狠| 免费看av毛片| 成人在线综合网站| 日本一区二区在线播放| 日本韩国精品在线| 18成人免费观看网站下载| 国产精品高清无码| 老司机午夜精品视频在线观看| 成人高清电影网站| 性久久久久久| 色综合久久88| 精品国产精品三级精品av网址| 日本免费中文字幕在线| 麻豆亚洲精品| 琪琪亚洲精品午夜在线| 欧美日韩综合在线观看| 久久婷婷中文字幕| 日本免费不卡| 91丝袜高跟美女视频| 正在播放亚洲1区| 韩国女主播成人在线| 欧美日韩在线视频免费观看| 性色av无码久久一区二区三区| 亚洲图片欧洲图片日韩av| 亚洲天堂免费观看| 亚洲视频一区二区免费在线观看| 亚洲欧美日韩国产一区| 欧美v国产在线一区二区三区| 亚洲18在线看污www麻豆| 久久精品超碰| 欧美亚洲动漫精品| 黄色一级片免费的| 久久精品无码人妻| 亚洲人成精品久久久| 亚洲色图欧美制服丝袜另类第一页| 熟女俱乐部一区二区| 波多野结衣在线观看一区二区三区| 在线播放国产精品| 精品国产欧美日韩不卡在线观看| 国产精品sm| 91成人性视频| 一级黄色大片免费| 国产精品色综合| 日韩啪啪电影网| 欧美大肥婆大肥bbbbb| 国产在线观看99| 老司机精品福利视频| 成人精品一区二区三区电影免费 | 亚洲影视中文字幕| 欧美性在线观看| 亚洲区自拍偷拍| 久久久久蜜桃| 国模吧一区二区| www色aa色aawww| 国产又大又硬又粗| 黄色软件在线观看| **性色生活片久久毛片| 免费人成自慰网站| 国产电影一区二区三区爱妃记| 制服丝袜亚洲播放| 国产精品嫩草av| 亚洲精品二区三区| 日韩免费在线播放| www.我爱av| 国产人妖乱国产精品人妖| 日本福利视频在线观看| 青草在线视频| 欧美日韩日本国产亚洲在线 | 成人aaaa免费全部观看| 韩日精品中文字幕| 一本久道久久综合无码中文| 99精品热视频| 人人妻人人澡人人爽欧美一区 | 欧美精品国产一区二区| 国产精品美女主播在线观看纯欲| 手机av在线免费观看| 国产精品久久二区二区| 免费观看精品视频| 韩国女主播一区二区三区| 精品国内亚洲在观看18黄| 老熟妇仑乱一区二区av| www.激情成人| 少妇一晚三次一区二区三区| 久久av日韩| 欲色天天网综合久久| 久久国产精品系列| 成人h精品动漫一区二区三区| 干日本少妇视频| 美女久久久久久| 中文字幕亚洲欧美日韩在线不卡| 国产尤物在线视频| 成人免费视频app| 人妻激情另类乱人伦人妻| 精品视频在线播放一区二区三区 | av中文字幕在线看| 日韩三级视频在线观看| 破处女黄色一级片| 国产米奇在线777精品观看| 一区二区三区国| 欧美xxxx网站| 日韩亚洲欧美成人| 在线观看中文字幕码| 国产精品网曝门| 亚洲免费毛片网站| 国产精品日韩三级| 天堂av一区| 久久99视频免费| 国产91视频在线| 亚洲欧美激情视频在线观看一区二区三区 | 欧美日韩亚州综合| 人妻无码一区二区三区免费| 日韩国产一区二| 性高潮久久久久久久久| 9999精品视频| 欧美老女人在线视频| 亚洲伦理在线观看| 福利一区福利二区微拍刺激| 美女洗澡无遮挡| 蜜臀av性久久久久蜜臀aⅴ流畅| 婷婷精品国产一区二区三区日韩| 欧美视频免费看| 久久这里只有精品视频首页| 精品久久久久中文慕人妻| 亚洲国产综合视频在线观看| 三级视频网站在线观看| 噜噜噜躁狠狠躁狠狠精品视频 | av二区在线| 欧美日本一道本在线视频| 人妻久久一区二区| av在线播放不卡| 嫩草av久久伊人妇女超级a| 欧美超碰在线| 粉嫩高清一区二区三区精品视频 | 欧美性欧美巨大黑白大战| 国产一区二区三区视频播放| 国产丶欧美丶日本不卡视频| 久久亚洲中文字幕无码| 久久综合色占| 91在线视频九色| 亚洲精品福利电影| 日韩性生活视频| 午夜福利理论片在线观看| 在线观看免费一区| 久久久久久久9999| 久久久久久日产精品| 毛片毛片毛片毛| 亚洲精品一二| 一区二区三区四区五区精品| 天堂av一区| 国产精品视频成人| heyzo高清在线| 色噜噜久久综合伊人一本| 蜜桃在线一区二区| 欧美三级视频在线播放| 日本三级网站在线观看| 最新中文字幕一区二区三区 | 狠狠做深爱婷婷综合一区| 91最新在线免费观看| 日韩在线短视频| 欧美精品福利在线| 日本福利专区在线观看| 日韩精品亚洲精品| 国产夫妻性生活视频| 欧美性生活一区| 欧美一级特黄视频| 亚洲影院久久精品| 又嫩又硬又黄又爽的视频| bt7086福利一区国产| 国产人妻精品久久久久野外| 视频一区视频二区在线观看| 欧美无砖专区免费| 欧美99久久| 亚洲欧美日韩在线综合| 国产探花在线精品一区二区| 国产精品一区二区a| 国产精品高清一区二区| 国产精品av在线播放| 碰碰在线视频| 久久久久国产精品免费网站| 蜜芽在线免费观看| 中文字幕日韩在线观看| 撸视在线观看免费视频| 亚洲精品黄网在线观看| 亚洲经典一区二区三区| 制服丝袜中文字幕亚洲| 亚洲一区二区视频在线播放| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 国产区精品在线| 欧美精品自拍偷拍动漫精品| 成年人视频免费| 主播大秀视频在线观看一区二区| 日韩中文字幕在线精品| av一区在线观看| 在线播放亚洲激情| 成人免费高清在线播放| 亚洲欧洲在线观看| 国产永久av在线| 一区二区三区 在线观看视| 日韩一区二区三区中文字幕| 亚洲精品999| 亚洲色图 校园春色| 亚洲精品久久久久久久久久久久久 | 91禁在线看| 久久久免费精品| 97人澡人人添人人爽欧美| 韩国福利视频一区| 蜜桃视频m3u8在线观看| 国内精品一区二区三区| 涩涩视频在线免费看| 日本视频久久久| 精品无人乱码一区二区三区| 国产精品免费一区| 四虎地址8848精品| 99三级在线| 欧美黑人做爰爽爽爽| 欧美日韩综合精品| 欧美亚洲国产精品久久| 亚洲视频电影| 欧美在线二区| 波多野结衣综合网| 久久一区中文字幕| 久热精品在线观看视频| 国产一区二区福利| 五月天丁香社区| 久久综合成人精品亚洲另类欧美 | 国产精彩精品视频| 看片一区二区| 91免费在线观看网站| 久久久久观看| 日韩性感在线| 欧美成人中文| 丝袜老师办公室里做好紧好爽| 日韩激情一二三区| 男生和女生一起差差差视频| 成人黄色网址在线观看| 精品人妻无码一区| 亚洲精品五月天| 国产免费av一区| 91精品国产色综合久久不卡蜜臀| 四虎免费在线观看| 揄拍成人国产精品视频| 牛牛电影国产一区二区| 国产成人av在线播放| 网站一区二区| 欧美性天天影院| 欧美精品大片| 黄色三级视频片| 成人激情小说网站| 久久久久亚洲AV成人无在| 亚洲成人在线网站| 在线观看中文字幕2021| 亚洲精品v天堂中文字幕| 日本在线视频观看| 69视频在线播放| 国产在线一区不卡| 欧美日韩一区二区三区免费| 欧美精品不卡| 亚洲综合欧美激情| 91色九色蝌蚪| 欧美黄色免费在线观看| 欧美性一区二区| 天堂在线观看免费视频| 欧美成人精品影院| 97欧美成人| 九九九九久久久久| 午夜精品久久| 五月花丁香婷婷| 久久精品综合网| 日本少妇全体裸体洗澡| 在线不卡a资源高清| 男人久久精品| 98视频在线噜噜噜国产| 日本一区二区乱| 一区二区三区在线观看www| 久久婷婷丁香| 日韩av一二区| 亚洲电影第三页| 国产黄色免费大片| 日韩一区二区三区xxxx| 亚洲最大成人| 久久精品国产精品国产精品污 | 亚洲一级影院| 91香蕉视频免费看| 国产精品久久久久久福利一牛影视 | 狠狠综合久久| 免费成人进口网站| 免费精品视频在线| 亚洲久久久久久久| 色综合久久综合网| 深夜福利免费在线观看| 69av视频在线播放| 日本精品影院| 国产精品无码人妻一区二区在线 | 91精品国产自产| 欧美丝袜第一区| 永久免费看黄网站| 91精品视频一区二区| 亚洲视频一区二区在线| 午夜不卡福利视频| 国产精品国模大尺度视频| 最近中文字幕在线观看视频| 日韩一区二区三区高清免费看看| 超碰97人人干| 亚洲乱码国产乱码精品精的特点| 一区二区三区黄| 精品国偷自产在线视频99| 91成人福利社区| www.黄色网址.com| 国产成人午夜精品5599| 国产在线综合网| 亚洲精品国产福利| 韩国成人动漫| 亚洲一区二区在线免费观看| 美女一区二区三区| 国产成人综合在线视频| 日韩一级大片在线| gogo高清午夜人体在线| 欧美激情一区二区三区在线视频| 久久久久国产精品午夜一区| 特级西西www444人体聚色| 欧美艳星brazzers| 国产在线1区| 国产精品一区二区三区观看| 一本色道久久综合亚洲精品不| 欧美 日韩 国产 成人 在线观看| 欧美日韩亚洲综合一区 | 久热精品视频在线观看| 91国内精品白嫩初高生| www.av蜜桃| 久久久久久亚洲综合影院红桃 | 国产在线看一区| 国产精品theporn动漫| 亚洲男人第一av网站| 成人看片毛片免费播放器| 久久久久福利视频| 91老师片黄在线观看| 怡春院在线视频| 欧美日本亚洲视频| 米奇777超碰欧美日韩亚洲| 在线观看免费的av| 亚洲电影在线免费观看| 国产youjizz在线| www.久久久| 日韩黄色小视频| 国产污视频在线看| 中文字幕日本精品| 国产香蕉精品| 亚洲性图一区二区| 性做久久久久久| 色欧美激情视频在线| 精品日韩电影| 精品无人区卡一卡二卡三乱码免费卡 | 污污网站在线免费观看| 国产欧美一区二区三区四区| 亚洲高清自拍| 亚洲一二三四五六区| 亚洲精品视频免费|