70 lines
1.8 KiB
PowerShell
70 lines
1.8 KiB
PowerShell
pushd C:\Users\a.warme\Documents\ # my temp dir
|
|
|
|
# read in file as an array to compare to in nagios config
|
|
$nagios = Get-Content -Path C:\ew-nagios\prod\etc\nagios\local\hostgroup-accesspoints.cfg -raw
|
|
|
|
# start scanning the file for matches to file entries from export of prod nps clients
|
|
$nps = Get-Content -Path C:\Users\a.warme\Documents\nps_cleanup\rej-p-rad002_nps.txt
|
|
|
|
#build custom object with ip, name , and found status
|
|
|
|
$result = foreach($line in $nps) {
|
|
|
|
if($line -match 'Name *= (.*)') {
|
|
$obj = [pscustomobject]@{
|
|
IP = ''
|
|
Name = $Matches[1]
|
|
Found = ''
|
|
}
|
|
Write-Verbose -Verbose "'$line' matches Name - $($Matches[1])"
|
|
}
|
|
|
|
|
|
#put matches into object
|
|
elseif($line -match 'Address *= (.*)') {
|
|
$obj.IP = $Matches[1]
|
|
$obj.Found = $nagios -match $obj.IP
|
|
Write-Output $obj
|
|
Write-Verbose -Verbose "'$line' matches Address - $($Matches[1])"
|
|
}
|
|
|
|
else {
|
|
Write-Verbose -Verbose "'$line' has no match"
|
|
}
|
|
}
|
|
|
|
#for grid view use
|
|
#$result | Out-GridView
|
|
|
|
|
|
#bulding a template for nagios hostgroup
|
|
|
|
$template = @'
|
|
|
|
define service {{
|
|
hostgroup_name AccessPoints
|
|
service_description {0}-{1}
|
|
use thales-service
|
|
check_command check_ap!{2}
|
|
check_interval 15
|
|
max_check_attempts 3
|
|
retry_interval 1
|
|
servicegroups spoc-monitoring,system-monitoring
|
|
}}
|
|
|
|
'@
|
|
|
|
#matching with not found adress and ip
|
|
|
|
$notFound = $result | Where found -eq $false
|
|
|
|
#insert adress and ip into template
|
|
|
|
$output = foreach($obj in $notFound) {
|
|
$template -f $obj.Name, $obj.IP, $obj.IP
|
|
}
|
|
|
|
#copy clipboard into hostgroup-accesspoints.cfg , remember to check for # or wierd spaces
|
|
|
|
$output | Set-Clipboard
|