Build precise queries to find exactly what you need
Press ESC to close
When running the VB script, dcdiag /test:fsmocheck on long domain name, the vbscript get the result “passed test FsmoCheck” on multiple lines, and the script is getting a false error. For example:
Running enterprise tests on : verylong.sub.topdomaine.com ———————————— Starting test: FsmoCheck ……………………. verylong.sub.topdomaine.com passed test FsmoCheck ———————————— The FsmoCheck appears on the line after “passed test”. The fix when a line end with “passed test”, then add the next line at the end if this line. The code fix is available at: https://github.com/mst-amour/nagios/blob/main/check_ad.vbs
Here is the updated function to update: ——————————– ‘call dcdiag and parse the output sub exec(strCmd) ‘Declare variables dim objShell : Set objShell = WScript.CreateObject(“WScript.Shell”) dim objExecObject, lineout, tmpline, tmpline_no_cr_lf, end_passed_str, tmpline_next lineout = “” ‘Command line options we’re using ‘ pt strCmd
Set objExecObject = objShell.Exec(strCmd)
‘Loop until end of output from dcdiag do While not objExecObject.StdOut.AtEndOfStream tmpline = lcase(objExecObject.StdOut.ReadLine())
tmpline_no_cr_lf = Replace(tmpline,chr(10),””) ‘ Newline tmpline_no_cr_lf = Replace(tmpline,chr(13),””) ‘ CR
call parselang(tmpline_no_cr_lf) lineout = lineout + tmpline if (instr(tmpline_no_cr_lf, “…..”)) then ‘testresults start with a couple of dots, so lets reset the lineout buffer lineout= tmpline
if (len(tmpline_no_cr_lf) > 13) then end_passed_str = Mid(tmpline_no_cr_lf, Len(tmpline_no_cr_lf) – 10, 11)
if(StrComp(end_passed_str, “passed test”) = 0) then tmpline_next = lcase(objExecObject.StdOut.ReadLine()) tmpline_next = Replace(tmpline_next,chr(10),””) ‘ Newline tmpline_next = Replace(tmpline_next,chr(13),””) ‘ CR
tmpline_no_cr_lf = tmpline_no_cr_lf + tmpline_next end if
end if end if
if instr(tmpline_no_cr_lf, lcase(strOK)) then ‘we have a strOK String which means we have reached the end of a result output (maybe on newline) call parse(tmpline_no_cr_lf) lineout = “” end if loop ‘ Catch the very last test (may be in the lineout buffer but not yet processed) if instr(lineout, lcase(strOK) & ” test”) OR instr(lineout, lcase(strNotOK) & ” test”) then ‘we have a strOK String which means we have reached the end of a result output (maybe on newline) call parse(lineout) end if end sub
We’ve completely redesigned the world’s largest repository of Nagios plugins and monitoring tools. Join thousands of users sharing monitoring solutions for servers, applications, and everything in between.
Due to our redesign, all existing accounts require a password reset to access your account again.
Ready to explore 6,100+ projects and contribute to the community?
Reset Password Create Account
Happy Monitoring!