Проблема PHP, выполняющаяся из обратных кавычек - PullRequest
0 голосов
/ 10 марта 2011

У меня есть следующий код PHP:

 for($i=1; $i <= 25; $i++){
        $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>";       
}}

Во второй раз, когда он пытается выполнить команду snmpget, значения, отправленные из переменной $ifoid, совпадают с первым разом.Хотя print() непосредственно перед командой выведет правильное значение.

Ответы [ 2 ]

1 голос
/ 10 марта 2011

Если вы запустите прилагаемый пример, вы должны увидеть, что $ ifoids очищается.

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>";
        }
}

Пример вывода:

примечание: для ясности добавлены разрывы строк

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>
0 голосов
/ 10 марта 2011

Вот правильный код:

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>";       
        }
}

он был сброшен должным образом, но поскольку вы объединяете $ rtable с самим собой, похоже, что он не работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...