hi,
for a nagios (monitoring system) check I need to scrape a web site
(this is for a network device, a UPS, whatever). This particular
device only offers some functionality through a web interface.
I get the content of the site using WWW::Mechanize after login in
(this is really simple using the submit_form method, by the way).
Then I save the text of the website in a variable like this:
my $text = $mech->text();
if ( $text =~ /critical alarm/i ) {
print "Bingo\n";
}
This works, if I unplug something I get the critical alarm, I replug
the stuff and the string does not match anymore.
$text has this (very long line):
APC | UPS Network Management Card 2Skip to Main ContentUPS Network
Management Card 2Smart-UPS/Matrix Application 1user | English | Log
Off | Help | HomeStatusUPSNetworkControlUPSSecuritySession
ManagementNetworkReset/Reboot ConfigurationPower SettingsShutdownUPS
GeneralSelf-Test ScheduleSchedulingPowerChute ClientsSync ControlThird
Party SupportEnergyWiseSecuritySession ManagementPing ResponseLocal
UsersManagementDefault SettingsRemote
UsersAuthenticationRADIUSFirewall ConfigurationActive PolicyActive
RulesCreate/Edit PolicyLoad PolicyTestNetworkTCP/IPIPv4 SettingsIPv6
SettingsPort SpeedDNS ConfigurationTestWebAccessSSL
CertificateConsoleAccessSSH Host KeySNMPv1AccessAccess
ControlSNMPv3AccessUser ProfilesAccess ControlFTP
serverNotificationEvent ActionsBy EventBy
GroupE-mailServerRecipientsSSL CertificatesTestSNMP TrapsTrap
ReceiversTestRemote
MonitoringGeneralIdentificationDate/TimeModeDaylight SavingsUser
Config FileQuick LinksLogsSyslogServersSettingsTestTestsUPSNetworkLed
BlinkLogsEventsLogReverse
LookupSizeDataLogIntervalRotationSizeFirewallAboutUPSNetworkSupport
Smart-UPS 1400 RM: 1 Critical Alarm PresentA site wiring fault exists.
Recent Device Events DateTimeEventMore Events › Knowledge Base |
Schneider Electric Product Center | Schneider Electric Downloads ©
2012, Schneider Electric. All rights reserved.
I am only interested in the text '1 Critical Alarm PresentA site
wiring fault exists'; is it possible to match this is a simple way (in
fact, the text after 'Critical Alarm Present' may vary, it would be
awesome to be able to get that easily. Otherwise I am afraid I will
have to start parsing html with HTML::TableExtract
--
Groeten,
natxo
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/