我想不时捕获远程 linux 服务器的性能(CPU 和内存使用情况),例如终端中 TOP 命令的输出,并将其导入本地 Windows 机器上的 excel 文件。我正在考虑使用 python 连接到服务器并执行命令并记录其输出。我对python完全陌生,请提出一些解决这个问题的方法,比如我应该从哪里开始等等。
问问题
2135 次
2 回答
2
使用 Python 模块“fabric”,然后使用 fabricrun
函数来捕获远程主机上命令的输出。
它看起来像这样:
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 文件看起来有点难看。但这一切都是为了将最后一行更改为更智能的内容。
于 2013-02-24T14:49:55.723 回答
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.
os.times
.. 并在给定的时间段内以给定的频率重复调用mimi 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 次。csv
然后可以在 Excel 中打开该文件。
示例输出:
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,
要连接到远程服务器,请查看 Pythonssh2
模块paramiko
。
正如@Christian Groleau所提到的那样编辑,如果您要对文件进行繁重的工作csv
,请查看csv
python 模块。甚至有人写了一些直接读/写excel文件的模块(python不是很好吗?!)
于 2013-02-24T14:27:43.043 回答