Fanaraha-maso ny daty lany daty fanamarinana ao amin'ny Windows amin'ny NetXMS

Vao haingana izahay dia niatrika ny asa fanaraha-maso ny vanim-potoanan'ny fanamarinana amin'ny mpizara Windows. Eny ary, ahoana no nitsanganako rehefa avy nivadika ho voatavo imbetsaka ny taratasy fanamarinana, tamin'ny fotoana nanaovan'ny mpiara-miasa volombava tompon'andraikitra amin'ny fanavaozana azy ireo. Taorian’izay dia niahiahy zavatra izaho sy izy ka nanapa-kevitra ny hieritreritra an’izany. Koa satria mampihatra tsimoramora ny rafitra fanaraha-maso NetXMS izahay, dia lasa izy io ary, raha ny fitsipika, no hany kandidΓ  amin'ity asa ity.

Ny vokatra dia azo tamin'ny endrika manaraka:

Fanaraha-maso ny daty lany daty fanamarinana ao amin'ny Windows amin'ny NetXMS

Ary mbola mitohy ny dingana.

Mandehana. Tsy misy kaontera naorina ho an'ny fanamarinana lany daty ao amin'ny NetXMS, noho izany dia mila mamorona ny anao manokana ianao ary mampiasa script mba hanomezana azy angona. Mazava ho azy, amin'ny Powershell, Windows io. Ny script dia tokony hamaky ny mari-pankasitrahana rehetra ao amin'ny rafitra fiasa, alaivo ny daty lany andro ao anatin'ny andro ary ampita ity isa ity amin'ny NetXMS. Amin'ny alalan'ny solontenany. Eo no hanombohantsika.

Safidy iray, tsotra indrindra. Raiso fotsiny ny isan'ny andro mandra-pahatapitry ny certificat miaraka amin'ny daty akaiky indrindra.

Mba hahafantaran'ny mpizara NetXMS momba ny fisian'ny mari-pamantarana manokana ataontsika dia tsy maintsy mahazo izany avy amin'ny mpandraharaha izy. Raha tsy izany dia tsy azo ampiana ity paramètre ity noho ny tsy fisiany. Noho izany, ao amin'ny fichier configuration agent nxagentd.conf manampy tady paramètre ivelany antsoina hoe HTTPS.CertificateExpireDateSimple, izay hanoratanay ny fandefasana ny script:

ExternalParameter = HTTPS.CertificateExpireDateSimple: powershell.exe -File "servershareNetXMS_CertExpireDateSimple.ps1"

Raha jerena fa ny script dia natomboka tamin'ny tambajotra, mila tadidinao ny momba Politika famonoana, ary aza adino koa ny hafa "-NoLogo -NoProfile -NonInteractive", izay nesoriko mba ho mora kokoa ny mamaky kaody.

Vokatr'izany, ny config agent dia toa izao:

#
# NetXMS agent configuration file
# Created by agent installer at Thu Jun 13 11:24:43 2019
#
 
MasterServers = netxms.corp.testcompany.ru
ConfigIncludeDir = C:NetXMSetcnxagentd.conf.d
LogFile = {syslog}
FileStore = C:NetXMSvar
SubAgent = ecs.nsm
SubAgent = filemgr.nsm
SubAgent = ping.nsm
SubAgent = logwatch.nsm
SubAgent = portcheck.nsm
SubAgent = winperf.nsm
SubAgent = wmi.nsm
 
ExternalParameter = HTTPS.CertificateExpireDateSimple: powershell.exe -File "servershareNetXMS_CertExpireDateSimple.ps1"

Aorian'izany dia mila mamonjy ny config ianao ary avereno indray ny mpandraharaha. Azonao atao izany avy amin'ny Console NetXMS: sokafy ny config (Edit agent's configuration file), amboary izany, tanteraho Save&Apply, ka ho vokatr'izany, raha ny marina, dia hitranga izany. Avy eo avereno vakiana ny fanitsiana (Poll> Configuration), raha tsy manana hery hiandry mihitsy ianao. Aorian'ireo dingana ireo dia tokony ho azonao atao ny manampy ny masontsivanay manokana.

Ao amin'ny console NetXMS mandehana mankany Fanamboarana fanangonana angona mpizara fanandramana izay hanara-maso ny mari-pankasitrahana ary hamorona paramètre vaovao any (amin'ny ho avy, aorian'ny fanamafisana, dia misy dikany ny mamindra izany amin'ny maodely). Safidio ny HTTPS.CertificateExpireDateSimple avy amin'ny lisitra, ampidiro famaritana misy anarana mazava, apetraho amin'ny Integer ny karazana ary amboary ny elanelam-pifidianana. Ho an'ny tanjona debugging, dia misy dikany ny manao azy ho fohy kokoa, 30 segondra, ohatra. Efa vonona ny zava-drehetra, ampy izay.

Azonao atao ny manamarina ... tsia, aloha loatra. Ankehitriny, mazava ho azy, tsy hahazo na inona na inona isika. Satria fotsiny tsy mbola voasoratra ny script. Ndeha hanitsy io tsy fahampiana io. Ny script dia hampiseho isa fotsiny, ny isan'ny andro sisa mandra-pahatapitry ny taratasy fanamarinana. Ny kely indrindra amin'ny rehetra misy. Ohatra script:

try {
    # ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ всС сСртификаты ΠΈΠ· Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° сСртификатов
    $lmCertificates = @( Get-ChildItem -Recurse -path 'Cert:LocalMachineMy' -ErrorAction Stop )
     
    # Если сСртификатов Π½Π΅Ρ‚, Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ "10 Π»Π΅Ρ‚"
    if ($lmCertificates.Count -eq 0) { return 3650 }
 
    # ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Expiration Date всСх сСртификатов
    $expirationDates = @( $lmCertificates | ForEach-Object { return $_.NotAfter } )
 
    # ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π±Π»ΠΈΠ·ΠΊΠΈΠΉ Expiration Date ΠΈΠ· всСх
    $minExpirationDate = ($expirationDates | Measure-Object -Minimum -ErrorAction Stop ).Minimum
 
    # ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π±Π»ΠΈΠ·ΠΊΠΈΠΉ Expiration Date Π² количСство ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ Π΄Π½Π΅ΠΉ с ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ΠΌ Π² ΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ сторону
    $daysLeft = [Math]::Floor( ($minExpirationDate - [DateTime]::Now).TotalDays )
 
    # Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
    return $daysLeft
}
catch {
    return -1
}

Toy izao no miseho:

Fanaraha-maso ny daty lany daty fanamarinana ao amin'ny Windows amin'ny NetXMS

723 andro, efa ho roa taona sisa vao tapitra ny taratasy fanamarinana. Lojika izany, satria namoaka mari-pankasitrahana ho an'ny dabilio fitsapana Exchange aho vao haingana.

Safidy mora izany. Angamba hisy ho afa-po amin'izany, saingy naniry bebe kokoa izahay. Izahay dia nametraka ny tenanay mba hahazoana lisitr'ireo mari-pankasitrahana rehetra ao amin'ny server, amin'ny anarana, ary hahitan'ny tsirairay ny isan'ny andro tavela mandra-pahatapitry ny taratasy fanamarinana.

Ny safidy faharoa, somary sarotra kokoa.

Averinay indray ny config agent ary eo, fa tsy ny tsipika miaraka amin'ny ExternalParameter, dia manoratra roa hafa izahay:

ExternalList = HTTPS.CertificateNames: powershell.exe -File "serversharenetxms_CertExternalNames.ps1"
ExternalParameter = HTTPS.CertificateExpireDate(*): powershell.exe -File "serversharenetxms_CertExternalParameter.ps1" -CertificateId "$1"

Π’ ExternalList mahazo lisitry ny tady fotsiny izahay. Amin'ny tranga misy antsika, lisitry ny tady misy anarana fanamarinana. Hahazo lisitr'ireo andalana ireo isika amin'ny fampiasana ny script. Anaran'ny lisitra - HTTPS.CertificateNames.

Script NetXMS_CertNames.ps1:

#Бписок Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΈΠΌΠ΅Π½ сСртификатов
$nameTypeList = @(
        [System.Security.Cryptography.X509Certificates.X509NameType]::SimpleName,
        [System.Security.Cryptography.X509Certificates.X509NameType]::DnsName,
        [System.Security.Cryptography.X509Certificates.X509NameType]::DnsFromAlternativeName,
        [System.Security.Cryptography.X509Certificates.X509NameType]::UrlName,
        [System.Security.Cryptography.X509Certificates.X509NameType]::EmailName,
        [System.Security.Cryptography.X509Certificates.X509NameType]::UpnName
)
 
#Π˜Ρ‰Π΅ΠΌ всС сСртификаты, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡
$certList = @( Get-ChildItem -Path 'Cert:LocalMachineMy' | Where-Object { $_.HasPrivateKey -eq $true } )
 
#ΠŸΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ списку сСртификатов, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ строку "Имя сСртификата - Π”Π°Ρ‚Π° - Thumbprint" ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π΅Ρ‘
foreach ($cert in $certList) {
    $name = '(unknown name)'
    try {
        $thumbprint = $cert.Thumbprint
        $dateExpire = $cert.NotAfter
        foreach ($nameType in $nameTypeList) {
            $name_temp = $cert.GetNameInfo( $nameType, $false)
            if ($name_temp -ne $null -and $name_temp -ne '') {
                $name = $name_temp;
                break;
            }
        }
        Write-Output "$($name) - $($dateExpire.ToString('dd.MM.yyyy')) - [T:$($thumbprint)]"
    }
    catch {
        Write-Error -Message "Error processing certificate list: $($_.Exception.Message)"
    }
}

Ary efa in ExternalParameter Mampiditra andalana avy amin'ny lisitra ExternalList izahay, ary amin'ny vokatra dia mitovy ny isan'ny andro ho an'ny tsirairay. Ny famantarana dia ny Thumbprint ny taratasy fanamarinana. Mariho fa ny HTTPS.CertificateExpireDate dia misy asterisk (*) amin'ity variana ity. Ilaina izany mba hanekeny ny variables ivelany, ny CertificateId ihany.

Script NetXMS_CertExpireDate.ps1:

#ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ входящий ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ $CertificateId
param (
    [Parameter(Mandatory=$false)]
    [String]$CertificateId
)
 
#ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° сущСствованиС
if ($CertificateId -eq $null) {
    Write-Error -Message "CertificateID parameter is required!"
    return
}
 
#По Thumbprint ΠΈΠ· строки Π² $CertificateId ΠΈΡ‰Π΅ΠΌ сСртификат ΠΈ опрСдСляСм Π΅Π³ΠΎ Expiration Date 
$certId = $CertificateId;
try {
    if ($certId -match '^.*[T:(?<Thumbprint>[A-Z0-9]+)]$') {
        $thumbprint = $Matches['Thumbprint']
        $certificatePath = "Cert:LocalMachineMy$($thumbprint)"
         
        if (Test-Path -PathType Leaf -Path $certificatePath ) {
            $certificate = Get-Item -Path $certificatePath;
            $certificateExpirationDate = $certificate.NotAfter
            $certificateDayToLive = [Math]::Floor( ($certificateExpirationDate - [DateTime]::Now).TotalDays )
            Write-Output "$($certificateDayToLive)";
        }
        else {
            Write-Error -Message "No certificate matching this thumbprint found on this server $($certId)"
        }
    }
    else {
        Write-Error -Message "CertificateID provided in wrong format. Must be FriendlyName [T:<thumbprint>]"
    }
}
catch {
    Write-Error -Message "Error while executing script: $($_.Exception.Message)"
}

Ao amin'ny Configuration Collection Data an'ny mpizara dia mamorona paramètre vaovao izahay. Ao amin'ny Parameter dia misafidy ny antsika isika HTTPS.CertificateExpireDate(*) avy amin'ny lisitra, ary (attention!) hanova ny asterisk ho {ohatra}. Ity teboka manan-danja ity dia ahafahanao mamorona kaontera mitokana ho an'ny tranga tsirairay (certificat). Ny ambiny dia feno toy ny tamin'ny dikan-teny teo aloha:

Fanaraha-maso ny daty lany daty fanamarinana ao amin'ny Windows amin'ny NetXMS

Raha te hanana zavatra hamoronana kaontera, ao amin'ny tabilao Instance Discovery dia mila misafidy Lisitry ny Agent amin'ny lisitra ianao ary ao amin'ny saha Anaran'ny lisitra dia ampidiro ny anaran'ny ExternalList avy amin'ny script - HTTPS.CertificateNames.

Saika vonona, miandrasa kely na manery Poll > Configuration sy Poll > Instance Discovery raha toa ka tsy azo atao ny miandry. Vokatr'izany dia mahazo ny mari-pankasitrahana rehetra misy fe-potoana manankery izahay:

Fanaraha-maso ny daty lany daty fanamarinana ao amin'ny Windows amin'ny NetXMS

Inona no ilainao? Eny, eny, ny kankan'ny fahalavorariana ihany no mijery an'ity Thumbprint tsy ilaina amin'ny anaran'ny kaontera amin'ny maso malahelo ary tsy mamela ahy hamita ilay lahatsoratra. Mba hamahana azy, sokafy indray ny fananana counter ary eo amin'ny tabilao Instance Discovery, ao amin'ny saha "Script filtre de Instance Discovery", ampio ilay voasoratra ao. NXSL (Fiteny anatiny NetXMS):

instance = $1;
 if (instance ~= "^(.*)s-s[T:[a-zA-Z0-9]+]$")
 {
 return %(true, instance, $1);
 }
 return true;

izay hanivana Thumbprint:

Fanaraha-maso ny daty lany daty fanamarinana ao amin'ny Windows amin'ny NetXMS

Ary mba hampisehoana azy voasivana, eo amin'ny tabilao General ao amin'ny saha Famaritana, ovay ny CertificateExpireDate: {instance} ho CertificateExpireDate: {instance-name}:

Fanaraha-maso ny daty lany daty fanamarinana ao amin'ny Windows amin'ny NetXMS

Izay ihany, farany ny tsipika fahatongavana avy amin'ny KDPV:

Fanaraha-maso ny daty lany daty fanamarinana ao amin'ny Windows amin'ny NetXMS

Beauty?

Ny hany sisa tavela dia ny fametrahana fampandrenesana mba hahatongavan'izy ireo amin'ny mailaka rehefa tapitra ny taratasy fanamarinana.

1. Voalohany dia mila mamorona Modely hetsika isika mba hampavitrika azy rehefa mihena ny sandan'ny mpanohitra amin'ny tokonana napetrakay. IN Event Configuration andao hamorona modely roa vaovao misy anarana toy ny CertificateExpireDate_Threshold_Activate misy sata fampitandremana:

Fanaraha-maso ny daty lany daty fanamarinana ao amin'ny Windows amin'ny NetXMS

ary mitovy CertificateExpireDate_Threshold_Deactivate miaraka amin'ny sata Normal.

2. Avy eo, mankanesa any amin'ny fananana counter ary apetraho eo amin'ny tabilao Tresholds ny tokonam-baravarana:

Fanaraha-maso ny daty lany daty fanamarinana ao amin'ny Windows amin'ny NetXMS

izay hisafidianantsika ny hetsika noforonina CertificateExpireDate_Threshold_Activate sy CertificateExpireDate_Threshold_Deactivate, mametraka ny isan'ny santionany (Samples) ho 1 (indrindra ho an'ity kaontera ity dia tsy misy dikany ny mametraka bebe kokoa), ny sanda dia 30 (andro), ohatra, ary, zava-dehibe, mametraka ny fotoana famerimberenana hetsika. Ho an'ny mari-pankasitrahana amin'ny famokarana dia napetraka indray mandeha isan'andro aho (86400 segondra), raha tsy izany dia mety ho rendrika amin'ny fampandrenesana ianao (izay, raha ny marina, nitranga indray mandeha, hany ka feno ny boaty mailaka nandritra ny faran'ny herinandro). Ho an'ny fotoana debugging, misy dikany ny mametraka azy ambany kokoa, 60 segondra, ohatra.

3. The Action Configuration Mamorona mΓ΄dely taratasy fampandrenesana, toy izao:

Fanaraha-maso ny daty lany daty fanamarinana ao amin'ny Windows amin'ny NetXMS

Ireo rehetra ireo %m, %S, sns. - macro izay hanoloana ny soatoavina avy amin'ny paramètre. Izy ireo dia voafaritra amin'ny antsipiriany kokoa ao amin'ny BOKY NetXMS.

4. Ary farany, manambatra ireo teboka teo aloha, ho Politika fanodinana hetsika mamorona fitsipika izay hamoronana fanairana ary handefasana taratasy:

Fanaraha-maso ny daty lany daty fanamarinana ao amin'ny Windows amin'ny NetXMS

Mamonjy ny politika izahay, azo andrana ny zava-drehetra. Aleo apetraka ambony kokoa ny tokonam-baravarana hanamarina. Tapitra ao anatin'ny 723 andro ny taratasy fanamarinana akaiky ahy indrindra, napetrako ho 724 izany mba hanamarinana. Vokatr'izany dia mahazo izao fanairana manaraka izao izahay:

Fanaraha-maso ny daty lany daty fanamarinana ao amin'ny Windows amin'ny NetXMS

ary ity fampahafantarana mailaka ity:

Fanaraha-maso ny daty lany daty fanamarinana ao amin'ny Windows amin'ny NetXMS

Izay no azo antoka izao. Mazava ho azy fa azo atao ny manangana dashboard sy manangana grafika, fa ho an'ny fanamarinana dia tsipika mahitsy tsy misy dikany sy mankaleo izany, fa tsy toy ny sarin'ny processeur na ny fitadidiana, ohatra. Saingy, bebe kokoa momba izany amin'ny fotoana hafa.

Source: www.habr.com

Add a comment