Monatóireacht a dhéanamh ar dháta éaga an deimhnithe i Windows ar NetXMS

Le déanaí thugamar aghaidh ar an tasc monatóireacht a dhéanamh ar thréimhse bailíochta na ndeimhnithe ar fhreastalaithe Windows. Bhuel, mar a d'éirigh liom tar éis na deimhnithe iompú isteach i bpumpkin arís agus arís eile, ag an am céanna nuair a bhí an comhghleacaí bearded a bhí freagrach as a n-athnuachan ar laethanta saoire. Tar éis sin, bhí amhras orm féin agus ar rud éigin agus chinn siad smaoineamh air. Ós rud é go bhfuil córas monatóireachta NetXMS á chur i bhfeidhm againn go mall, is é an príomh-iarrthóir agus, i bprionsabal, an t-aon iarrthóir don tasc seo.

Fuarthas an toradh ar deireadh san fhoirm seo a leanas:

Monatóireacht a dhéanamh ar dháta éaga an deimhnithe i Windows ar NetXMS

Agus leanann an próiseas féin.

Téigh. Níl aon chuntar ionsuite le haghaidh deimhnithe in éag in NetXMS, mar sin ní mór duit do chuid féin a chruthú agus scripteanna a úsáid chun sonraí a sholáthar dó. Ar ndóigh, ar Powershell, is é seo Windows. Ba cheart go léifeadh an script na teastais go léir sa chóras oibriúcháin, go dtógfadh sé a ndáta éaga i laethanta uaidh sin agus go gcuirfí an uimhir seo ar aghaidh chuig NetXMS. Trína ghníomhaire. Sin an áit a dtosóimid.

Rogha a hAon, is simplí. Níl le déanamh agat ach líon na laethanta a fháil go dtí dáta éaga an deimhnithe agus an dáta is gaire duit.

Le go mbeidh a fhios ag an bhfreastalaí NetXMS go bhfuil ár bparaiméadar saincheaptha ann, caithfidh sé é a fháil ón ngníomhaire. Seachas sin, ní féidir an paraiméadar seo a chur leis toisc go bhfuil sé as láthair. Dá bhrí sin, sa chomhad cumraíochta gníomhaire nxagentd.conf cuirimid teaghrán paraiméadar seachtrach ar a dtugtar HTTPS.CertificateExpireDateSimple, ina gcláróimid seoladh na scripte:

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

Ós rud é go bhfuil an script seolta thar an líonra, ní mór duit cuimhneamh faoi Beartas Forghníomhaithe, agus freisin ná déan dearmad ar an gceann eile “-NoLogo -NoProfile -NonInteractive”, a d’fhág mé ar lár le haghaidh inléiteacht cóid níos fearr.

Mar thoradh air sin, breathnaíonn an cumraíocht gníomhaire rud éigin mar seo:

#
# 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"

Tar éis seo, ní mór duit an config a shábháil agus an gníomhaire a atosú. Is féidir leat é seo a dhéanamh ó chonsól NetXMS: oscail an cumraíocht (Cuir comhad cumraíochta an ghníomhaire in eagar), cuir in eagar é, rith Sábháil&Cuir i bhFeidhm, agus mar thoradh air sin, i ndáiríre, tarlóidh an rud céanna. Ansin athléigh an chumraíocht (Poll > Cumraíocht), mura bhfuil an neart agat fanacht ar chor ar bith. Tar éis na céimeanna seo, ba cheart go mbeifeá in ann ár bparaiméadar saincheaptha a chur leis.

Sa chonsól NetXMS téigh go dtí Cumraíocht Bhailiú Sonraí freastalaí turgnamhach ar a bhfuil muid ag dul chun monatóireacht a dhéanamh ar dheimhnithe agus paraiméadar nua a chruthú ann (sa todhchaí, tar éis cumraíocht, déanann sé ciall é a aistriú chuig teimpléid). Roghnaigh HTTPS.CertificateExpireDateSimple ón liosta, cuir isteach Cur síos le hainm soiléir, socraigh an cineál go Slánuimhir agus cumraigh an t-eatramh vótaíochta. Chun críocha dífhabhtaithe, tá ciall leis é a dhéanamh níos giorra, 30 soicind, mar shampla. Tá gach rud réidh, is leor sin faoi láthair.

Is féidir leat seiceáil ... ní hea, tá sé ró-luath. Anois, ar ndóigh, ní bhfaighidh muid rud ar bith. Níl ort ach toisc nach bhfuil an script scríofa go fóill. Ceartaimis an easnamh seo. Ní thaispeánfaidh an script ach uimhir, líon na laethanta atá fágtha go dtí go rachaidh an teastas in éag. An chuid is mó íosta ar fad atá ar fáil. Script shamplach:

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
}

Tarlaíonn sé mar seo:

Monatóireacht a dhéanamh ar dháta éaga an deimhnithe i Windows ar NetXMS

723 lá, beagnach dhá bhliain fágtha go dtí go rachaidh an deimhniú in éag. Tá sé loighciúil, mar d’atheisigh mé deimhnithe don bhinse tástála Exchange le déanaí.

Rogha éasca a bhí ann. Is dócha, beidh duine sásta leis seo, ach bhíomar ag iarraidh níos mó. Leagamar an tasc dúinn féin liosta a fháil de na teastais go léir ar an bhfreastalaí, de réir ainm, agus do gach ceann acu líon na laethanta atá fágtha go dtí go dtéann an deimhniú in éag a fheiceáil.

An dara rogha, beagán níos casta.

Arís cuirimid an cumraíocht gníomhaire in eagar agus ansin, in ionad na líne le ExternalParameter, scríobhaimid dhá cheann eile:

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

В Liosta Seachtrach ní fhaigheann muid ach liosta teaghráin. Is é ár gcás, liosta de na teaghráin le hainmneacha deimhnithe. Gheobhaidh muid liosta de na línte seo ag baint úsáide as an script. Ainm an liosta - 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)"
    }
}

Agus cheana féin isteach Paraiméadar Seachtrach Ionchuirimid sraitheanna ón liosta ExternalList, agus ag an aschur faigheann muid an líon céanna laethanta do gach ceann acu. Is é an t-aitheantóir Mionphrionta an deimhnithe. Tabhair faoi deara go bhfuil réiltín (*) sa leagan seo de HTTPS.CertificateExpireDate. Tá sé seo riachtanach ionas go nglacann sé le hathróga seachtracha, díreach ár CertificateId.

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)"
}

I gCumraíocht Bailithe Sonraí an fhreastalaí, cruthaímid paraiméadar nua. I bPaiméadar roghnaíonn muid ár HTTPS.CertificateExpireDate(*) ón liosta, agus (aird!) athraigh an réiltín go {cás}. Tabharfaidh an pointe tábhachtach seo deis duit cuntar ar leith a chruthú do gach cás (teastas). Tá an chuid eile líonta isteach mar a bhí sa leagan roimhe seo:

Monatóireacht a dhéanamh ar dháta éaga an deimhnithe i Windows ar NetXMS

Chun go mbeidh rud éigin agat chun cuntair a chruthú uaidh, ar an táb Instance Discovery ní mór duit Liosta Gníomhairí a roghnú ón liosta agus sa réimse Ainm an Liosta cuir isteach ainm ár ExternalList ón script - HTTPS.CertificateNames.

Beagnach réidh, fan beagán nó cuir iallach ar Vótaíocht > Cumraíocht agus Vótaíocht > Fionnachtain Cáis má tá sé dodhéanta fanacht go hiomlán. Mar thoradh air sin, faigheann muid ár ndeimhnithe go léir le tréimhsí bailíochta:

Monatóireacht a dhéanamh ar dháta éaga an deimhnithe i Windows ar NetXMS

Céard atá ag teastáil uait? Bhuel, tá, ní fhéachann ach worm na foirfeachta ar an Mionphrionta neamhriachtanach seo in ainm an chuntar leis na súile brónacha agus ní ligeann sé dom an t-alt a chríochnú. Chun é a bheathú, oscail airíonna an chuntair arís agus ar an táb Instance Discovery, sa réimse “Script scagaire fionnachtana cásanna”, cuir an ceann atá scríofa ann NXSL (teanga inmheánach NetXMS) script:

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

a scagfaidh Thumbprint:

Monatóireacht a dhéanamh ar dháta éaga an deimhnithe i Windows ar NetXMS

Agus chun é a thaispeáint scagtha, ar an táb Ginearálta sa réimse Description, athraigh CertificateExpireDate: {instance} go CertificateExpireDate: {instance-name}:

Monatóireacht a dhéanamh ar dháta éaga an deimhnithe i Windows ar NetXMS

Sin é, ar deireadh an líne a chríochnú ó KDPV:

Monatóireacht a dhéanamh ar dháta éaga an deimhnithe i Windows ar NetXMS

Nach áilleacht í?

Níl fágtha ach foláirimh a shocrú ionas go dtiocfaidh siad trí ríomhphost nuair a théann an teastas in éag.

1. Ar dtús ní mór dúinn Teimpléad Imeachta a chruthú chun é a ghníomhachtú nuair a laghdaíonn luach an chuntar go dtí tairseach éigin a leagamar síos. IN Cumraíocht Imeachta cruthaímid dhá theimpléad nua le hainmneacha mar CertificateExpireDate_Threshold_Gníomhachtaigh le stádas Rabhadh:

Monatóireacht a dhéanamh ar dháta éaga an deimhnithe i Windows ar NetXMS

agus den chineál céanna CertificateExpireDate_Threshold_Díghníomhachtaigh le Stádas Gnáth.

2. Ansin, téigh go dtí airíonna an chuntar agus socraigh an tairseach ar an táb Tresholds:

Monatóireacht a dhéanamh ar dháta éaga an deimhnithe i Windows ar NetXMS

nuair a roghnaíonn muid ár n-imeachtaí cruthaithe CertificateExpireDate_Threshold_Activate agus CertificateExpireDate_Threshold_Deactivate, socraigh líon na samplaí (Samplaí) go 1 (go sonrach don chuntar seo níl aon phointe ann níos mó a shocrú), is é 30 (laethanta) an luach, mar shampla, agus, níos tábhachtaí, socraigh am athrá na hócáide. Le haghaidh deimhnithe i dtáirgeadh, leag mé é uair amháin sa lá (86400 soicind), ar shlí eile is féidir leat báthadh i bhfógraí (a tharla, dála an scéil, uair amháin, an oiread sin ionas go raibh an bosca poist iomlán thar an deireadh seachtaine). Maidir le ham dífhabhtaithe, déanann sé ciall é a shocrú níos ísle, 60 soicind, mar shampla.

3.In Cumraíocht Gníomhaíochta cruthaigh teimpléad litreach fógra, mar seo:

Monatóireacht a dhéanamh ar dháta éaga an deimhnithe i Windows ar NetXMS

Seo go léir %m, %S, etc. — macraí ina gcuirfear luachanna ónár bparaiméadar in ionad. Déantar cur síos níos mine orthu i lámhleabhar NetXMS.

4. Agus ar deireadh, na pointí roimhe seo a chomhcheangal, isteach Beartas Próiseála Imeachtaí cruthaigh riail faoina gcruthófar Aláram agus ina seolfar litir:

Monatóireacht a dhéanamh ar dháta éaga an deimhnithe i Windows ar NetXMS

Sábhálann muid an polasaí, is féidir gach rud a thástáil. Socróimid an tairseach níos airde le seiceáil. Téann mo theastas is gaire in éag i 723 lá, shocraigh mé go 724 é le seiceáil. Mar thoradh air sin, faighimid an t-aláram seo a leanas:

Monatóireacht a dhéanamh ar dháta éaga an deimhnithe i Windows ar NetXMS

agus an fógra ríomhphoist seo:

Monatóireacht a dhéanamh ar dháta éaga an deimhnithe i Windows ar NetXMS

Sin go léir do cinnte anois. D’fhéadfaí, ar ndóigh, painéal a bhunú agus graif a thógáil, ach do dheimhnithe bheadh ​​siad seo beagán gan bhrí agus leadránach, murab ionann agus graif de phróiseálaithe nó ualach cuimhne, mar shampla. Ach, tuilleadh faoi seo am éigin eile.

Foinse: will.com

Add a comment