[CentralOH] Help with learning how to use a class (please don't laugh :) )
Eric Lake
ericlake at gmail.com
Wed Jul 9 16:23:19 CEST 2008
I am trying to write a script that I can use to gather information
about the windows servers we have in our network. I started off with
it being just a procedural script and I am now trying to put all of
the functions in a class. This is still very much a work in progress.
What can I do to improve on this / make it work? Any help would be
appreciated. When I run the following from ipython to test it against
my local machine I get this output:
In [64]: server = diskspace.SysInfo('localhost')
In [65]: server.GetLocalDrives()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
C:\Documents and Settings\elake\Desktop\<ipython console> in <module>()
TypeError: GetLocalDrives() takes no arguments (1 given)
import sys
import wmi
class SysInfo(object):
def __init__(self, hostname):
self.host = hostname
server = wmi.WMI(self.host)
def GetLocalDrives():
driveList = []
for disk in self.Win32_LogicalDisk():
if disk.DriveType == 3:
driveList.append(str(disk.Name))
return driveList
def GetTotalDiskSize(drive):
for disk in server.Win32_LogicalDisk():
if disk.Name == drive:
total = long(disk.Size) /1073741824.0
return total
def GetFreeDiskSpace(drive):
for disk in server.Win32_LogicalDisk():
if disk.Name == drive:
free = long(disk.FreeSpace) /1073741824.0
return free
def GetUsedDiskSpace(drive):
total = GetTotalDiskSpace(drive)
free = GetTotalDiskSpace(drive)
used = (total - free)
return used
def GetStorage(self):
server = wmi.WMI(self.host)
print "Gather information on %s\n" % self.host
outfile.write("%s ::\n" % self.host)
for disk in server.Win32_LogicalDisk():
if disk.DriveType == 3:
total = long(disk.Size) /1073741824.0
free = long(disk.FreeSpace) /1073741824.0
used = (total - free)
per_used = (used * 100) / total
outfile.write("\tDrive %s\n" % disk.Name)
outfile.write("\t\tTotal Size: %3.2f GB\n" % total)
outfile.write("\t\tFree Space: %3.2f GB\n" % free)
outfile.write("\t\tUsed Space: %3.2f GB\n" % used)
outfile.write('\t\tPercent Used: %.2f \n' % per_used)
def GetNodeName():
for os in server.Win32_OperatingSystem():
activeNode = server.CSName
return activeNode
if __name__ == '__main__':
infile = open('san.txt', 'r')
outfile = open('test4.txt', 'w')
for host in infile.readlines():
host = host.strip()
try:
server = SysInfo(host)
server.GetStorage()
outfile.write("\n")
except KeyboardInterrupt:
print "The user canceled the job.\n"
sys.exit(0)
except:
outfile.write("%s does not appear to be available.\n\n" % host)
print "Done!\n"
infile.close()
outfile.close()
--
Thanks,
Eric Lake
More information about the CentralOH
mailing list