需要了解的pssh(r11筆記第28天)
昨天的一篇文章,關於ssh命令的幾個使用小技巧(r11筆記第27天),也收到了不少朋友的反饋,其中有個朋友提議說還是用pssh吧,我想想也是。
對於pssh早有耳聞,但是一直沒有嘗試用過。自己體驗了一番,感覺確實不錯,對於我們日常碰到的批次操作都可以勝任。當然還有很多可選方式,比如pgm,fabric,puppet,ansible等,只要能實現需求,怎麼玩都是套路,而且也急不得,一個學明白了學其他的就會容易很多。
關於pssh的p是什麼含義,我和朋友還討論過,到底是python還是parallel的意思,其實按照官網的意思是parallel,當然它是用python寫的。檢視官網目前較新的版本是2.3.1,可以參考如下連結:
下載得到的不是rpm包,而是一個tar.gz的包,解壓以後,直接執行如下的命令即可完成安裝的過程。
# python setup.py install
其實這個pssh還有很多附加的功能pscp,prsync,pslurp,pnuke等。
比如我們有幾臺伺服器需要做一些相同的檢查。
伺服器列表我們提供一個檔案test.txt
10.12.133.125
10.12.2.102
10.12.2.32
比如想批次檢視主機名的情況,那麼執行的結果如下:
# pssh -h test.txt -i "hostname"
[1] 17:41:44 [SUCCESS] 10.12.133.125
newtest.oracle.com
[2] 17:41:44 [SUCCESS] 10.12.2.102
bill_10.12.2.102_sx
[3] 17:41:44 [SUCCESS] 10.12.2.32
snewtest2.oracle.com
如果想先顯示結果再顯示檢測情況,可以使用-P選項。
# pssh -h test.txt -P "hostname"
10.12.133.125: newtest.oracle.com
[1] 17:42:08 [SUCCESS] 10.12.133.125
10.12.2.102: bill_10.12.2.102_sx
[2] 17:42:08 [SUCCESS] 10.12.2.102
10.12.2.32: snewtest2.oracle.com
[3] 17:42:08 [SUCCESS] 10.12.2.32
當然這只是開始,比如想檢視一下伺服器的uptime情況,超時時間為10秒,對於那些伺服器訪問不通的情況,情況就會大大改善。
# pssh -h test.txt -t 10 -i uptime
如果伺服器有100臺,使用如上的方式就會瞬間導致伺服器的程式數暴增,如果成千上萬臺伺服器,後果不堪設想,其實我們想讓這個過程更平滑一下,那就是使用-p選項,指定並行程式數,比如指定並行程式數為20個,這樣就是一個動態控制的過程。
# pssh -h test.txt -t 10 -p 20 -i uptime
如果伺服器不算太多,可以使用傳入變數的方式,而不適用IP列表。
# pssh -H "10.12.133.125 10.12.2.32" -i uptime
[1] 23:22:35 [SUCCESS] 10.12.133.125
23:19:59 up 268 days, 6:53, 0 users, load average: 0.07, 0.10, 0.28
[2] 23:22:35 [SUCCESS] 10.12.2.32
23:04:38 up 220 days, 8:43, 1 user, load average: 0.22, 0.24, 0.25
大體的使用情況就是上面這樣,基本達到的效果就是一個伺服器能夠透過ssh操作,那麼放大到100臺,1000臺,從客戶端來說操作複雜度沒有太大的差別。
pssh這個工具蠻有意思,在安裝的目錄下有個AUTHORS的檔案,作者是兩個。
# less AUTHORS
Andrew McNabb <amcnabb at mcnabbs.org>
Brent Chun <bnc at theether.org>
而我自己也簡單看了下pssh的實現程式碼,說實話,python還是小白,但是從Java學習的基礎來看,有些程式碼大體還是能基本看懂,程式碼不是很長,所以我列印出來準備抽空好好看看。
pssh的核心部分有幾個檔案,pssh和幾個庫檔案,manage.py,task.py,psshutil.py,還有輔助的cli.py,color.py,askpass_client.py,askpass_server.py
簡單總結了下,Andrew寫了不少的內容,而且近些年的維護都是他。
# Copyright (c) 2009-2012, Andrew McNabb
manager.py
task.py
askpass_client.py
askpass_server.py
而早期的時候更多的內容是Brent來做,2009年左右交接給了Andrew,所以會看到共同作者。
# Copyright (c) 2009-2012, Andrew McNabb
# Copyright (c) 2003-2008, Brent N. Chun
psshutil.py
color.py
cli.py 可見一個開源的專案能夠健康發展至今,還是離不開很多默默奉獻的人。
這就印證了一句話:
想要走得快,請獨行;要想走得遠,請結伴而行
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2131633/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 返京途中(r11筆記第61天)筆記
- 我的女兒二三事(r11筆記第87天)筆記
- 我眼中的寶雞景點(r11筆記第53天)筆記
- 我眼中的兵馬俑(r11筆記第55天)筆記
- MySQL中的undo截斷(r11筆記第89天)MySql筆記
- MySQL中的半同步複製(r11筆記第65天)MySql筆記
- 出去吃頓飯容易嘛(r11筆記第5天)筆記
- 閃回原理測試(二)(r11筆記第23天)筆記
- MySQL 5.7 General Tablespace學習(r11筆記第34天)MySql筆記
- 德魯克人生五問(r11筆記第71天)筆記
- 關於責任和業務(r11筆記第60天)筆記
- MySQL Online DDL(二)(r11筆記第88天)MySql筆記
- 兩個資料庫的問題(r11筆記第4天)資料庫筆記
- 三十而立,立的是什麼?(r11筆記第70天)筆記
- MySQL引數對比淺析(r11筆記第97天)MySql筆記
- Java隨機演算法(一)(r11筆記第14天)Java隨機演算法筆記
- 寫在2016年底(r11筆記第30天)筆記
- 近期的學習計劃(2017.3)(r11筆記第95天)筆記
- 相差數十倍的SQL效能分析(r11筆記第98天)SQL筆記
- Data Guard故障自動切換的想法(r11筆記第40天)筆記
- 複雜SQL效能優化的剖析(一)(r11筆記第36天)SQL優化筆記
- 複雜SQL效能優化的剖析(二)(r11筆記第37天)SQL優化筆記
- Oracle Data Guard延遲的幾個可能(r11筆記第69天)Oracle筆記
- 動態建立MySQL Group Replication的節點(r11筆記第84天)MySql筆記
- Oracle 12cR2初體驗(r11筆記第91天)Oracle筆記
- 軟體技術大會歸來(r11筆記第8天)筆記
- 使用sysbench壓力測試MySQL(一)(r11筆記第3天)MySql筆記
- 百倍效能的PL/SQL優化案例(r11筆記第13天)SQL優化筆記
- 關於ssh命令的幾個使用小技巧(r11筆記第27天)筆記
- insert導致的效能問題大排查(r11筆記第26天)筆記
- 一個SQL效能問題的優化探索(二)(r11筆記第38天)SQL優化筆記
- 物化檢視實現的特殊資料複製(r11筆記第42天)筆記
- Oracle 12c資料字典的小問題(r11筆記第49天)Oracle筆記
- 一個細小問題觸發的報警(r11筆記第68天)筆記
- 淺談MySQL中的事務隔離級別(r11筆記第86天)MySql筆記
- Oracle閃回原理-Logminer解讀redo(r11筆記第17天)Oracle筆記
- 閃回資料庫不是“萬金油”(r11筆記第73天)資料庫筆記
- MySQL和Oracle行值表示式對比(r11筆記第74天)MySqlOracle筆記