1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #!/usr/bin/env -S php
- <?php
- #-
- # Copyright (c) 2011-2015 Joe Clarke <jclarke@cisco.com>
- # All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
- # modification, are permitted provided that the following conditions
- # are met:
- # 1. Redistributions of source code must retain the above copyright
- # notice, this list of conditions and the following disclaimer.
- # 2. Redistributions in binary form must reproduce the above copyright
- # notice, this list of conditions and the following disclaimer in the
- # documentation and/or other materials provided with the distribution.
- #
- # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- # SUCH DAMAGE.
- #
- #
- include_once '/usr/local/www/apache22/data/db.inc.php';
- include_once 'swreg.inc.php';
- require_once 'MDB2.php';
- require_once 'Log.php';
- $dsn = "mysql://$db_user:$db_pass@$db_host/$db_name";
- $options = array('result_buffering', false);
- $dbh = MDB2::factory($dsn, $options);
- if (PEAR::isError($dbh)) {
- die($dbh->getMessage());
- }
- $dbh->setFetchMode(MDB2_FETCHMODE_ASSOC);
- $logger = Log::singleton('file', LOGFILE, TOOL_NAME . ' : Pinger');
- if ($logger === FALSE) {
- die("Failed to open logfile.\n");
- }
- $mask = Log::UPTO(LOG_LEVEL);
- $logger->setMask($mask);
- $FPING = FPING_PROGRAM;
- $sql = 'SELECT ps.serial_number AS serial_number, ls.ip_address AS ip_address, ps.device_status AS status FROM DEVICE_MAP ps, SWITCHES ls WHERE ps.assigned_switch = ls.name';
- $res = $dbh->query($sql);
- if (PEAR::isError($res)) {
- $logger->crit("Failed to execute '$sql': {$res->getUserInfo()}");
- exit(1);
- }
- while ($row = $res->fetchRow()) {
- $status = 0;
- $output = NULL;
- $result = 0;
- exec("$FPING -q -C 1 {$row['ip_address']} 2>/dev/null", $output, $result);
- exec("$FPING -q -C 1 {$row['ip_address']} 2>/dev/null", $output, $result);
- if ($result == 0) {
- $status = 2;
- } else {
- if ($row['status'] == 2 || $row['status'] == 1) {
- $status = 1;
- }
- }
- $sql = 'UPDATE DEVICE_MAP SET device_status = ? WHERE serial_number = ?';
- $sth = $dbh->prepare($sql);
- if (PEAR::isError($sth)) {
- $logger->error("Failed to prepapre query '$sql' : {$sth->getUserInfo()}");
- continue;
- }
- $lres = $sth->execute(array($status, $row['serial_number']));
- $sth->free();
- if (PEAR::isError($lres)) {
- $logger->error("Failed to execute query '$sql' : {$lres->getUserInfo()}");
- continue;
- }
- }
- $dbh->disconnect();
- $logger->close();
- ?>
|