2013-02-24 43 views
-1

我想捕獲遠程linux服務器的性能(CPU和內存使用情況),例如在終端中輸出TOP命令,並將其導入本地Windows機器上的excel文件。 我想用python連接服務器並執行命令並記錄它的輸出。 我完全是新的python,請建議一些辦法來解決這個問題,從我應該從哪裏開始,所有。捕獲遠程linux服務器的性能?

回答

1

看一看os.times

>>> import os 
>>> os.times() 
(0.01, 0.0, 0.0, 0.0, 1361716040.0) 
>>> help(os.times) 
times() -> (utime, stime, cutime, cstime, elapsed_time) 

Return a tuple of floating point numbers indicating process times. 

..並在給定頻率咪咪top重複調用os.times對於給定的時間。

管道到一個Excel文件,這是那麼直接,但Excel可以理解csv,逗號分隔變量文件,所以也許像

import time 
from datetime import datetime 
import os 

with open('output.csv', 'w') as co:  
    for i in range(100): 
     co.write('%s, %f,\n' % (datetime.now(), os.times()[0])) 

    time.sleep(5) 

這將打開一個文件「output.csv」,寫當前的時間和CPU使用率,等待5秒鐘,然後重複100次。然後可以在Excel中打開csv文件。

輸出示例:

2013-02-24 14:40:12.254806, 0.01, 
2013-02-24 14:40:12.304922, 0.05, 
2013-02-24 14:40:12.357945, 0.06, 
2013-02-24 14:40:12.404362, 0.04, 

要連接到遠程服務器,看看Python的ssh2模塊paramiko

編輯爲@Christian Groleau提到的,如果你打算做繁重與csv文件,看看在csv Python模塊。 Someone甚至已經寫了一些直接讀/寫excel文件的模塊(不是python很棒?!)

+2

不錯的解決方案。您可能也想看看使用csv庫的csv編寫器來創建此輸出。如果你要操縱Excel的數據,學習這個庫將使你的任務從長遠來看變得更容易。 – 2013-02-24 14:47:33

2

使用Python模塊「結構」,然後結構run函數捕獲遠程主機上的命令輸出。

這將是這個樣子:fab get_info從文件目錄:

import csv 
from fabric.api import * 

env.hosts = ['[email protected]:22'] 
FILENAME = '/tmp/info.csv' 


def get_info(): 
    output = run('top -bn 1') 
    lines = output.splitlines() 

    with open(FILENAME, 'wb') as csvfile: 
     info = csv.writer(csvfile) 
     for l in lines: 
      info.writerow(l.split()) 

然後運行這個。

它會從遠程機器的「top」輸出中寫入本地csv文件。然後可以從Excel打開csv文件。知道csv文件會有點難看。但是,最重要的是要把最後一條線改成更聰明的東西。