黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術文章
文章詳情頁

Python應用自動化部署工具Fabric原理及使用解析

瀏覽:2日期:2022-07-03 17:38:39

介紹

Fabirc是基于python實現的SSH命令行工具,非常適合應用的自動化部署,或者執行系統管理任務。

python2:pip3 install fabric

python3:pip3 install fabric3

簡單的例子:

root@openstack:~# cat fabfile.pydef hello(): print(’hello world!’) root@openstack:~# fab hellohello world!

這個fab簡單地導入了fabfile,并執行定義的hello函數。

命令行啟動

fab作為Fabric程序的命令行入口,提供了豐富的參數調用,命令格式如下:

root@openstack:~# fab --helpUsage: fab [options] <command>[:arg1,arg2=val2,host=foo,hosts=’h1;h2’,...] ...

各參數含義如下:

參數項 含義 -l 顯示可用任務函數名 -f 指定fab入口文件,默認為fabfile.py -g 指定網關(中轉設備),比如堡壘機環境,填寫堡壘機IP即可 -H 指定目標主機,多臺主機用“,”分隔 -P 以異步并行方式運行多臺主機任務,默認為串行運行 -R 指定角色(Role) -t 設置設備連接超時時間 -T 設置遠程主機命令執行超時時間 -w 當命令執行失敗,發出告警,而非默認終止任務

fabfile全局屬性設定

env對象的作用是定義fabfile的全局設定,各屬性說明如下:

屬性 含義 env.host 定義目標主機,以python的列表表示,如env.host=[’xx.xx.xx.xx’,’xx.xx.xx.xx’] env.exclude_hosts 排除指定主機,以python的列表表示 env.port 定義目標主機端口,默認為22 env.user 定義用戶名 env.password 定義密碼 env.passwords 與password功能一樣,區別在于不同主機配置不同密碼的應用情景,配置此項的時候需要配置用戶、主機、端口等信息,如:env.passwords = {’root@xx.xx.xx.xx:22’: ’123’, ’root@xx.xx.xx.xx’:’234’} env.getway 定義網關 env.deploy_release_dir 自定義全局變量 env.roledefs 定義角色分組

常用的API

Fabric支持常用的方法及說明如下:

方法 說明 local 執行本地命令,如:local(’hostname’) lcd 切換本地目錄,lcd(’/root’) cd 切換遠程目錄,cd(’cd’) run 執行遠程命令,如:run(’hostname’) sudo sudo執行遠程命令,如:sudo(’echo “123456″ passwd --stdin root’) put 上傳本地文件到遠程主機,如:put(src,des) get 從遠程主機下載文件到本地,如:get(des,src) prompt 獲取用戶輸入信息,如:prompt(‘please enter a new password:’) confirm 獲取提示信息確認,如:confirm(’failed.Continue[Y/n]?’) reboot 重啟遠程主機,reboot() @task 函數修飾符,標識的函數為fab可調用的 @runs_once 函數修飾符,表示的函數只會執行一次

從一個實例入手

假設我們需要為一個 web 應用創建 fabfile 。具體的情景如下:這個 web 應用的代碼使用 git 托管在一臺遠程服務器 vcshost 上,我們把它的代碼庫克隆到了本地 localhost 中。我們希望在我們把修改后的代碼 push 回 vcshost 時,自動把新的版本安裝到另一臺遠程服務器 my_server 上。我們將通過自動化本地和遠程 git 命令來完成這些工作。

關于 fabfile 文件放置位置的最佳時間是項目的根目錄:

.|-- __init__.py|-- app.wsgi|-- fabfile.py <-- our fabfile!|-- manage.py`-- my_app |-- __init__.py |-- models.py |-- templates | `-- index.html |-- tests.py |-- urls.py `-- views.py

注解

在這里我們使用一個 Django 應用為例——不過 Fabric 并s依賴于外部代碼,除了它的 SSH 庫。

作為起步,我們希望先執行測試準備好部署后,再提交到 VCS(版本控制系統):

from fabric.api import localdef prepare_deploy(): local('./manage.py test my_app') local('git add -p && git commit') local('git push')

這段代碼的輸出會是這樣:

$ fab prepare_deploy[localhost] run: ./manage.py test my_appCreating test database...Creating tablesCreating indexes..........................................----------------------------------------------------------------------Ran 42 tests in 9.138sOKDestroying test database...[localhost] run: git add -p && git commit<interactive Git add / git commit edit message session>[localhost] run: git push<git push session, possibly merging conflicts interactively>Done.

這段代碼很簡單,導入一個 Fabric API: local ,然后用它執行本地 Shell 命令并與之交互,剩下的 Fabric API 也都類似——它們都只是 Python。

用你的方式來組織

因為 Fabric “只是 Python”,所以你可以按你喜歡的方式來組織 fabfile 。比如說,把任務分割成多個子任務:

from fabric.api import localdef test(): local('./manage.py test my_app')def commit(): local('git add -p && git commit')def push(): local('git push')def prepare_deploy(): test() commit() push()

這個 prepare_deploy 任務仍可以像之前那樣調用,但現在只要你愿意,就可以調用更細粒度的子任務。

故障

我們的基本案例已經可以正常工作了,但如果測試失敗了會怎樣?我們應該抓住機會即使停下任務,并在部署之前修復這些失敗的測試。

Fabric 會檢查被調用程序的返回值,如果這些程序沒有干凈地退出,Fabric 會終止操作。下面我們就來看看如果一個測試用例遇到錯誤時會發生什么:

$ fab prepare_deploy[localhost] run: ./manage.py test my_appCreating test database...Creating tablesCreating indexes.............E............................======================================================================ERROR: testSomething (my_project.my_app.tests.MainTests)----------------------------------------------------------------------Traceback (most recent call last):[...]----------------------------------------------------------------------Ran 42 tests in 9.138sFAILED (errors=1)Destroying test database...Fatal error: local() encountered an error (return code 2) while executing ’./manage.py test my_app’Aborting.

太好了!我們什么都不用做,Fabric 檢測到了錯誤并終止,不會繼續執行 commit 任務。

參見

Failure handling (usage documentation)

故障處理但如果我們想更加靈活,給用戶另一個選擇,該怎么辦?一個名為 warn_only 的設置(或著說 環境變量 ,通常縮寫為 env var )可以把退出換為警告,以提供更靈活的錯誤處理。

讓我們把這個設置丟到 test 函數中,然后注意這個 local 調用的結果:

from __future__ import with_statementfrom fabric.api import local, settings, abortfrom fabric.contrib.console import confirmdef test(): with settings(warn_only=True): result = local(’./manage.py test my_app’, capture=True) if result.failed and not confirm('Tests failed. Continue anyway?'): abort('Aborting at user request.')[...]

為了引入這個新特性,我們需要添加一些新東西:

在 Python 2.5 中,需要從 __future__ 中導入 with ;

Fabric contrib.console 子模塊提供了 confirm 函數,用于簡單的 yes/no 提示。

settings 上下文管理器提供了特定代碼塊特殊設置的功能。

local 這樣運行命令的操作會返回一個包含執行結果( .failed 或 .return_code 屬性)的對象。

abort 函數用于手動停止任務的執行。

即使增加了上述復雜度,整個處理過程仍然很容易理解,而且它已經遠比之前靈活。

建立連接

讓我們回到 fabfile 的主旨:定義一個 deploy 任務,讓它在一臺或多臺遠程服務器上運行,并保證代碼是最新的:

def deploy():code_dir = ’/srv/django/myproject’with cd(code_dir):run('git pull')run('touch app.wsgi')

這里再次引入了一些新的概念:

Fabric 是 Python——所以我們可以自由地使用變量、字符串等常規的 Python 代碼;

cd 函數是一個簡易的前綴命令,相當于運行 cd /to/some/directory ,和 lcd 函數類似,只不過后者是在本地執行。

~fabric.operations.run` 和 local 類似,不過是在 遠程 而非本地執行。

我們還需要保證在文件頂部導入了這些新函數:

from __future__ import with_statementfrom fabric.api import local, settings, abort, run, cdfrom fabric.contrib.console import confirm

改好之后,我們重新部署:

$ fab deployNo hosts found. Please specify (single) host string for connection: my_server[my_server] run: git pull[my_server] out: Already up-to-date.[my_server] out:[my_server] run: touch app.wsgi

Done.

我們并沒有在 fabfile 中指定任何連接信息,所以 Fabric 依舊不知道該在哪里運行這些遠程命令。遇到這種情況時,Fabric 會在運行時提示我們。連接的定義使用 SSH 風格的“主機串”(例如: user@host:port ),默認使用你的本地用戶名——所以在這個例子中,我們只需要指定主機名 my_server 。

與遠程交互

如果你已經得到了代碼,說明 git pull 執行非常順利——但如果這是第一次部署呢?最好也能應付這樣的情況,這時應該使用 git clone 來初始化代碼庫:

def deploy(): code_dir = ’/srv/django/myproject’ with settings(warn_only=True): if run('test -d %s' % code_dir).failed: run('git clone user@vcshost:/path/to/repo/.git %s' % code_dir) with cd(code_dir): run('git pull') run('touch app.wsgi')

和上面調用 local 一樣, run 也提供基于 Shell 命令構建干凈的 Python 邏輯。這里最有趣的部分是 git clone :因為我們是用 git 的 SSH 方法來訪問 git 服務器上的代碼庫,這意味著我們遠程執行的 run 需要自己提供身份驗證。

舊版本的 Fabric(和其他類似的高層次 SSH 庫)像在監獄里一樣運行遠程命令,無法提供本地交互。當你迫切需要輸入密碼或者與遠程程序交互時,這就很成問題。

Fabric 1.0 和后續的版本突破了這個限制,并保證你和另一端的會話交互。讓我們看看當我們在一臺沒有 git checkout 的新服務器上運行更新后的 deploy 任務時會發生什么:

$ fab deployNo hosts found. Please specify (single) host string for connection: my_server[my_server] run: test -d /srv/django/myproject

Warning: run() encountered an error (return code 1) while executing ’test -d /srv/django/myproject’

[my_server] run: git clone user@vcshost:/path/to/repo/.git /srv/django/myproject[my_server] out: Cloning into /srv/django/myproject...[my_server] out: Password: <enter password>[my_server] out: remote: Counting objects: 6698, done.[my_server] out: remote: Compressing objects: 100% (2237/2237), done.[my_server] out: remote: Total 6698 (delta 4633), reused 6414 (delta 4412)[my_server] out: Receiving objects: 100% (6698/6698), 1.28 MiB, done.[my_server] out: Resolving deltas: 100% (4633/4633), done.[my_server] out:[my_server] run: git pull[my_server] out: Already up-to-date.[my_server] out:[my_server] run: touch app.wsgi

Done.

注意那個 Password: 提示——那就是我們在 web 服務器上的遠程 git 應用在請求 git 密碼。我們可以在本地輸入密碼,然后像往常一樣繼續克隆。

參見

與遠程程序集成

預定義連接

在運行輸入連接信息已經是非常古老的做法了,Fabric 提供了一套在 fabfile 或命令行中指定服務器信息的簡單方法。這里我們不展開說明,但是會展示最常用的方法:設置全局主機列表 env.hosts 。

env 是一個全局的類字典對象,是 Fabric 很多設置的基礎,也能在 with 表達式中使用(事實上,前面見過的 ~fabric.context_managers.settings 就是它的一個簡單封裝)。因此,我們可以在模塊層次上,在 fabfile 的頂部附近修改它,就像這樣:

from __future__ import with_statementfrom fabric.api import *from fabric.contrib.console import confirmenv.hosts = [’my_server’]def test(): do_test_stuff()

當 fab 加載 fabfile 時,將會執行我們對 env 的修改并保存設置的變化。最終結果如上所示:我們的 deploy 任務將在 my_server 上運行。

這就是如何指定 Fabric 一次性控制多臺遠程服務器的方法: env.hosts 是一個列表, fab 對它迭代,對每個連接運行指定的任務。

總結

雖然經歷了很多,我們的 fabfile 文件仍然相當短。下面是它的完整內容:

from __future__ import with_statementfrom fabric.api import *from fabric.contrib.console import confirmenv.hosts = [’my_server’]def test(): with settings(warn_only=True): result = local(’./manage.py test my_app’, capture=True) if result.failed and not confirm('Tests failed. Continue anyway?'): abort('Aborting at user request.')def commit(): local('git add -p && git commit')def push(): local('git push')def prepare_deploy(): test() commit() push()def deploy(): code_dir = ’/srv/django/myproject’ with settings(warn_only=True): if run('test -d %s' % code_dir).failed: run('git clone user@vcshost:/path/to/repo/.git %s' % code_dir) with cd(code_dir): run('git pull') run('touch app.wsgi')

但它已經涉及到了 Fabric 中的很多功能:

定義 fabfile 任務,并用 fab 執行;

用 local 調用本地 shell 命令;

通過 settings 修改 env 變量;

處理失敗命令、提示用戶、手動取消任務;

以及定義主機列表、使用 run 來執行遠程命令。

還有更多這里沒有涉及到的內容,你還可以看看所有“參見”中的鏈接,以及 索引頁 的內容表。

更多請參考:https://fabric-chs.readthedocs.io/zh_CN/chs/tutorial.html

常用示例

1、上傳文件

fabric可以將本地文件上傳到遠程服務器上,這個操作要用到put函數

2、示例代碼

#coding=utf-8from fabric.api import *from fabric.contrib.console import confirmimport hashlibhost = ’root@192.168.0.62:22’password = ’123456’env.hosts=[host]env.password = passworddef md5sum(filename): fd = open(filename,'r') fcont = fd.read() fd.close() fmd5 = hashlib.md5(fcont) return fmd5def upload_file(filename): run('mkdir -p /root/upload') with cd(’/root/upload’): with settings(warn_only=True): res = put(filename,filename) if res.failed and not confirm('put file failed, Continue[Y/N]?'): abort(u’終止上傳文件’)def checkmd5(filename): fmd5 = md5sum(filename) lmd5 = fmd5.hexdigest() target = ’/root/upload/’+filename rmd5=run('md5sum ' + target).split(’ ’)[0] if lmd5 == rmd5: print ’ok,the file uploaded’ else: print ’error’def uploadfile(filename): upload_file(filename) checkmd5(filename)

執行命令 fab -f uploadfile.py uploadfile:filename=fabricdemo1.py

3、程序分析

在執行fab命令時,可以指定函數的參數,多個參數之間用逗號分隔

with settings(warn_only=True) 的作用,是在發生錯誤時,不中斷執行,只會輸出警告信息

4、上傳文件夾

其實fabric也是可以上傳文件夾的,但是很多教程里都沒有提及,示例代碼如下

def uploadfolder(): run('mkdir -p /root/upload') with cd(’/root/upload’): with settings(warn_only=True): res = put(’testfolder’,’.’)

在uploadfile.py 同目錄下,有一個testfolder的文件夾,上面的代碼可以將這個文件夾上傳到/root/upload目錄下,主要注意的是put的第二個參數,我這里放的是’.’,就表明要把本地的testfolder放到/root/upload目錄下。

不同于上傳文件,文件夾上上傳過程中是不能設置目標文件夾的名字的,目標文件夾必須先存在

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 成人h片在线观看 | 国产精品aⅴ | 一区精品在线观看 | 大又大又粗又硬又爽少妇毛片 | 大乳村妇的性需求 | 国产黄大片在线观看画质优化 | av不卡一区二区三区 | 波多野42部无码喷潮 | 国产人妖在线 | 天堂8资源最新版8 | 国产精品一久久香蕉国产线看观看 | 国产视频二区 | 一本久久伊人热热精品中文字幕 | 8x成人66m免费视频 | 香港三级精品三级在线专区 | 国产av成人一区二区三区 | 成人黄色大全 | 天天操婷婷 | 国产精品久久久国产盗摄蜜臀 | 欧美大片免费高清观看 | 国产在线拍揄自揄视精品按摩 | 久久久久久久久亚洲 | 亚洲激情图 | 中国黄色一级毛片 | 国产精品一区亚洲二区日本三区 | 亚洲国产人午在线一二区 | 日日噜噜噜夜夜爽爽狠狠 | 欧美人与动交tv | 免费在线中文字幕 | 一级毛片中国 | 免费无码一区二区三区a片百度 | 亚洲天堂在线视频播放 | 香港台湾日本三级大全 | 亚洲精品久久久一线二线三线 | 黄色小说在线观看视频 | 一本色道88久久加勒比精品 | 六月激情婷婷 | 国产日韩在线一区 | 免费的黄色的视频 | 老牛嫩草二区三区观影体验 | 超碰成人av | 熟妇高潮一区二区三区 | 国产福利资源在线 | 国产精品久久久久久在线观看 | 2020av在线 | 午夜成午夜成年片在线观看 | 91精品国产色综合久久不8 | 女人被狂躁c到高潮喷水一区二区 | 国产精品久久久久久久岛一牛影视 | 亚洲一区二区三区乱码aⅴ蜜桃女 | 欧美伦理影院 | 古装清宫性艳史 | 国产三级理论 | 可以免费看的av网站 | 色哟哟免费 | 色就是色欧美色图 | 羞羞影院午夜男女爽爽 | 无码国内精品久久人妻 | 日韩欧美中文字幕一区二区 | 日韩久久一级片 | 国产精品国产三级国产在线观看 | 中文字幕无人区二 | 免费观看黄色 | 黄色片地址| 久久96国产精品久久久 | 91桃色国产在线播放 | 992tv成人国产福利在线观看 | 妞妞av| 久久久久久国产精品免费免费男同 | 欧美黑人xxxx高潮猛交 | 国产精选中文字幕 | 日韩avav| 一级黄色性感片 | 色天天av | 理论片午午伦夜理片影院99 | 中文字幕免费高清在线观看 | 国产视频一区二区三区在线播放 | 天天摸夜夜操 | 波多野结衣一二三区 | 日韩午夜伦 | 成人免费一区二区三区 | 偷拍亚洲欧美 | 久久人人爽亚洲精品天堂 | 日本疯狂做爰xxxⅹ高潮视频 | 亚洲国产精品成人综合久久久久久久 | 少妇高潮灌满白浆毛片免费看 | 99精品久久 | 手机天堂网 | 国产农村老太xxxxhdxx | 久久婷婷五月综合尤物色国产 | 亚洲高潮 | 国产乱了真实在线观看 | 成人在线激情 | 色婷婷激情av | 男女性色大片免费网站 | 亚洲天堂日本 | 成人男同在线观看 | 亚洲一本之道高清乱码 | 无码一区二区三区av免费 | 日韩欧美亚洲综合久久 | 男女作爱免费网站 | 国产精品日韩欧美一区二区三区 | 二区三区 | 日本成人一区二区 | 欧美大黑帍在线播放 | 51精品久久久久久久蜜臀 | 东京热无码av男人的天堂 | 一区二区三区午夜 | 曰本女人与公拘交酡免费视频 | 乱子伦一区二区三区 | av色综合久久天堂av色综合在 | 外国三级毛片 | 美女黄18以下禁止观看 | 国产激情久久久久久 | 日本做受高潮又黄又爽 | 色综合久久五月 | 国产精品日日做人人爱 | 瑟瑟av| 97人人在线视频 | 超碰免费av| 国产区一区二 | 99精品视频一区二区三区 | 国产成人精品一区二区秒拍 | 久久精品三级视频 | 国产综合在线观看视频 | 无码熟妇人妻av在线电影 | 成人免费毛片免费 | 精品国产青草久久久久福利 | 一区二区三区国 | 色婷婷av一区 | 久久国产自偷自偷免费一区调 | 邻居少妇张开双腿让我爽一夜 | 天天干夜夜爱 | 欧美黄频 | xxxxxxxx性开放视频 | 久久99精品久久久大学生 | 乱码午夜-极品国产内射 | 国产网址在线观看 | 亚洲手机av| 波多野结衣在线观看一区二区三区 | 国产一二三精品 | 在线а√天堂中文官网 | 风韵丰满熟妇啪啪区老熟熟女 | 乱妇乱女熟妇熟女网站 | 久久人爽人人爽人人片av | 少妇高潮九九九αv | 日欧137片内射在线视频播放 | 久久爽久久爽久久免费观看 | 中文字幕理论片 | 微拍 福利 视频 国产 | 日韩特黄一级欧美毛片特黄 | 一本大道加勒比免费视频 | 日韩精品一区二区三区中文在线 | 中国毛片视频 | 成人区精品 | 久久九色综合九色99伊人 | 国产精品久久久久久久av | 永久精品网站 | 在线不卡aⅴ片免费观看 | 久草www| 欧美视频一二区 | 国产又粗又硬又爽的视频 | 亚洲 国产 图片 | 亚洲女同av| xxxxxxxx黄色片| 淫欲的代价k8经典网 | 精品视频一二三区 | 91看片看淫黄大片 | 日本japanese丰满白浆 | 久久不见久久见中文字幕免费 | 成人啪啪178 | 本道久久综合无码中文字幕 | 三叶草欧洲码在线 | 久久久无码精品亚洲日韩按摩 | 一区二区三区人妻无码 | 亚洲一区二区黄色 | 国产精品30p | 粉嫩av一区二区三区天美传媒 | 国产日韩在线播放 | 免费又黄又裸乳的视频 | 中文字幕二区 | 韩国成人在线 | 暖暖在线日本免费高清最新版 | 日本a级片在线播放 | 国产a三级久久精品 | 嫩草av久久伊人妇女超级a | 国产精品不卡在线观看 | 久久久精品视频免费看 | 在线看片成人 | 日韩精品视频免费播放 | 亚洲中文字幕久久久一区 | 日本少妇丰满大bbb的小乳沟 | 国产精品视频成人 | 91成人免费在线视频 | 久久国产精品99久久久久久老狼 | 91精品久久久久久久久中文字幕 | 国产黑丝啪啪 | www.狠狠操| 69婷婷国产精品入口 | 免费在线视频你懂的 | 国产成人在线视频网站 | 日韩精品久久 | 国产精品偷伦免费观看视频 | 内射毛片内射国产夫妻 | 欧美成人性影院 | 欧美午夜性春猛交 | 又粗又硬又猛又黄网站在线观看高清观看视频 | 7777精品久久久大香线蕉 | 日本三级带日本三级带66 | 丝袜美腿一区二区三区 | 肉性天堂| 欧美性大战久久久久久久 | 男人疯狂高潮呻吟视频 | 国产亚洲精品久久久网站好莱 | 18国产精品福利片久久婷 | 国产99久久久国产精品潘金 | 欧美野外疯狂做受xxxx高潮 | 国产在线国产 | 免费毛片一级 | 久久视频在线观看 | 香蕉二区 | 国产黄色片免费在线观看 | 各种含道具高h调教1v1男男 | 亚洲中文字幕无码中文字 | 国偷自产一区二区三区在线观看 | 日本韩国欧美一区二区三区 | 国产精品刺激对白97 | 色婷婷色丁香 | 欧美大肥婆bbbww欧出奶水 | 熟妇人妻va精品中文字幕 | 久久国产36精品色熟妇 | 韩国三级a视频在线观看 | 把女邻居弄到潮喷的性经历 | 色一情一伦一子一伦一区 | 开心激情av | 神马一区二区三区 | 佐佐木明希99精品久久 | 热99在线 | 欧美性受xxxx狂喷水 | jizz18国产| 欧美色图在线播放 | 又粗又硬又猛又黄网站在线观看高清观看视频 | 国产全肉乱妇杂乱视频 | 国产91在线视频观看 | 日韩深夜在线 | 丁香婷婷综合激情五月色 | 中文字幕av一区中文字幕天堂 | 免费在线看a | av小说天堂网| 国产一区二区日韩 | 日韩一区二区三区射精 | 亚洲综合免费 | 调教丰满的已婚少妇在线观看 | 色综合久久综合欧美综合网 | 91久久久久久波多野高潮 | 午夜精品久久久久久久99芒果 | 亚洲天堂黄 | 波多野结衣视频在线看 | 亚洲一区二区欧美 | 痞帅大猛xnxx精品打桩 | 成人激情视频 | 国产精品资源在线观看 | 农村妇女一区二区 | 香蕉久久夜色精品国产更新时间 | av中文字幕潮喷人妻系列 | 国产乱码精品一区二区 | 亚洲午夜无码av毛片久久 | 91一区| 91抖音成人 | 91av视频在线播放 | 欧美精品一区二区三区制服首页 | 欧美精品在线看 | 中文字幕亚洲在线观看 | 国产女主播一区二区三区 | 99久久99久久精品免费看蜜桃 | 成人一区二区三区在线观看 | 久久影视av | 熟女视频一区二区在线观看 | 黄色a一片| 91久久国产| 亚洲网址 | 久久青草费线频观看 | 色91精品久久久久久久久 | 国产乱弄免费视频 | 国产精品对白刺激在线观看 | 国产精品毛片视频 | 极品熟妇大蝴蝶20p 国产女人高潮叫床视频 | 深夜福利网| 久久婷婷成人综合色综合 | 新疆少妇xxxx做受 | 欧美xxxx少妇 | 一级大毛片 | 中文字幕在线网站 | 少妇一级淫片 | 国产精品99久久久久久宅男 | 欧美三日本三级少妇三级99观看视频 | 亚洲性啪啪无码av天堂 | 国产一区二区三四区 | 亚洲一区二区在线播放 | 国内精品久久久久久久97牛牛 | 特黄特色三级在线观看 | 91久久国产 | 狠狠色香婷婷久久亚洲精品 | 欧美体内谢she精2性欧美 | 午夜视频福利 | ass阿娇裸体pics | 一区二区国产精品 | 91在线91拍拍在线91 | 国产盗摄xxxx视频xxxx | 亚洲欧洲一区二区在线观看 | 欧美成人精品在线观看 | 亚洲一 | 国产涩涩视频在线观看 | 国内三级在线 | 成人在线影片 | 中国少妇毛片 | 不卡av网 | 激情九九| 韩国色综合 | 国产性猛交××××乱七区 | 91精品国产综合久久久久久蜜臀 | 亚洲成av人片天堂网无码 | 国产欧美大片 | 精品国产一区二区三区四区在线看 | 91九色麻豆 | 丰满少妇毛茸茸做性极端 | 久久精品色欧美aⅴ一区二区 | 亚州视频在线 | 一道本在线伊人蕉无码 | 久久小草成人av免费观看 | 国产人妻久久精品二区三区特黄 | 亚洲精品久久久久国产 | 小明天天看 | 特级做a爰片毛片免费69 | 青青草视频成人 | 国产成人精品三级麻豆 | 自拍偷拍亚洲综合 | 中文字幕乱码一区av久久不卡 | 922tv免费观看在线 | 国产精品ⅴa有声小说 | 久久无码av三级 | 国内精品人妻久久毛片app | 97激情| 三级无遮挡污在线观看 | 亚洲色偷偷av男人的天堂 | 66亚洲一卡2卡新区成片发布 | 欧美激情小视频 | 99re在线视频精品 | 成人美女视频 | 人妻无码久久精品 | 国产欧美在线一区二区三区 | 国产明星裸体无码xxxx视频 | 一级做a爰片久久毛片潮喷动漫 | 公妇乱淫1~6集全观看不了啦 | 精品视频一区二区三区在线观看 | 日韩性大片 | 成人亚洲精品久久久久软件 | 亚洲成人免费视频在线 | 日韩免费影院 | 天天操夜夜爱 | jav成人免费视频 | 亚洲韩国精品无码一区二区三区 | 国产伦精品一区二区三区在线 | 青青偷拍视频 | 全部免费毛片在线播放 | 久久欧美精品久久天美腿丝袜 | 在线观看黄色免费网站 | 波多野结衣高清在线 | 亚洲欧美日韩国产综合 | 精品国产三级 | 日本丰满白嫩大屁股ass | 午夜精品久久久久久久99婷婷 | 在线观看视频99 | 亚洲国产成人无码av在线 | 国产黄色高清 | 又粗又大又硬毛片免费看 | 国产一区二区三区自拍 | 国产精品一区二区免费视频 | 精品成人av| 中文字幕日韩精品无码内射 | 欧美日韩国内 | a天堂资源在线观看 | 99久久99九九99九九九 | 激情小说在线 | 久久这里只有精品首页 | 国产精品一二三区视频 | 亚洲一区二区免费视频 | 亚洲欧洲成人av每日更新 | 国产精品免费观看视频 | 日本免费视频 | 精品一区二区三 | 亚洲4444| 国产冒白浆 | 国产一区二区三区四区hd | 激情欧美一区二区三区 | 成年人黄色片网站 | 亚洲国产精品一区二区美利坚 | 成在线人免费视频 | 午夜精品一区二区三区在线播放 | 少妇乱淫aaa高清视频真爽 | 欧美另类极品videosbest品质 | 国产呻吟久久久久久久92 | 搞av网| 久久99精品久久久大学生 | 国产高清一区在线观看 | 伊人久久大香线蕉综合影院首页 | 伊人精品久久久大香线蕉 | 在线中文字幕一区 | 欧美jjzz| 免费在线色 | 婷婷爱五月天 | 色综合久久久久综合体桃花网 | 国产美女又黄又爽又色视频免费 | 日韩美女免费视频 | 亚洲精品在线视频免费观看 | 图片区小说区另类春色 | 无码人妻av一区二区三区波多野 | 亚洲久操 | 亚洲最大福利视频网 | 精品日韩一区二区三区 | 欧美婷婷精品激情 | 国产精品嫩草影视久久久 | 极品少妇xxxx精品少妇偷拍 | 成人综合婷婷国产精品久久 | www日本在线视频 | 噜噜噜亚洲色成人网站 | 日本不卡视频一区二区三区 | 99久久国产福利自产拍 | 精品美女一区 | 国产在线一区二区三区 | 蜜桃av噜噜一区二区三区小说 | 45分钟免费真人视频 | 欧美第一浮力影院 | 中文人妻熟女乱又乱精品 | 无套内谢大学处破女福利 | 成人黄色片视频 | 蜜臀av人妻国产精品建身房 | 丁香婷婷激情综合俺也去 | 午夜激情影院在线观看 | 好看的黄色网址 | 国内自拍区 | 最近更新中文字幕 | 嘿嘿射在线 | 欧美影片网站推荐 | 精品久久久久久久久中文字幕 | 理论片午午伦夜理片影院99 | 制服丝袜一区二区三区 | 国产乱码一区二区三区 | 鲁鲁狠狠狠7777一区二区 | 亚洲最大国产成人综合网站 | 99久久婷婷 | 少妇黄色一级片 | 欧美激情aaa| 成熟的女同志hd | 99精品久久久久久久免费看蜜月 | 国产久草视频 | 日韩在线播放av | 精品国产乱码久久久久久绯色 | 91porny在线 | 精品国产一区二区三区四区在线 | 裸体黄色片 | 亚洲国产精品无码专区 | 久久精品夜夜夜夜夜久久 | 欧美日韩无套内射另类 | 免费又黄又爽又色的视频 | 久久99精品久久久久久水蜜桃 | 日韩精品一区二区三区在线观看视频网站 | 亚洲黑人精品一区在线观看 | 成人做爰9片免费看网站 | 精品国偷自产在线 | 日韩一区2区 | 久久久亚洲国产天美传媒修理工 | 国产精品蜜 | 日本丰满白嫩大屁股ass | 99热超碰在线 | 俺来俺也去www色在线观看 | 丁香五月亚洲综合在线 | 成人必看www | 久久亚洲一区二区三区明星换脸 | 国内揄拍国内精品人妻 | 国产在线国偷精品产拍免费yy | 精品一区二区不卡无码av | 成人手机在线播放 | 亚洲人成影院在线观看 | 韩国三级在线视频 | 婷婷午夜激情 | 亚洲国产精品自产在线播放 | 日本天堂在线播放 | 久久国产色av | 久久免费看少妇高潮a | 精品免费视频一区二区 | 日本三级高清视频 | 国产一区二区三区四区五区密私 | 直接看的av网站 | 极品尤物一区二区三区 | 亚洲精品免费在线观看 | 国产欧美视频在线 | 农村女人做爰毛片 | 日本黄色片 | 亚洲国产精品无码久久电影 | 国产一区二区三区成人久久片老牛 | 午夜激情导航 | 一区久久久 | 最新午夜综合福利视频 | 国产三级全黄裸体 | 好色视频tv | 精品无码国产一区二区三区51安 | 一级二级三级毛片 | 成人黄色免费看 | 117美女写真午夜一级 | 欧美日韩在线影院 | 五月激情婷婷网 | 中国大陆高清aⅴ毛片 | 亚洲欧美在线免费 | 日日摸日日碰夜夜爽av | www视频在线 | www天堂avcom| www.xxx.日本| 国产精品国产三级国产专播i12 | 久久影院午夜理论片无码 | 国产精品自在线拍国产手青青机版 | 久色国产sm重口调教在线观看 | www.日日干| 女人高潮被爽到呻吟在线观看 | 久久国产精品偷任你爽任你 | 中国另类性xxxhd100% | 亚洲成人黄色 | 人人干干| 日本黄色天堂 | 波多野结衣不打码视频 | 欧美日韩在线不卡 | 一区二区精品视频 | 永久免费在线看片 | 日日摸夜夜添狠狠添久久精品成人 | 性xxxx另类xxⅹ | 精品国产青草久久久久福利 | 成人精品一区日本无码网站 | 亚洲精品视频久久 | 国产亚洲精品成人av在线 | 色视频综合| 8888四色奇米在线观看 | 国产精品女人久久久 | 99色在线视频| 欧美精品一二三 | 丝袜 中出 制服 人妻 美腿 | 中文字幕精品亚洲无线码二区 | 欧美特级特黄aaaaaa在线看 | 中文字幕韩日 | 精品夜夜澡人妻无码av | 精品成人国产 | 乱h伦h女h在线视频 乱lun合集小可的奶水 | 久久久久国产a免费观看rela | 亚洲精华国产 | 欧美日一本 | 亚洲天堂美女 | 欧美精品在线一区 | 一级生性活片免费视频片 | 国产女人毛片 | 精品久久久999 | 久久精品免费一区二区 | 激情内射亚州一区二区三区爱妻 | 中国av免费看 | 色婷婷基地 | 噜噜噜久久亚洲精品国产品91 | 91精品国产入口在线 | 国产成人精品av在线观 | 国产美女引诱水电工 | 国产亚洲精久久久久久无码77777 | 天堂躁躁人人躁婷婷视频ⅴ | 色激情五月 | 在线观看av黄色 | 欧美黑人猛猛猛 | 日韩精品短片 | 亚洲天堂久久新 | 91粉色视频 | 噼里啪啦动漫在线观看 | 免费又黄又爽又猛大片午夜 | 污视频在线免费观看 | 成年人网站在线免费观看 | 国产视频一二三四区 | 一色屋精品久久久久久久久久 | 日本大学生三级三少妇 | 国产a国产片国产 | 国产交换配乱淫视频a | 国产精品无码专区在线观看 | 亚洲人午夜色婷婷 | 国产成人无码www免费视频播放 | 国产美女无遮挡永久免费 | 伊人中文字幕无码专区 | 污污网站在线免费观看 | 国产亚洲精品久久久久丝瓜 | 国模无码一区二区三区 | 久久免费看少妇高潮v片特黄 | 精品国产乱码久久久久软件 | 日本成人一区二区 | 西西人体大胆午夜视频 | 亚洲九九九 | 国产精品av久久久久久久久久 | 天天摸天天干天天操 | 久久99精品国产.久久久久 | 国产一区二区三区精品在线 | 乱亲女秽乱长久久久 | 女人裸体性做爰视频 | 51精品国产人成在线观看 | 国产理论视频 | 91丨porny丨九色 | 在线伊人网 | www.热久久 | 美女网站在线永久免费观看 | 国产精品女丝袜白丝袜 | 精品国产一区二区三区久久久蜜月 | 中国毛片在线观看 | 91传媒理伦片在线观看 | 美女扒开奶罩露出奶头视频网站 | 欧美亚洲专区 |