On Feb 20, 2008 3:04 AM, Tim Golden <[EMAIL PROTECTED]> wrote: > Becky Mcquilling wrote: > > I'm new to Python and wanted to do what is a pretty routine and common > admin > > function, simple enough in VBScript, but wanted to try it in Python as > > well. I'm having troulbe working it out on my own. > > Welcome to Python! > > > I have a text file c:\servernames.txt. I want the script to read from > that > > file, each line being a different machine name, then give me a list of > the > > services on the machine and the state, write the result to a log file. > > Reading lines from a file is easy enough. My own preference > is this: > > servers = open ("c:/servernames.txt").read ().splitlines () > > because it strips off the trailing line feeds, but there > are several alternatives. > > > The wmi part is easy to produce, on a single machine, it's stripping the > > contents from a text file one at a time and then logging it to a file, > that > > I havne't gotten quite right. > > It's not entirely clear what you want to log and to how many files, but > assuming that: > > a) You're using the wmi module from: > http://timgolden.me.uk/python/wmi.html > > b) You have a list of servers in c:\servernames.txt > > c) You want the list of services from each machine > to go into a file called <servername>-services.log > > then this code should at least give you an outline: > > One caveat: because in Python, as in other languages, > the backslash acts as a special-character escape, you > either need to double them up in Windows filenames, > ("c:\\server...") or use raw strings (r"c:\server..") > or use forward slashes ("c:/server...") > > <code - untested> > import wmi > > servers = open ("c:/servernames.txt").read ().splitlines () > for server in servers: > wmi_connection = wmi.WMI (server) > with open ("%s-services.log" % server, "w") as f: > for service in wmi_connection.Win32_Service (): > f.write ("%s\t%s\n" % (service.Caption, service.State)) > > </code> > > HTH > TJG > _______________________________________________ > python-win32 mailing list > python-win32@python.org > http://mail.python.org/mailman/listinfo/python-win32 >
Note that the above code will only work under Python 2.5, since that's when the "with" statement was added. (Some of us are still stuck in 2.4 land :) ) In 2.4 and earlier, it could look something more like: <code - untested> import wmi servers = open ("c:/servernames.txt").read ().splitlines () for server in servers: wmi_connection = wmi.WMI (server) f = open ("%s-services.log" % server, "w") for service in wmi_connection.Win32_Service (): f.write ("%s\t%s\n" % (service.Caption, service.State)) f.close() </code> Kevin Horn
_______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32