天天看點

利用paramiko子產品批量檢視遠端機器上指定程序的相關資訊

以前總是利用shell來編寫腳本,最近學習python,發現paramiko使用上很友善,paramiko就是利用ssh協定進行通信。

需求:利用paramiko庫遠端連接配接到遠端伺服器,執行指令“ps aux”,檢視指定服務的的cpu,記憶體,VSZ,RSS資訊,并且以指定格式輸出。

腳本如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

<code>#! /usr/bin/env python</code>

<code>#coding:utf-8</code>

<code>#通過paramiko子產品,獲得遠端機器的指定程序相關資訊;</code>

<code>import</code> <code>paramiko</code>

<code>host_lists</code><code>=</code><code>(</code>

<code>            </code><code>(</code><code>'node1'</code><code>,</code><code>'172.16.41.151'</code><code>),</code>

<code>            </code><code>(</code><code>'node2'</code><code>,</code><code>'172.16.41.152'</code><code>),</code>

<code>            </code><code>(</code><code>'node3'</code><code>,</code><code>'172.16.41.153'</code><code>),</code>

<code>            </code><code>(</code><code>'node4'</code><code>,</code><code>'172.16.41.158'</code><code>)</code>

<code>        </code><code>)</code>

<code>def</code> <code>getServerInfo(host,user,password,services):</code>

<code>     </code><code>conn </code><code>=</code> <code>paramiko.SSHClient()</code>

<code>     </code><code>conn.load_system_host_keys()</code>

<code>     </code><code>conn.set_missing_host_key_policy(paramiko.AutoAddPolicy())</code>

<code>     </code><code>conn.connect(host,</code><code>22</code><code>,user,password)</code>

<code>     </code><code>stdin,stdout,stderr </code><code>=</code> <code>conn.exec_command(</code><code>"ps aux|awk '{print $3,$4,$5,$6,$11}'|grep %s"</code> <code>%</code> <code>services)</code>

<code>     </code><code>info </code><code>=</code> <code>stdout.read()</code>

<code>     </code><code>conn.close()</code>

<code>     </code><code>return</code> <code>info</code>

<code>if</code> <code>__name__ </code><code>=</code><code>=</code> <code>'__main__'</code><code>:</code>

<code>    </code><code>print</code> <code>"hostname   %CPU   %MEM   VSZ   RSS   services"</code>

<code>    </code><code>for</code> <code>host </code><code>in</code> <code>host_lists:</code>

<code>        </code><code>try</code><code>:</code>

<code>            </code><code>info </code><code>=</code> <code>getServerInfo(host[</code><code>1</code><code>],</code><code>'root'</code><code>,</code><code>'passwd'</code><code>,</code><code>'cupsd'</code><code>)</code>

<code>            </code><code>info_list </code><code>=</code> <code>info.split()</code>

<code>            </code><code>print</code> <code>"%s %s %s %s %s %s "</code> <code>%</code> <code>(host[</code><code>0</code><code>],info_list[</code><code>0</code><code>],info_list[</code><code>1</code><code>],info_list[</code><code>2</code><code>],info_list[</code><code>3</code><code>],info_list[</code><code>4</code><code>] )</code>

<code>        </code><code>except</code><code>:</code>

<code>            </code><code>pass</code>

執行結果如下:

<a href="http://s3.51cto.com/wyfs02/M01/53/DF/wKioL1Ry4NfwyBGJAADm5M7lg3A271.jpg" target="_blank"></a>

本文轉自 shine_forever 51CTO部落格,原文連結:http://blog.51cto.com/shineforever/1581958