I’m trying to build a simple environment check script for my firm’s test environment. My goal is to be able to ping each of the hosts defined for a given test environment instance. The hosts are defined in a file like this:
#!/usr/bin/env python
host_ip = '192.168.100.10'
router_ip = '192.168.100.254'
fs_ip = '192.168.200.10'
How can I obtain all of these values in a way that is iterable (i.e. I need to loop through and ping each ip address)?
I’ve looked at local() and vars(), but trying do something like this:
for key, value in vars():
print key, value
generates this error:
ValueError: too many values to unpack
I have been able to extract the names of all variables by checking dir(local_variables) for values that don’t contain a ‘__’ string, but then I have a list of strings, and I can’t figure out how to get from the string to the value of the same-named variable.
Here’s a hack I use all the time. You got really close when you returned the list of string names, but you have to use the eval() function to return the actual object that bears the name represented by the string:
If I’m not mistaken, this method also doesn’t pose the same drawbacks as locals() and vars() explained by Glen Maynard.