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
Post a Comment