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

ShutIt:一個基于Python的shell自動化框架

開發 后端 自動化
本文通過實例簡單介紹了ShutIt這個基于Python的自動化框架的使用方法。

[[194837]]

譯者注:本文通過實例簡單介紹了ShutIt這個基于Python的自動化框架的使用方法。除了pexpect,我們又多了這個選擇。以下是譯文。

ShutIt是一個易于使用的基于shell的自動化框架。它對基于python的expect庫(pexpect)進行了包裝。你可以把它看作是“沒有痛點的expect”。它可以通過pip進行安裝。

Hello World

讓我們從最簡單的例子開始吧。創建一個名為example.py的文件:

  1. import shutit   
  2.  
  3. session = shutit.create_session('bash')   
  4.  
  5. session.send('echo Hello World', echo=True 

運行這個文件:

  1. python example.py 

輸出:

  1. python example.py 
  2.  
  3. echo "Hello World" 
  4.  
  5. echo "Hello World" 
  6.  
  7. Hello World 
  8.  
  9. Ians-MacBook-Air.local:ORIGIN_ENV:RhuebR2T#  

“send”函數的***個參數是要運行的命令。“echo”的參數將會輸出到終端上。默認情況下,ShutIt是靜默的。

登錄服務器

如果你要登陸一臺服務器并執行服務器上的命令。可以將example.py改為:

  1. import shutit 
  2.  
  3. session = shutit.create_session('bash'
  4.  
  5. session.login('ssh you@example.com'user='you'password='mypassword'
  6.  
  7. session.send('hostname', echo=True
  8.  
  9. session.logout()  

程序將登錄到這臺服務器上,并輸出主機名。

  1. hostname   
  2.  
  3. hostname   
  4.  
  5. example.com   
  6.  
  7. example.com:cgoIsdVv:heDa77HB#  

顯然,這很不安全!你可以這樣運行:

  1. import shutit 
  2.  
  3. session = shutit.create_session('bash'
  4.  
  5. password = session.get_input('', ispass=True
  6.  
  7. session.login('ssh you@example.com'user='you'password=password
  8.  
  9. session.send('hostname', echo=True
  10.  
  11. session.logout()  

它會讓你輸入密碼:

  1. Input Secret: 
  2.  
  3. hostname 
  4.  
  5. hostname 
  6.  
  7. example.com 
  8.  
  9. example.com:cgoIsdVv:heDa77HB#  

同樣的,“login”方法在登錄后改變了提示符。你給了ShutIt一個登錄命令,并附帶用戶名和密碼(如果需要的話),然后,ShutIt會完成剩余的事情。

“logout”負責終止“login”,并向屏幕輸出發生的任何變化。

登錄到多臺服務器

假設你有一個集群包含兩臺服務器,并希望同時登錄到這兩個服務器上去。則只需要創建兩個會話,并運行類似的login和send命令:

  1. import shutit 
  2.  
  3. session1 = shutit.create_session('bash'
  4.  
  5. session2 = shutit.create_session('bash'
  6.  
  7. password1 = session1.get_input('Password for server1', ispass=True
  8.  
  9. password2 = session2.get_input('Password for server2', ispass=True
  10.  
  11. session1.login('ssh you@one.example.com'user='you'password=password1) 
  12.  
  13. session2.login('ssh you@two.example.com'user='you'password=password2) 
  14.  
  15. session1.send('hostname', echo=True
  16.  
  17. session2.send('hostname', echo=True
  18.  
  19. session1.logout() 
  20.  
  21. session2.logout()  

將輸出這樣的結果:

  1. $ python example.py 
  2.  
  3. Password for server1 
  4.  
  5. Input Secret: 
  6.  
  7. Password for server2 
  8.  
  9. Input Secret: 
  10.  
  11. hostname 
  12.  
  13. hostname 
  14.  
  15. one.example.com 
  16.  
  17. one.example.com:Fnh2pyFj:qkrsmUNs# hostname 
  18.  
  19. hostname 
  20.  
  21. two.example.com 
  22.  
  23. two.example.com:Gl2lldEo:D3FavQjA#  

實例:監控多臺服務器

我們可以通過添加一些代碼邏輯來檢查命令的輸出,從而將上述代碼變成一個簡單的監控工具:

  1. import shutit 
  2.  
  3. capacity_command="""df / | awk '{print $5}' | tail -1 | sed s/[^0-9]//""" 
  4.  
  5. session1 = shutit.create_session('bash'
  6.  
  7. session2 = shutit.create_session('bash'
  8.  
  9. password1 = session.get_input('Password for server1', ispass=True
  10.  
  11. password2 = session.get_input('Password for server2', ispass=True
  12.  
  13. session1.login('ssh you@one.example.com'user='you'password=password1) 
  14.  
  15. session2.login('ssh you@two.example.com'user='you'password=password2) 
  16.  
  17. capacity = session1.send_and_get_output(capacity_command) 
  18.  
  19. if int(capacity) < 10: 
  20.  
  21. print('RUNNING OUT OF SPACE ON server1!'
  22.  
  23. capacity = session2.send_and_get_output(capacity_command) 
  24.  
  25. if int(capacity) < 10: 
  26.  
  27. print('RUNNING OUT OF SPACE ON server2!'
  28.  
  29. session1.logout() 
  30.  
  31. session2.logout()  

在這里,我們用了“sendandget_output”方法來獲取capacity_command命令的輸出。

還有很多更加優雅的方法可以完成上面的操作,但這取決于你想要Python有多聰明。

更復雜的IO – Expecting

假設你需要跟一個命令行程序進行交互,并且要實現自動化操作。在這里,我們使用telnet來舉一個簡單的例子:

  1. import shutit 
  2.  
  3. session = shutit.create_session('bash'
  4.  
  5. session.send('telnet', expect='elnet>', echo=True
  6.  
  7. session.send('open google.com 80', expect='scape character', echo=True
  8.  
  9. session.send('GET /', echo=True, check_exit=False
  10.  
  11. session.logout()  

注意“expect”的參數。你只需要給出telnet提示符的一個子集來進行匹配。

注意“check_exit”的參數,后面我們會講到這個參數的。上面這段代碼將輸出:

  1. $ python example.py 
  2.  
  3. telnet 
  4.  
  5. telnet> open google.com 80 
  6.  
  7. Trying 216.58.214.14... 
  8.  
  9. Connected to google.com. 
  10.  
  11. Escape character is '^]'
  12.  
  13. GET / 
  14.  
  15. HTTP/1.0 302 Found 
  16.  
  17. Cache-Control: private 
  18.  
  19. Content-Type: text/html; charset=UTF-8 
  20.  
  21. Referrer-Policy: no-referrer 
  22.  
  23. Location: http://www.google.co.uk/?gfe_rd=cr&ei=huczWcj3GfTW8gfq0paQDA 
  24.  
  25. Content-Length: 261 
  26.  
  27. Date: Sun, 04 Jun 2017 10:57:10 GMT 
  28.  
  29. <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"
  30.  
  31. <TITLE>302 Moved</TITLE></HEAD><BODY> 
  32.  
  33. <H1>302 Moved</H1> 
  34.  
  35. The document has moved 
  36.  
  37. <A HREF="http://www.google.co.uk/?gfe_rd=cr&ei=huczWcj3GfTW8gfq0paQDA"
  38.  
  39. here 
  40.  
  41. </A>. 
  42.  
  43. </BODY></HTML> 
  44.  
  45. Connection closed by foreign host.  

現在回到“checkexit = false”上來。由于telnet命令會返回一個錯誤的退出碼(1),我們不想讓腳本執行失敗,這里的“checkexit = false”能讓ShutIt知道你并不關注這個退出碼。

如果你沒有傳入這個參數,ShutIt會給你一個交互式的提示,如果你有終端接入的話。這被稱為“暫停點”。

暫停點

你可以隨便在什么時候通過調用以下方法來設置一個“暫停點”。

  1. [...] 
  2.  
  3. session.pause_point('This is a pause point'
  4.  
  5. [...]  

當腳本運行到暫停點時,同時按下“Ctrl”和“]”,則可以讓腳本繼續執行。這對于調試非常有用:添加一個暫停點,看看周圍,然后繼續。試試這個:

  1. import shutit 
  2.  
  3. session = shutit.create_session('bash'
  4.  
  5. session.pause_point('Have a look around!'
  6.  
  7. session.send('echo "Did you enjoy your pause point?"', echo=True 

程序輸出:

  1. $ python example.py 
  2.  
  3. Have a look around! 
  4.  
  5. Ians-Air.home:ORIGIN_ENV:I00LA1Mq# bash 
  6.  
  7. imiell@Ians-Air:/space/git/shutit ⑂ master +  
  8.  
  9. CTRL-] caught, continuing with run... 
  10.  
  11. 2017-06-05 15:12:33,577 INFO: Sending: exit 
  12.  
  13. 2017-06-05 15:12:33,633 INFO: Output (squashed): exitexitIans-Air.home:ORIGIN_ENV:I00LA1Mq# [...] 
  14.  
  15. echo "Did you enjoy your pause point?" 
  16.  
  17. echo "Did you enjoy your pause point?" 
  18.  
  19. Did you enjoy your pause point? 
  20.  
  21. Ians-Air.home:ORIGIN_ENV:I00LA1Mq#  

更復雜的IO – Backgrounding

回到我們上面的“監控多臺服務器”的例子上來。想象一下,我們要在每臺服務器上運行一個長時間運行的任務。默認情況下,ShutIt會持續運行很長時間。但是我們可以在后臺運行任務來加快ShutIt的運行速度。

在這里,你可以使用簡單的命令“sleep 60”來嘗試一個例子。

  1. import shutit 
  2.  
  3. import time 
  4.  
  5. long_command="""sleep 60""" 
  6.  
  7. session1 = shutit.create_session('bash'
  8.  
  9. session2 = shutit.create_session('bash'
  10.  
  11. password1 = session1.get_input('Password for server1', ispass=True
  12.  
  13. password2 = session2.get_input('Password for server2', ispass=True
  14.  
  15. session1.login('ssh you@one.example.com'user='you'password=password1) 
  16.  
  17. session2.login('ssh you@two.example.com'user='you'password=password2) 
  18.  
  19. start = time.time() 
  20.  
  21. session1.send(long_command, background=True
  22.  
  23. session2.send(long_command, background=True
  24.  
  25. print('That took: ' + str(time.time() - start) + ' seconds to fire'
  26.  
  27. session1.wait() 
  28.  
  29. session2.wait() 
  30.  
  31. print('That took: ' + str(time.time() - start) + ' seconds to complete') 

我的筆記本電腦說,運行這兩個命令只需花費0.5秒,而腳本在一分鐘以后才運行結束(使用了’wait’方法)。

雖然這個例子看起來是微不足道的,但是想像一下,如果你有數百臺這樣的服務器需要管理,那么你可以看到這幾行代碼和一個python import所帶來的強大的力量。

更多信息

ShutIt可以做很多事。更多信息,請參閱:

  • ShutIt (https://ianmiell.github.io/shutit/)
  • GitHub (https://github.com/ianmiell/shutit/blob/master/README.md) 
責任編輯:龐桂玉 來源: Python開發者
相關推薦

2025-06-20 02:11:00

2019-08-14 10:49:20

Python編程語言代碼

2023-07-24 10:58:51

CIO自動化

2019-04-22 09:00:00

Python框架自動化測試

2021-06-02 09:32:46

Angular自動化功能請求

2021-04-01 10:51:44

機器人人工智能編程

2020-11-06 08:43:21

AIOps運維DevOps

2022-04-11 15:34:29

機器學習AutoML開源

2023-12-21 11:12:31

Node.js.NET開源庫

2024-05-13 16:29:56

Python自動化

2025-01-08 11:00:00

AIshell開源

2018-12-10 08:10:39

2020-04-28 09:00:00

測試測試自動化

2024-11-13 13:14:38

2024-06-21 10:46:44

2022-02-17 13:03:28

Python腳本代碼

2024-08-16 21:51:42

2021-02-03 09:04:11

解密Spring配置

2022-02-17 10:37:16

自動化開發團隊預測

2017-11-27 15:17:24

PythonMonkey腳本
點贊
收藏

51CTO技術棧公眾號

亚洲国产午夜| 粉嫩精品导航导航| 亚洲欧洲成人精品av97| 超碰97在线播放| www五月天com| 在线观看免费一区二区| 精品呦交小u女在线| 在线观看高清免费视频| h片精品在线观看| 日本一区二区高清| 国产精品国产精品国产专区蜜臀ah| 三级视频在线观看| 中文字幕一区二区三区在线视频| 日韩精品视频观看| 超碰中文字幕在线观看| 中国色在线日|韩| 亚洲免费三区一区二区| 欧美日韩亚洲免费| 亚洲av综合色区无码一二三区| 奶水喷射视频一区| 欧美大片大片在线播放| 免费看一级黄色| 亚洲自拍电影| 精品国产91洋老外米糕| 中日韩av在线播放| 老司机2019福利精品视频导航| 一区二区三区四区激情 | 第四色成人网| 亚洲精品videossex少妇| 视频免费1区二区三区 | 日本韩国欧美在线| 3d动漫一区二区三区| 四季久久免费一区二区三区四区| 国产精品少妇自拍| 欧美在线一区二区三区四区| 婷婷综合激情网| 成a人片亚洲日本久久| 亚洲精品欧美极品| 国产麻豆一精品一男同| 欧美aaaaaa午夜精品| 人九九综合九九宗合| 国产香蕉视频在线| 国产欧美精品久久| 2021国产精品视频| 亚洲一区欧美在线| 国产午夜久久| 午夜精品视频网站| 国产网站在线看| 亚洲国产专区| 91精品国产91久久久| 中文字幕在线观看免费视频| 亚洲精品视频啊美女在线直播| 欧美黑人一级爽快片淫片高清| 欧美黑人一级片| 欧美三区美女| 韩国欧美亚洲国产| 欧美特黄aaaaaa| 免费精品视频| 国产精品激情自拍| 中文字幕有码无码人妻av蜜桃| 美女脱光内衣内裤视频久久网站| 国产精品亚洲精品| 91精品国产乱码久久久| 国内精品国产三级国产a久久| 91欧美精品午夜性色福利在线| 国产毛片毛片毛片毛片| 国产成人免费在线观看不卡| 国产精品播放| 久久久久久久久亚洲精品| 中文字幕精品在线不卡| 中文字幕剧情在线观看一区| 色呦呦网站在线观看| 午夜精品一区二区三区电影天堂| 日韩a在线播放| 999国产精品亚洲77777| 欧美一区二区三区四区久久| xxxxxx黄色| 欧州一区二区| 久久成人人人人精品欧| 亚洲国产精品午夜在线观看| 亚洲欧美视频| 成人性生交大片免费看小说 | 偷拍自拍亚洲| 欧美r级在线观看| 日韩乱码人妻无码中文字幕久久| 色婷婷综合网| 久久久亚洲精选| 天堂av免费在线观看| 国产一区二区三区在线观看免费视频 | 久久亚洲精品石原莉奈 | 黄色片视频免费观看| 国产一区网站| 九九久久精品一区| 伊人手机在线视频| 韩国精品在线观看| 鲁鲁视频www一区二区| 成人在线直播| 色综合一个色综合亚洲| 婷婷激情小说网| 综合亚洲自拍| 久久成人国产精品| 久久精品视频2| 国产91精品一区二区麻豆亚洲| 久99久在线| av网址在线| 在线精品视频免费观看| 波多野结衣一二三区| 视频在线不卡免费观看| 4k岛国日韩精品**专区| 精品国产免费无码久久久| 国产婷婷精品av在线| 97视频久久久| 成人综合日日夜夜| 亚洲人成自拍网站| 午夜毛片在线观看| 国产成人免费视频一区| 中文字幕一区二区三区5566| 另类激情视频| 亚洲第一区在线观看| 国产又粗又硬又长又爽| 天堂蜜桃91精品| 极品校花啪啪激情久久| 七七成人影院| 91精品欧美一区二区三区综合在| 日本污视频网站| 国产精品亚洲产品| 好看的日韩精品视频在线| 羞羞网站在线免费观看| 欧美精品久久久久久久久老牛影院| 91视频免费观看网站| 最新成人av网站| 999国产视频| av黄色在线| 日韩一级片网址| 成年人午夜剧场| 国模少妇一区二区三区| 一区二区免费电影| 97成人超碰| 中文字幕在线国产精品| 国内av在线播放| 国产日韩精品一区| wwwwww.色| 欧美男同视频网| 国产成人97精品免费看片| 日韩亚洲视频在线观看| 欧美日韩人人澡狠狠躁视频| 国产精品无码毛片| 国产九九精品| 热舞福利精品大尺度视频| 久久91导航| 中文字幕一区电影| 一区二区三区午夜| 亚洲欧美日本韩国| 欧美图片自拍偷拍| 国产欧美日本| 日韩视频在线观看国产| 色999韩欧美国产综合俺来也| 日韩在线播放视频| 99久久精品国产成人一区二区| 亚洲人成精品久久久久久| 欧美专区第二页| 国内精品久久久久久久影视蜜臀| 国产欧美日韩一区| 色是在线视频| 最近更新的2019中文字幕| 91久久久久国产一区二区| 亚洲三级视频在线观看| 69亚洲乱人伦| 日日夜夜精品视频免费| 伊人久久大香线蕉午夜av| 日韩欧美高清一区二区三区| 91精品国产高清| 国产51人人成人人人人爽色哟哟 | 57pao成人永久免费视频| 国产粉嫩一区二区三区在线观看| 在线播放91灌醉迷j高跟美女| 欧美三根一起进三p| 91在线小视频| 久久国产激情视频| 亚洲欧洲视频| 亚洲成人自拍视频| 中文在线免费一区三区| 51ⅴ精品国产91久久久久久| 成年人免费在线视频| 欧美一级久久久| 久久精品一二区| 日韩美女视频19| 黄色性生活一级片| 国产真实精品久久二三区| 欧美成人高潮一二区在线看| 欧美综合在线视频观看| 成人三级在线| 欧美三级电影网址| 国内免费精品永久在线视频| 成人18在线| 亚洲二区中文字幕| 一区二区不卡视频在线观看| 欧美日韩国产中字| 波兰性xxxxx极品hd| 95精品视频在线| 午夜av中文字幕| 日韩vs国产vs欧美| 日韩网站在线免费观看| 91精品精品| 日韩精品久久一区二区三区| 岛国av一区| 91传媒免费看| 高清在线一区| 日韩暖暖在线视频| 91吃瓜在线观看| 欧美成人精品激情在线观看| 91精品国产91久久久久游泳池| 亚洲精品v天堂中文字幕| 国产乱码精品一区二区| 日本韩国精品在线| 国产乱国产乱老熟| 亚洲国产一区二区在线播放| 激情无码人妻又粗又大| 久久久一区二区三区捆绑**| 亚洲欧美日韩色| 国产成人精品亚洲午夜麻豆| 久热精品在线观看视频| 久久久精品日韩| 成人毛片视频网站| 亚洲国产一区二区三区a毛片| 97超碰在线视| 艳女tv在线观看国产一区| 亚洲精品一区二区三区四区五区| 亚洲最大在线| 久久综合九色99| 天海翼精品一区二区三区| 国产精品永久入口久久久| 日韩精品亚洲专区在线观看| 91精品视频免费观看| 四虎国产精品免费久久5151| 国产欧美精品在线播放| 欧美高清免费| 成人福利在线观看| a一区二区三区亚洲| 成人精品久久久| 电影中文字幕一区二区| 亚洲伊人久久大香线蕉av| japansex久久高清精品| 92福利视频午夜1000合集在线观看| 四虎影视国产精品| 成人免费午夜电影| 久久国产精品美女| 国产精品99久久久久久久| 给我免费播放日韩视频| 精品久久久久久中文字幕动漫| 精品亚洲自拍| 欧美日韩亚洲在线| 欧洲美女日日| gogogo免费高清日本写真| 亚洲人成免费网站| 日韩成人三级视频| 99精品欧美| 久草综合在线观看| 美腿丝袜亚洲色图| 午夜激情视频网| 大胆亚洲人体视频| 黄色a一级视频| 国产日韩欧美高清在线| 日韩在线观看免| 一片黄亚洲嫩模| 久久狠狠高潮亚洲精品| 在线观看一区二区视频| 亚洲综合免费视频| 欧美xxxxxxxx| 青青久在线视频| 爱福利视频一区| 福利小视频在线| 国产精品福利网| 在线观看视频一区二区三区 | 视频在线不卡免费观看| 成人av在线播放观看| 午夜在线精品偷拍| 国产3p在线播放| aaa亚洲精品一二三区| 国产成人福利在线| 亚洲精品v日韩精品| 亚洲欧美自拍视频| 在线成人午夜影院| 亚洲av成人无码久久精品老人| 正在播放欧美一区| 成人女同在线观看| 国产精品视频自拍| 狼人精品一区二区三区在线| 亚洲一区二区三区乱码| 在线亚洲自拍| 青娱乐国产精品视频| 久久综合精品国产一区二区三区 | 国产三级在线免费观看| 欧美成人亚洲成人| 日韩av一级| 国产精品有限公司| 婷婷成人基地| 欧美色图另类小说| 国产精品一区二区在线看| 亚洲a v网站| 亚洲国产一区视频| 国产美女免费视频| 亚洲亚裔videos黑人hd| 69av成人| 91久久精品www人人做人人爽| 五月天亚洲色图| 伊人网在线免费| 麻豆精品一区二区三区| 少妇饥渴放荡91麻豆| 一区二区免费看| 97国产成人无码精品久久久| 亚洲人成电影网站色xx| av在线最新| 91久久国产综合久久蜜月精品 | 久久这里只有精品23| 狠狠网亚洲精品| 黄色免费一级视频| 色狠狠一区二区三区香蕉| 欧美视频xxx| 欧美高清一级大片| 国产成人久久精品一区二区三区| 亚洲高清在线观看一区| 久久高清国产| 色欲av无码一区二区三区| 福利微拍一区二区| 网站黄在线观看| 羞羞色国产精品| 91精品国产自产精品男人的天堂| 影音欧美亚洲| 久久精品国产亚洲一区二区三区| 欧美激情视频二区| 色天天综合久久久久综合片| 免费毛片在线| 国产suv精品一区二区三区88区| 欧美91在线| 亚洲自偷自拍熟女另类| 91一区二区三区在线播放| 日产欧产va高清| 亚洲国产婷婷香蕉久久久久久| 国产精品一区hongkong| 99久久伊人精品影院| 欧美精品综合| 无码av免费精品一区二区三区| 一区二区三区久久| 人妻中文字幕一区| 亚州精品天堂中文字幕| 亚洲福利网站| 国产免费又粗又猛又爽| 国产精品三级在线观看| 91精品国自产| 色综合色综合久久综合频道88| 2021年精品国产福利在线| 妞干网在线视频观看| 91丨porny丨户外露出| 欧美一区二区三区网站| 中文字幕亚洲综合| 国产一区 二区| 91精品国产91久久久久麻豆 主演| 成人午夜视频福利| 欧产日产国产69| 中文字幕久久亚洲| 日本一区二区三区播放| 国产a级片网站| 91美女片黄在线| 怡红院男人天堂| 久久不射电影网| 婷婷亚洲成人| 中文字幕第100页| 亚洲综合视频网| 蜜桃成人在线视频| 成人伊人精品色xxxx视频| 亚洲无线一线二线三线区别av| 日韩精品卡通动漫网站| 欧美久久高跟鞋激| h片在线观看下载| 日韩理论片在线观看| 国内精品视频666| 黄色一级片免费在线观看| 色偷偷偷亚洲综合网另类| 成人香蕉社区| 噼里啪啦国语在线观看免费版高清版| 在线中文字幕播放| 国产乱码精品一区二区三区不卡| 亚洲欧美日本国产专区一区| 国产性猛交xx乱| 日韩精品中文字幕在线一区| 亚洲性色av| 久久久久久久久久久久久国产| 成人手机电影网| 一区二区视频网站| 久久人人爽人人爽人人片av高请| 精品在线观看入口| 国产老头和老头xxxx×| 在线观看亚洲专区| 波多野结衣在线高清| 一本色道久久综合亚洲二区三区| 成人精品视频.| 911美女片黄在线观看游戏| 91av在线免费观看视频| 亚洲色图88|