function set_switch_port_speed ($host, $community, $port_no, $speed, $model='2960'){
// use SNMP to set speed. $speed can be 10, 100, 1000 or 0 to shutDown port.
if(!in_array($speed, array(10, 100, 1000))){
//echo 'Wrong port speed! '.$speed."\n";
return false;
}
$oid = '';
if(stristr($model, '2960')){ // magic smtp strings, path to
$oid = '1.3.6.1.4.1.9.5.1.4.1.1.9.1.'.$port_no;
}else{
$oid = '1.3.6.1.4.1.9.9.87.1.4.1.1.33.0.'.$port_no; // c2900PortAdminSpeed
}
$speed *= 1000000;
echo "setting new speed...\n";
return snmpset($host, $community, $oid, 'i', $speed);
}
function set_switch_port_status($host, $community, $port_no, $status, $model=''){
// use SNMP to set status. $status can be 0 or 1
$status = (int) $status;
if(!in_array($status, array(0, 1))){
echo 'Wrong port status! '.$status."\n";
return false;
}
// decode status, 1 means UP 2 means down
if($status == 0){
$status = 2;
}
$oid = '';
// for 2960 set oid = 'IF-MIB::ifAdminStatus.101'.$port_no;
if(stristr($model, '2960')){
if($port_no < 10){
$port_no = '0'.$port_no;
}
$oid = 'IF-MIB::ifAdminStatus.101'.$port_no;
}else{
$oid = 'IF-MIB::ifAdminStatus.'.($port_no + 1); // first interface on 2900xl is VLAN1
}
return snmpset($host, $community, $oid, 'i', $status);
}
function getRRDData($rrd_file, $start, $end = ''){
$str_end = '';
if($end)
$str_end = ' -e '.$end;
$res = exec('/usr/local/bin/rrdtool fetch '.$rrd_file.' AVERAGE -s '.$start.$str_end, $output);
if(!$res || (count($output) < 1)){
return array(); // smth is wrong
}
// we need only 3 ... N-1 elements
$rrd_data = array();
for($i = 2; $i < (count($output) ); $i++){
// replace NAN with 0
if(stristr($output[$i], 'nan'))
$output[$i] = str_ireplace('nan', '0', $output[$i]);
$values = explode(' ', str_replace(':', '', $output[$i]));
// check timestamp
if($end && ($values[0] > $end))
break;
$rrd_data[] = $output[$i];
}
return $rrd_data;
}
Source: https://habr.com/ru/post/115539/