PHP problem executing from backquotes
I have the following PHP code:
for($i=1; $i <= 25; $i++){
开发者_StackOverflow社区 $ifoids = $ifoids." ifPhysAddress.$i "."ifType.$i "."ifSpeed.$i "."ifDescr.$i "."ifOperStatus.$i";
if($i%12==0){
echo $idoids;
$rtable=$rtable.`snmpget -Os -Ov -Oe -Oq -Ot -v 1 -c public $ip $ifoids`;
$ifoids="";
echo $i.": ".$rtable."</br>";
}}
The second time that it tries to execut the snmpget command, the values sent of the $ifoid
variable are the same as the first time. Although a print()
just before the command would print a correct value.
If you run the enclosed example, you should be able to see that $ifoids is being cleared down.
for($i=1; $i <= 25; $i++) {
$ifoids = $ifoids." ifPhysAddress.$i "."ifType.$i "."ifSpeed.$i "."ifDescr.$i "."ifOperStatus.$i";
if($i%12==0) {
$rtable = "snmpget -Os -Ov -Oe -Oq -Ot -v 1 -c public $ip $ifoids";
$ifoids="";
echo $i.": ".$rtable."</br>";
}
}
Example output:
note: line-breaks added for clarity
12: snmpget -Os -Ov -Oe -Oq -Ot -v 1 -c public
ifPhysAddress.1 ifType.1 ifSpeed.1 ifDescr.1 ifOperStatus.1
ifPhysAddress.2 ifType.2 ifSpeed.2 ifDescr.2 ifOperStatus.2
ifPhysAddress.3 ifType.3 ifSpeed.3 ifDescr.3 ifOperStatus.3
ifPhysAddress.4 ifType.4 ifSpeed.4 ifDescr.4 ifOperStatus.4
ifPhysAddress.5 ifType.5 ifSpeed.5 ifDescr.5 ifOperStatus.5
ifPhysAddress.6 ifType.6 ifSpeed.6 ifDescr.6 ifOperStatus.6
ifPhysAddress.7 ifType.7 ifSpeed.7 ifDescr.7 ifOperStatus.7
ifPhysAddress.8 ifType.8 ifSpeed.8 ifDescr.8 ifOperStatus.8
ifPhysAddress.9 ifType.9 ifSpeed.9 ifDescr.9 ifOperStatus.9
ifPhysAddress.10 ifType.10 ifSpeed.10 ifDescr.10 ifOperStatus.10
ifPhysAddress.11 ifType.11 ifSpeed.11 ifDescr.11 ifOperStatus.11
ifPhysAddress.12 ifType.12 ifSpeed.12 ifDescr.12 ifOperStatus.12</br>
24: snmpget -Os -Ov -Oe -Oq -Ot -v 1 -c public
ifPhysAddress.13 ifType.13 ifSpeed.13 ifDescr.13 ifOperStatus.13
ifPhysAddress.14 ifType.14 ifSpeed.14 ifDescr.14 ifOperStatus.14
ifPhysAddress.15 ifType.15 ifSpeed.15 ifDescr.15 ifOperStatus.15
ifPhysAddress.16 ifType.16 ifSpeed.16 ifDescr.16 ifOperStatus.16
ifPhysAddress.17 ifType.17 ifSpeed.17 ifDescr.17 ifOperStatus.17
ifPhysAddress.18 ifType.18 ifSpeed.18 ifDescr.18 ifOperStatus.18
ifPhysAddress.19 ifType.19 ifSpeed.19 ifDescr.19 ifOperStatus.19
ifPhysAddress.20 ifType.20 ifSpeed.20 ifDescr.20 ifOperStatus.20
ifPhysAddress.21 ifType.21 ifSpeed.21 ifDescr.21 ifOperStatus.21
ifPhysAddress.22 ifType.22 ifSpeed.22 ifDescr.22 ifOperStatus.22
ifPhysAddress.23 ifType.23 ifSpeed.23 ifDescr.23 ifOperStatus.23
ifPhysAddress.24 ifType.24 ifSpeed.24 ifDescr.24 ifOperStatus.24</br>
Here is the correct code:
for($i=1; $i <= 25; $i++){
$ifoids = $ifoids." ifPhysAddress.$i "."ifType.$i "."ifSpeed.$i "."ifDescr.$i "."ifOperStatus.$i";
if($i%12==0){
$rtable="snmpget -Os -Ov -Oe -Oq -Ot -v 1 -c public $ip $ifoids";
$ifoids="";
echo $i.": ".$rtable."</br>";
}
}
it has been reset properly, but because you concatenate $rtable with it self it look like not working
精彩评论