我想捕获远程linux服务器的性能(CPU和内存使用情况),比如在终端中不时输出TOP命令,并将其导入到本地Windows机器上的excel文件中。 我正在考虑使用python连接到服务器并执行命令并记录其输出。 我是python的新手,请提出一些解决这个问题的方法,比如我应该从哪里开始。
答案 0 :(得分:2)
使用Python模块“fabric”,然后使用fabric run
函数捕获远程主机上命令的输出。
它看起来像这样:
import csv
from fabric.api import *
env.hosts = ['user@remotehost: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())
然后从脚本目录运行:fab get_info
。
它将从远程计算机的“top”输出中写入本地csv文件。然后可以从Excel打开csv文件。知道csv文件看起来有点难看。但这一切都是为了将最后一行改为更聪明的东西。
答案 1 :(得分: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.
..并以给定频率向mimi os.times
重复拨打top
一段时间。
将其管理到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很棒吗?!)