quarta-feira, 27 de outubro de 2010

Monitorando uso do disco no windows com python

Precisei monitorar o uso do disco em um servidor onde não podia instalar nenhum software. Apesar do meu python-fu estar enferrujado utilizei o ActiveState Python 2.4.1 que já estava instalado para executar a tarefa.

Segue o script monitordiskspace.py



import os
import win32api
import datetime

CSV_FILE = 'diskspace.csv' # csv file to collect data
DISKS = ['C:\\', 'D:\\', 'E:\\', 'G:\\', 'H:\\', 'I:\\'] # disks you want to monitor

def writeheader(f):
f.write('Date')
for d in DISKS:
f.write(',' + d + ' Used')
f.write(',' + d + ' Free')
f.write('\n')

exist = os.path.exists(CSV_FILE)

csv = file(CSV_FILE, 'a')
try:

if not exist:
writeheader(csv)

today = datetime.date.today()

csv.write(str(today.day)+'/'+str(today.month)+'/'+str(today.year)) # date in day/month/year format

for d in DISKS:
info = win32api.GetDiskFreeSpaceEx(d)
csv.write(',' + str(info[1] - info[2]) ) # used space (total - free)
csv.write(',' + str(info[2]) ) # free space

csv.write('\n')

finally:
csv.close




Ao executar python monitordiskspace.py, o script cria um arquivo diskspace.csv e vai acumulando o número de bytes utilizados e livres dos discos que foram configurados na variável DISKS. Cada chamada gera uma linha com os dados daquele momento. É só agendar a execução no windows, e depois de um tempo tratar os dados com Excel ou BrOffice.

Nenhum comentário:

Postar um comentário