Hi,
I am trying to figure out how to check a web page for the existence of multiple text string on one page. In particular I need to see if 3 different strings exist on a page and if any of them are missing to throw an alert.
I have tried check_http with the -s option listing all 3 of the strings as separate -s entries but it doesn't appear that this works to check for all 3 combined.
Here is what I have:
check_http -H my.website.com.com -p 13001 -u /MonitorStartupServlet/MonitorStartup -s EmailMonitor -s WswMonitor -s Notifier --timeout=30
It seems to check and if only one of the strings is there then it returns an OK.
Search for multiple text strings on web page
-
- Posts: 125
- Joined: Tue Mar 18, 2014 3:20 pm
Re: Search for multiple text strings on web page
The optarg functions in the plugins project will only process the last arg value for any redundant args. So you cannot use multiple switches (like -r or -R). Additionally, I don't think you can really achieve a full "AND" statement as check_http does not have look ahead. You can though, very easily use the multiline switch (-l) and wildcards (.*) to achieve something close.
For example, nagios-plugins.org has a bunch of text. We want to test for the existence of the following 3 strings: enhancements, check_ntp, and reverts. These strings were chosen as they exist on separate lines. As long as you know the order of these words appearing, you can test as follows:
It returns:
Now lets change the order of the strings:
Returns:
So if you know the order of appearance, you could use a regex wildcard string match. If you are unsure of the order, you could also use the logical "OR" ( | ) operator:
Returns:
But now we are just getting silly. Enjoy the rabbit hole.
EDIT: I probably should have used your example. So with the above syntax, your check would look like (assuming the order is correct):
For example, nagios-plugins.org has a bunch of text. We want to test for the existence of the following 3 strings: enhancements, check_ntp, and reverts. These strings were chosen as they exist on separate lines. As long as you know the order of these words appearing, you can test as follows:
Code: Select all
./check_http -H nagios-plugins.org -u /nagios-plugins-2-0-3-released/ -l -R "enhancements.*check_ntp.*reverts"
Code: Select all
HTTP OK: HTTP/1.1 200 OK - 56865 bytes in 1.517 second response time |time=1.516833s;;;0.000000 size=56865B;;;0
Code: Select all
./check_http -H nagios-plugins.org -u /nagios-plugins-2-0-3-released/ -l -R "enhancements.*reverts.*check_ntp"
Code: Select all
HTTP CRITICAL: HTTP/1.1 200 OK - pattern not found - 22889 bytes in 1.397 second response time |time=1.396615s;;;0.000000 size=22889B;;;0
Code: Select all
./check_http -H nagios-plugins.org -u /nagios-plugins-2-0-3-released/ -l -R "enhancements.*reverts.*check_ntp|enhancements.*check_ntp.*reverts"
Code: Select all
HTTP OK: HTTP/1.1 200 OK - 22889 bytes in 1.571 second response time |time=1.570581s;;;0.000000 size=22889B;;;0
EDIT: I probably should have used your example. So with the above syntax, your check would look like (assuming the order is correct):
Code: Select all
check_http -H my.website.com.com -p 13001 -u /MonitorStartupServlet/MonitorStartup -r "EmailMonitor.*WswMonitor.*Notifier" --timeout=30
Former Nagios employee
"It is turtles. All. The. Way. Down. . . .and maybe an elephant or two."
VI VI VI - The editor of the Beast!
Come to the Dark Side.
"It is turtles. All. The. Way. Down. . . .and maybe an elephant or two."
VI VI VI - The editor of the Beast!
Come to the Dark Side.
-
- Posts: 125
- Joined: Tue Mar 18, 2014 3:20 pm
Re: Search for multiple text strings on web page
That seems to work.
Pardon my ignorance but why the " * " in front of the second and third strings?
Pardon my ignorance but why the " * " in front of the second and third strings?
Re: Search for multiple text strings on web page
No problem. I think wiki explains it well:rickwilson7425 wrote: Pardon my ignorance but why the " * " in front of the second and third strings?
From: http://en.wikipedia.org/wiki/Wildcard_c ... xpressionsRegular expressions
In regular expressions, the period (".", also called "dot") is the wildcard character for a single character. Combined with the asterisk operator (.*) it will match any number of characters.
Combined with the period, it basically allows us to use the wildcard for *any* number of characters.
Regex is pretty neat and powerful. Definitely worth learning if you are in a technical field - especially those that require shell parsing or programming in general.
Hope this helps, cheers!
Former Nagios employee
"It is turtles. All. The. Way. Down. . . .and maybe an elephant or two."
VI VI VI - The editor of the Beast!
Come to the Dark Side.
"It is turtles. All. The. Way. Down. . . .and maybe an elephant or two."
VI VI VI - The editor of the Beast!
Come to the Dark Side.
-
- Posts: 125
- Joined: Tue Mar 18, 2014 3:20 pm
Re: Search for multiple text strings on web page
Thanks a lot Andy.
Please feel free to close this thread.
Please feel free to close this thread.
Re: Search for multiple text strings on web page
Will do! Have a good weekend!
Former Nagios employee
"It is turtles. All. The. Way. Down. . . .and maybe an elephant or two."
VI VI VI - The editor of the Beast!
Come to the Dark Side.
"It is turtles. All. The. Way. Down. . . .and maybe an elephant or two."
VI VI VI - The editor of the Beast!
Come to the Dark Side.