extrahieren Ich habe Nagios/Icinga-Objekt-Datei mit ähnlichen Inhalten unten, aber viele davon. Wie extrahiere ich die ähnlichen Objekte zum Beispiel nur die "Host-Objekte" oder "Service-Objekte" mit Bash oder Python.wie Zeichenfolge zwischen geschweiften Klammern aus Datei
define host{ ## extract including the "define host {....}"
use generic-switch
host_name bras ;
alias bras-gw.example.com;
address 20.94.66.88
hostgroups bgp;
}
define host{ ## extract including the "define host {....} define host {....} "
use generic-switch
host_name ar1 ;
alias ar1.example.com;
address 22.98.66.244
hostgroups bgp;
}
define servicegroup {
servicegroup_name Premium
alias Premium-BGP
}
define service {
host_name ar0
service_description Get-Speed- BGP-INTL dsdf34
check_command check_bgp!secreat!10.10.40.44
check_interval 1
use generic-service
notification_interval 0 ; set > 0 if you want to be re-notified
}
define service {
host_name ar10
service_description Get-Speed- BGP-INTL rrdf34
check_command check_bgp!secreat!10.10.40.77
check_interval 1
use generic-service
notification_interval 0 ; set > 0 if you want to be re-notified
check_period 24x7
notification_period 24x7
contact_groups p2p,l2,system2,admins
use generic-service
max_check_attempts 3
notification_options c,r
}
Ziel ist bestimmte Host oder Service-Objekte aus der Datei zB zu extrahieren.
define host{
use generic-switch
host_name ar0 ;
alias id6.example.net;
address 20.24.6.22
hostgroups bgp;
}
define host{
use generic-switch
host_name bras ;
alias bras-gw.abc.com.dp;
address 202.33.66.254
hostgroups bgp;
}
define host{
use generic-switch
host_name ar1 ;
alias ar1.abc.com;
address 20.94.66.44
hostgroups bgp;
}
Am: sed -nr '/.*(\bhost\b|\bservice\b).*\{/,/\}/ p' datafile
als ritesht93
mit dieser versucht, sed -n ‚/^define host {/ ,/\} $/p 'bgp.cfg obwohl funktioniert, aber ich denke, die Antwort von @ ritesht93 ist besser –