Simple script to collect SNMP information using PHP

Install PHP


yum install php, php-pgsql, php-snmp


Write code


network_poller.php


<?php


//DB connection

$conn = "host=127.0.0.1 port=5432 dbname=networkdb user=netuser password=P@ssw0rd options='--client_encoding=UTF8'";

$dbconn = pg_connect($conn);

if(!$dbconn) {

  echo "Error: Unable to open database\n";

} else {

  echo "Opened database successfully\n";

}


//Select query checking

$QUERY_SELECT_NET_DEVICE = "SELECT ipaddress,netdevicename,model,annotation FROM network_device_list";

$SELECT = pg_query($QUERY_SELECT_NET_DEVICE) or die('Query failed: ' . pg_last_error());


//Clean table

$QUERY_DELETE_NET_STATUS = "DELETE FROM network_device_status";

$DELETE = pg_query($QUERY_DELETE_NET_STATUS) or die('Query failed: ' . pg_last_error());


while ($row = pg_fetch_row($SELECT)) {

  echo "NETWORK DEVICE STATUS: $row[0] $row[1] $row[2] $row[3]";

$CPULOAD_STRING = snmpwalk("$row[0]", "P@ssw0rd", "1.3.6.1.4.1.9.9.109.1.1.1.1.8");

$CPULOAD_NUMERIC = preg_replace( '/Gauge32:/', '', $CPULOAD_STRING );

$MEMPROCUSED =  snmpwalk("$row[0]", "P@ssw0rd", "1.3.6.1.4.1.9.9.48.1.1.1.5.1");

$MEMPROCUSED_NUM = preg_replace( '/Gauge32:/', '', $MEMPROCUSED );

$MEMPROCFREE =  snmpwalk("$row[0]", "P@ssw0rd", "1.3.6.1.4.1.9.9.48.1.1.1.6.1");

$MEMPROCFREE_NUM = preg_replace( '/Gauge32:/', '', $MEMPROCFREE );

$MEMIOUSED =  snmpwalk("$row[0]", "P@ssw0rd", "1.3.6.1.4.1.9.9.48.1.1.1.5.2");

$MEMIOUSED_NUM = preg_replace( '/Gauge32:/', '', $MEMIOUSED );

$MEMIOFREE =  snmpwalk("$row[0]", "P@ssw0rd", "1.3.6.1.4.1.9.9.48.1.1.1.6.2");

$MEMIOFREE_NUM = preg_replace( '/Gauge32:/', '', $MEMIOFREE );

$UPTIME = snmpwalk("$row[0]", "P@ssw0rd", "1.3.6.1.6.3.10.2.1.3");

$UPTIME_NUM = preg_replace( '/[^0-9]/', '', $UPTIME );


//Insert data to the table

$NETWORK_DEVICE_STATUS = "INSERT INTO network_device_status (ipaddress, netdevicename, model, annotation, cpuload, memprocused, memprocfree, memioused, memiofree, uptime) VALUES ('$row[0]','$row[1]','$row[2]','$row[3]','$CPULOAD_NUMERIC[0]','$MEMPROCUSED_NUM[0]','$MEMPROCFREE_NUM[0]', '$MEMIOUSED_NUM[0]','$MEMIOFREE_NUM[0]','$UPTIME_NUM[0]' )";

$NETDEVICENAMECHECK = "SELECT netdevicename FROM network_device_status WHERE netdevicename='$row[1]'";

$UPSERTCHECK = pg_query($NETDEVICENAMECHECK);

$NUM_ROWS = pg_num_rows($UPSERTCHECK);

if ($NUM_ROWS == 0) {

  pg_query($NETWORK_DEVICE_STATUS);

  echo "Inserted succesfully\n";

} else {

  echo "Not inserted\n";

}

} //end of while



?>



Run

php network_poller.php



Comments