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

Reply via email to