如果存在现有值,我希望保留现有行,或者将该行添加到文件中。我正在为nagios主机文件编写脚本。你知道吗
主机文件:
define host{
use hoststatus
host_name linuxhost1
alias linuxhost1
hostgroups linuxgroup
Sev 1
}
define host{
use hoststatus
host_name linuxhost2
alias linuxhost2
hostgroups linuxgroup
Sev 2
}
define host{
use hoststatus
host_name linuxhost3
alias linuxhost3
hostgroups linuxgroup
}
define host{
use hoststatus
host_name linuxhost4
alias linuxhost4
hostgroups linuxgroup
}
我写了这个脚本,如果行不存在(即Sev line不存在于最后两个主机中,所以如果Sev存在,跳过它)就为前两个主机添加行,我不想添加任何内容。你知道吗
代码:
import re,sys
with open(sys.argv[1],'r') as f1:
data = f1.readlines()
txt=''
with open(sys.argv[1],'r') as f3:
severity=True
default=4
vmowner=True
default_VM = "XXXXXXXXXXXXXX"
for line in f3:
if line.strip().startswith('Sev'):
severity=False
if line.strip().startswith('Vmowner'):
vmowner=False
if severity:
txt = txt + "\tSev\t\t" + str(default) + "\n"
if vmowner:
txt = txt + "\tVmowner\t\t" + str(default_VM) + "\n"
txt = txt + "\tSevOwner\tYYYYYYYYYYYY\n"
txt = txt + "}\n"
with open(sys.argv[1],'r+') as f2:
for line in data:
if line.strip().startswith('}'):
line = line.replace('}',txt)
# f2.write(line)
print line,
但问题是我没有得到确切的结果。你知道吗
生成的输出:
define host{
use hoststatus
host_name linuxhost1
alias linuxhost1
hostgroups linuxgroup
Sev 1
Vmowner XXXXXXXXXXXXXX
SevOwner YYYYYYYYYYYY
}
define host{
use hoststatus
host_name linuxhost2
alias linuxhost2
hostgroups linuxgroup
Sev 2
Vmowner XXXXXXXXXXXXXX
SevOwner YYYYYYYYYYYY
}
define host{
use hoststatus
host_name linuxhost3
alias linuxhost3
hostgroups linuxgroup
Vmowner XXXXXXXXXXXXXX
SevOwner YYYYYYYYYYYY
}
define host{
use hoststatus
host_name linuxhost4
alias linuxhost4
hostgroups linuxgroup
Vmowner XXXXXXXXXXXXXX
SevOwner YYYYYYYYYYYY
}
预期输出:
define host{
use hoststatus
host_name linuxhost1
alias linuxhost1
hostgroups linuxgroup
Sev 1
Vmowner XXXXXXXXXXXXXX
SevOwner YYYYYYYYYYYY
}
define host{
use hoststatus
host_name linuxhost2
alias linuxhost2
hostgroups linuxgroup
Sev 2
Vmowner XXXXXXXXXXXXXX
SevOwner YYYYYYYYYYYY
}
define host{
use hoststatus
host_name linuxhost3
alias linuxhost3
hostgroups linuxgroup
Sev 4
Vmowner XXXXXXXXXXXXXX
SevOwner YYYYYYYYYYYY
}
define host{
use hoststatus
host_name linuxhost4
alias linuxhost4
hostgroups linuxgroup
Sev 4
Vmowner XXXXXXXXXXXXXX
SevOwner YYYYYYYYYYYY
}
提前谢谢。你知道吗
我会这么做:
您不能在每个主机之后将严重性标志重置为true。这意味着第一个主机将标志设置为false,然后再输入检查标志的if语句。您需要添加逻辑来检查新主机文件的开头,以重置逻辑(如严重性标志)。你知道吗
相关问题 更多 >
编程相关推荐