1--TEST-- 2Function snmpset 3--CREDITS-- 4Olivier Doucet Olivier Doucet Boris Lytochkin 5--SKIPIF-- 6<?php 7require_once(__DIR__.'/skipif.inc'); 8?> 9--FILE-- 10<?php 11require_once(__DIR__.'/snmp_include.inc'); 12 13//EXPECTF format is quickprint OFF 14snmp_set_quick_print(false); 15snmp_set_valueretrieval(SNMP_VALUE_PLAIN); 16 17echo "Check error handing\n"; 18echo "No type & no value (timeout & retries instead)\n"; 19try { 20 $z = snmpset($hostname, $communityWrite, 'SNMPv2-MIB::sysLocation.0', $timeout, $retries); 21 var_dump($z); 22} catch (\ValueError $e) { 23 echo $e->getMessage() . \PHP_EOL; 24} 25 26echo "No value (timeout instead), retries instead of timeout\n"; 27$z = snmpset($hostname, $communityWrite, 'SNMPv2-MIB::sysLocation.0', 'q', $timeout, $retries); 28var_dump($z); 29 30echo "Bogus OID\n"; 31$z = snmpset($hostname, $communityWrite, '.1.3.6.777.888.999.444.0', 's', 'bbb', $timeout, $retries); 32var_dump($z); 33 34echo "Checking working\n"; 35$oid1 = 'SNMPv2-MIB::sysContact.0'; 36$oldvalue1 = snmpget($hostname, $communityWrite, $oid1, $timeout, $retries); 37$newvalue1 = $oldvalue1 . '0'; 38$oid2 = 'SNMPv2-MIB::sysLocation.0'; 39$oldvalue2 = snmpget($hostname, $communityWrite, $oid1, $timeout, $retries); 40$newvalue2 = $oldvalue2 . '0'; 41 42echo "Single OID\n"; 43$z = snmpset($hostname, $communityWrite, $oid1, 's', $newvalue1, $timeout, $retries); 44var_dump($z); 45var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $newvalue1)); 46$z = snmpset($hostname, $communityWrite, $oid1, 's', $oldvalue1, $timeout, $retries); 47var_dump($z); 48var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1)); 49 50echo "Multiple OID\n"; 51$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s','s'), array($newvalue1, $newvalue2), $timeout, $retries); 52var_dump($z); 53var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $newvalue1)); 54var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $newvalue2)); 55$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s','s'), array($oldvalue1, $oldvalue2), $timeout, $retries); 56var_dump($z); 57var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1)); 58var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2)); 59 60echo "Multiple OID, single type & value\n"; 61$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), 's', $newvalue1, $timeout, $retries); 62var_dump($z); 63var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $newvalue1)); 64var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $newvalue1)); 65$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s','s'), array($oldvalue1, $oldvalue2), $timeout, $retries); 66var_dump($z); 67var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1)); 68var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2)); 69 70echo "Multiple OID, single type, multiple value\n"; 71$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), 's', array($newvalue1, $newvalue2), $timeout, $retries); 72var_dump($z); 73var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $newvalue1)); 74var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $newvalue2)); 75$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s','s'), array($oldvalue1, $oldvalue2), $timeout, $retries); 76var_dump($z); 77var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1)); 78var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2)); 79 80 81echo "More error handing\n"; 82echo "Single OID, single type in array, single value\n"; 83try { 84 $z = snmpset($hostname, $communityWrite, $oid1, array('s'), $newvalue1, $timeout, $retries); 85 var_dump($z); 86} catch (\TypeError $e) { 87 echo $e->getMessage() . \PHP_EOL; 88} 89var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1)); 90var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2)); 91 92echo "Single OID, single type, single value in array\n"; 93try { 94 $z = snmpset($hostname, $communityWrite, $oid1, 's', array($newvalue1), $timeout, $retries); 95 var_dump($z); 96} catch (\TypeError $e) { 97 echo $e->getMessage() . \PHP_EOL; 98} 99var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1)); 100var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2)); 101 102echo "Multiple OID, 1st wrong type\n"; 103try { 104 $z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('sw','s'), array($newvalue1, $newvalue2), $timeout, $retries); 105 var_dump($z); 106} catch (\ValueError $e) { 107 echo $e->getMessage() . \PHP_EOL; 108} 109var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1)); 110var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2)); 111 112echo "Multiple OID, 2nd wrong type\n"; 113try { 114 $z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s','sb'), array($newvalue1, $newvalue2), $timeout, $retries); 115 var_dump($z); 116} catch (\ValueError $e) { 117 echo $e->getMessage() . \PHP_EOL; 118} 119var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1)); 120var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2)); 121 122echo "Multiple OID, single type in array, multiple value\n"; 123$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s'), array($newvalue1, $newvalue2), $timeout, $retries); 124var_dump($z); 125var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1)); 126var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2)); 127 128echo "Multiple OID & type, single value in array\n"; 129$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s', 's'), array($newvalue1), $timeout, $retries); 130var_dump($z); 131var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1)); 132var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2)); 133 134echo "Multiple OID, 1st bogus, single type, multiple value\n"; 135$z = snmpset($hostname, $communityWrite, array($oid1 . '44.55.66.77', $oid2), 's', array($newvalue1, $newvalue2), $timeout, $retries); 136var_dump($z); 137var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1)); 138var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2)); 139 140echo "Multiple OID, 2nd bogus, single type, multiple value\n"; 141$z = snmpset($hostname, $communityWrite, array($oid1, $oid2 . '44.55.66.77'), 's', array($newvalue1, $newvalue2), $timeout, $retries); 142var_dump($z); 143var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1)); 144var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2)); 145 146echo "Multiple OID, single multiple type (1st bogus), multiple value\n"; 147$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('q', 's'), array($newvalue1, $newvalue2), $timeout, $retries); 148var_dump($z); 149var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1)); 150var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2)); 151 152echo "Multiple OID, single multiple type (2nd bogus), multiple value\n"; 153$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s', 'w'), array($newvalue1, $newvalue2), $timeout, $retries); 154var_dump($z); 155var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1)); 156var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2)); 157 158?> 159--EXPECTF-- 160Check error handing 161No type & no value (timeout & retries instead) 162Type must be a single character 163No value (timeout instead), retries instead of timeout 164 165Warning: snmpset(): Could not add variable: OID='%s' type='q' value='%i': Bad variable type ("q") in %s on line %d 166bool(false) 167Bogus OID 168 169Warning: snmpset(): Error in packet at '%s': (noSuchName) There is no such variable name in this MIB. in %s on line %d 170bool(false) 171Checking working 172Single OID 173bool(true) 174bool(true) 175bool(true) 176bool(true) 177Multiple OID 178bool(true) 179bool(true) 180bool(true) 181bool(true) 182bool(true) 183bool(true) 184Multiple OID, single type & value 185bool(true) 186bool(true) 187bool(true) 188bool(true) 189bool(true) 190bool(true) 191Multiple OID, single type, multiple value 192bool(true) 193bool(true) 194bool(true) 195bool(true) 196bool(true) 197bool(true) 198More error handing 199Single OID, single type in array, single value 200Type must be of type string when object ID is a string 201bool(true) 202bool(true) 203Single OID, single type, single value in array 204Value must be of type string when object ID is a string 205bool(true) 206bool(true) 207Multiple OID, 1st wrong type 208Type must be a single character 209bool(true) 210bool(true) 211Multiple OID, 2nd wrong type 212Type must be a single character 213bool(true) 214bool(true) 215Multiple OID, single type in array, multiple value 216 217Warning: snmpset(): '%s': no type set in %s on line %d 218bool(false) 219bool(true) 220bool(true) 221Multiple OID & type, single value in array 222 223Warning: snmpset(): '%s': no value set in %s on line %d 224bool(false) 225bool(true) 226bool(true) 227Multiple OID, 1st bogus, single type, multiple value 228 229Warning: snmpset(): Error in packet at '%s': (noSuchName) There is no such variable name in this MIB. in %s on line %d 230bool(false) 231bool(true) 232bool(true) 233Multiple OID, 2nd bogus, single type, multiple value 234 235Warning: snmpset(): Error in packet at '%s': (noSuchName) There is no such variable name in this MIB. in %s on line %d 236bool(false) 237bool(true) 238bool(true) 239Multiple OID, single multiple type (1st bogus), multiple value 240 241Warning: snmpset(): Could not add variable: OID='%s' type='q' value='%s': Bad variable type ("q") in %s on line %d 242bool(false) 243bool(true) 244bool(true) 245Multiple OID, single multiple type (2nd bogus), multiple value 246 247Warning: snmpset(): Could not add variable: OID='%s' type='w' value='%s': Bad variable type ("w") in %s on line %d 248bool(false) 249bool(true) 250bool(true) 251