我正在使用OMD& amp;设置新的Nagios安装程序。 check_mk而不是这次手工完成所有事情。交换机在DNS中没有正确的主机名,因此check_mk提供了一种在配置文件中指定IP的方法。我昨晚转换了一些交换机的配置文件,我试了几分钟就做了一次,但随后扔了。
示例输入:
define host{
use generic-switch
host_name BAR.MDF.MODEL
alias BAR.MDF.MODEL
parents FOO.MDF.MODEL.01
address 10.1.1.1
}
必需的输出:
ipaddresses = {
"BAR.MDF.MODEL" : "10.1.1.1",
}
这就是我所做的。
我知道在host_name之后IP 总是所以它是相当安全/一致的
{ awk '/host_name/ || /address/ { print $2 }' < switch.cfg; } >> out.txt
让我
BAR.MDF.MODEL
10.1.1.1
然后我做了这个
{ awk '!/^1/{ getline ip; print $0, ip; next }' < out.txt; } >> out2.txt
得到这个:
BAR.MDF.MODEL 10.1.1.1
其余的格式化是通过'norm'和vim在vim中完成的。宏等
"BAR.MDF.MODEL" : "10.1.1.1",
答案 0 :(得分:3)
尝试这可能对您有用。仅awk
。
假设有以下数据infile
define host{
use generic-switch
host_name BAR.MDF.MODEL
alias BAR.MDF.MODEL
parents FOO.MDF.MODEL.01
address 10.1.1.1
}
define host{
use generic-switch
host_name BAR.MDF.MODEL.2
alias BAR.MDF.MODEL
parents FOO.MDF.MODEL.01
address 10.1.1.2
}
define host{
use generic-switch
host_name BAR.MDF.MODEL.3
alias BAR.MDF.MODEL
parents FOO.MDF.MODEL.01
address 10.1.1.3
}
运行此awk
脚本:
awk '
BEGIN { print "ipaddresses = {"; }
$1 == "host_name" {
hostname = "\"" $2 "\"";
next;
}
$1 == "address" {
address = "\"" $2 "\"";
printf "\t%s : %s,\n", hostname, address;
}
END {
printf "}\n";
}
' switch.cfg
产量:
ipaddresses = {
"BAR.MDF.MODEL" : "10.1.1.1",
"BAR.MDF.MODEL.2" : "10.1.1.2",
"BAR.MDF.MODEL.3" : "10.1.1.3",
}