Страница 1 из 1

обработка в цикле переменной через bin2nex

Добавлено: 2018-11-27 12:22:29
Vlad5503
Серийный терминала по описанию можно конвертировать командой:

Код: Выделить всё

$str = bin2hex("HWTC `U#");
echo($str);
Т.е. должно из STRING: "HWTC `U#" получить 4857544309605523.

В скрипте на php есть цикл опроса порта на получение серийных номеров. Вот эта часть:

Код: Выделить всё

$rx1 = snmpwalk($ip, $ro, "1.3.6.1.4.1.2011.6.128.1.1.2.43.1.3.$pon"); 	#получение массива
for ($i=0; $i<count($rx1); $i++) {					#создание цикла для опроса массива
    $rx = explode('Hex-STRING: ', $rx1[$i]);				#вырезаем из строки значение "Hex-STRING: "
    $rx2 = implode('', $rx);						#соеденим символы что остались.
    $fp = fopen ("id.txt", "a");					#откроем файл для записи
    fwrite($fp, "$rx2\n");						#запишем в файл
    fclose($fp);							#акроем файл
    echo "<br>"."$rx2";							#выведем переменные из массива на экран
}
Вот по этому скрипту если серийник в терминале прописан как шестнадцатеричное представление то и в файл из полученного массива пишутся построчно серийники и на экран(браузер) выводятся.
Вот пробую в этот цикл встроить команду bin2hex... и не нашел рабочего варианта...
Может у кого есть идея... ?

обработка в цикле переменной через bin2nex

Добавлено: 2018-11-28 6:11:55
Vlad5503
Какие варианты я пробовал..
1)

Код: Выделить всё

$rx1 = snmpwalk($ip, $ro, "1.3.6.1.4.1.2011.6.128.1.1.2.43.1.3.$pon");
for ($i=0; $i<count($rx1); $i++) {
    $rx = explode('Hex-STRING: ', $rx1[$i]);
    $rx2 = implode('', $rx);
    if ($rx2 < 9) {
    $rx3 = bin2nex("$rx2");
    echo "<br>"."Опс- $rx3";
    }
    $fp = fopen ("id.txt", "a");
    fwrite($fp, "$rx2\n");
    fclose($fp);
    echo "<br>"."$rx2";
}
Этот вариант доходит до переменной из массива содержащая менее 9 знаков, как например это - HWTC `U#, и прекращает выводить на экран сообщения. В логе появляется это:

Код: Выделить всё

PHP Fatal error:  Uncaught Error: Call to undefined function bin2nex() in fx.php:176\nStack trace:\n#0 {main}\n  thrown in fx.php on line 176
2)

Код: Выделить всё

$rx1 = snmpwalk($ip, $ro, "1.3.6.1.4.1.2011.6.128.1.1.2.43.1.3.$pon");
for ($i=0; $i<count($rx1); $i++) {
    $rx = explode('Hex-STRING: ', $rx1[$i]);
    $rx2 = implode('', $rx);
    if ($rx2 < 9) {echo bin2nex("$rx2");}
    $fp = fopen ("id.txt", "a");
    fwrite($fp, "$rx2\n");
    fclose($fp);
    echo "<br>"."$rx2";
}
Этот вариант на экран выводит также как в.1. В логе тоже самое как и по в.1.

По логу мол нет встроенной функции Bin2nex? Странно...
Какие варианты ещё есть...?

обработка в цикле переменной через bin2nex

Добавлено: 2018-11-29 6:30:00
Vlad5503
Уржаться можно )))
Конечно не сработает...
Ведь bin2hex не равно bin2nex...
Заработал скрипт.

обработка в цикле переменной через bin2nex

Добавлено: 2018-11-29 6:34:43
Vlad5503
Итого скрипт стал такой:

Код: Выделить всё

$rx1 = snmpwalk($ip, $ro, "1.3.6.1.4.1.2011.6.128.1.1.2.43.1.3.$pon");
for ($i=0; $i<count($rx1); $i++) {
    $rx = explode('Hex-STRING: ', $rx1[$i]);
    $rx2 = implode('', $rx);
    $rx2 = explode(' ', $rx2);
    $rx2 = implode('', $rx2);
    if ($rx2 < 9) {
    $rx2 = explode('STRING:', $rx2);
    $rx2 = implode('', $rx2);
    $rx2 = explode('"', $rx2);
    $rx2 = implode('', $rx2);
    $rx2 = bin2hex($rx2);
    }
    $fp = fopen ("id.txt", "a");
    fwrite($fp, "$rx2\n");
    fclose($fp);
    echo "<br>"."$rx2";
}
Выдает на страничку список серийников оборудования.
Вопрос решен.

обработка в цикле переменной через bin2nex

Добавлено: 2018-12-01 23:07:22
Alex Keda
решоточка штоле не нравится...

обработка в цикле переменной через bin2nex

Добавлено: 2018-12-03 6:14:09
Vlad5503
нее, сама команда
bin2hex не равно bin2nex