我的想法是获取全球所有不同实验室中安装的所有组件版本。当我明确地提供细节时,我的代码可以正常工作。
我的代码如下
def UK_PDL_HE():
UK_PDL_List = {}
sorted_list = {}
slist = {}
HE_string = "UK_PDL_HE"
global config
config = ConfigParser.RawConfigParser()
print config.sections()
config.read('config.cfg')
env.user = config.get('UK_PDL','db.user_name' )
env.password = config.get('UK_PDL','db.password' )
host = config.get('UK_PDL','db.ip' )
with settings(hide('warnings', 'running', 'stdout', 'stderr'), warn_only=True, host_string=host):
paramiko.util.log_to_file('UK_PDL.log')
files = run('ls -ltr /opt/nds')
with open("UK_PDL.txt", "w") as fo:
fo.write(files)
components = []
with open("UK_PDL.txt", 'rb') as fo:
strings = ("/installed/")
i=0
for line in fo:
if strings in line:
id = re.search('installed/(.+)',line)
if id:
components.append(id.group(1))
component,version = components[i].rstrip().split('-',1)
UK_PDL_List[component] = version
i+=1
write_data(UK_PDL_List, HE_string,1)
配置文件如下
[UK_PDL]
db.user_name = user
db.password = password
db.ip = 101.815.117.193
[UK_DTH]
db.user_name = user
db.password = password
db.ip = 272.119.411.121
目前我已经为每个IP编写了函数。而不是这个如何确保从配置中逐个读取所有条目并获取详细信息?
答案 0 :(得分:1)
循环配置文件中的部分:
config = ConfigParser()
config.read('config.cfg')
for section in config.sections():
print(section, dict(config[section]))
访问n
部分:
config[config.sections()[n]]
答案 1 :(得分:1)
您可以循环遍历各个部分并动态构建文件名:
def any_HE():
global config
config = ConfigParser.RawConfigParser()
config.read('config.cfg')
for section in config.sections():
list = {} #start with empty list for each section
env.user = config.get(section, 'db.user_name')
env.password = config.get(section, 'db.password')
host = config.get(section, 'db.ip')
with settings(hide('warnings', 'running', 'stdout', 'stderr'), \
warn_only=True, host_string=host):
paramiko.util.log_to_file(section + '.log')
files = run('ls -ltr /opt/nds')
with open(section + ".txt", "w") as fo:
fo.write(files)
components = []
with open(section + ".txt", 'rb') as fo:
strings = ("/installed/")
i=0
for line in fo:
if strings in line:
id = re.search('installed/(.+)',line)
if id:
components.append(id.group(1))
component,version = components[i].rstrip().split('-',1)
list[component] = version
i+=1
write_data(list, section + "_HE", 1)
在某些地方,你的代码缩进似乎是错误的,所以我不得不作出一些假设。