Gastello007

<<< Назад

Устройства Онлайн пинг Синего зуба (LINUX/WIN)

Можно сказать это заметка для меня, что бы я не забыл как я это сделал, а может кому и пригодится. Сделал под влиянием темы на форме камрада tarasfrompir https://mjdm.ru/forum/viewtopic.php?f=4&t=4183

И так для винды Комрад tarasfrompir написла на форум целаю статью. Но мне потребовалось тоже самое но под LINUX, так как bluetoothdevices от камрада SoulTaker постоянно сыпало ошибками, а Bluetooth devices (by SergeJey) не имеет такой возможности. Даее буду цитрировать tarasfrompir и добавлять свое.
1) Для винды качаем программы и калдем в папку apps, а для Linux должны быть установленны все пакеты для работы с синим зубом
2) Добавил функцию в general.class.php - (после функции пинга )
После вот таких строчек -

/**
* Ping host
* @param mixed $host Host address
* @return bool
*/
function ping($host)
{
if (IsWindowsOS())
exec(sprintf('ping -n 1 %s', escapeshellarg($host)), $res, $rval);
elseif (substr(php_uname(), 0, 7) === "FreeBSD")
exec(sprintf('ping -c 1 -t 5 %s', escapeshellarg($host)), $res, $rval);
else
exec(sprintf('ping -c 1 -W 5 %s', escapeshellarg($host)), $res, $rval);

return $rval === 0 && preg_match('/ttl/is', join('', $res));
}

добавил вот такие строчки для Windows

/**
* Ping bluetooth host
* @param mixed $host Host address
* @return bool
*/
function pingbt($host)
{
if (IsWindowsOS()){
$answer='';
$connect = shell_exec(SERVER_ROOT . '/apps/blutoothscan/btdiscovery -d%a%%c%');
$PCREpattern = '/\r\n|\r|\n/u';
$connected = preg_replace($PCREpattern, '', $connect);
$pos = stripos($connected, $host);
$answer = substr($connected, $pos+18,3); // возвращает "Yes or No"
if ($answer == "Yes") {
$result=1;
} else {
$result=0;
}
}
return $result;
}

А вот этот код для Linux

function pingbt($host)
{

$data = exec('l2ping '.$host.' -c1 -f | awk \'/loss/ {print $3}\'');
            if(intval($data) > 0) {
                $result=1;
} else {
$result=0;
}
return $result;
}
  1. в файле pinghosts.class.php - добавил вот такое :
    вместо -
    Define('DEF_TYPE_OPTIONS', '0=PING (HOST)|1=WEB PAGE (URL));

    вставил -

    Define('DEF_TYPE_OPTIONS', '0=PING (HOST)|1=WEB PAGE (URL)|2=BLUETOOTH (MAC)');

    и еще вместо такого

    if (!$host['TYPE']) {
    //ping host
    $online=ping(processTitle($host['HOSTNAME']));
    } else {
    //web host
    $online=getURL(processTitle($host['HOSTNAME']), 0);
    SaveFile("./cached/host_".$host['ID'].'.html', $online);
    if ($host['SEARCH_WORD']!='' && !is_integer(strpos($online, $host['SEARCH_WORD']))) {
    $online=0;
    }
    if ($online) {
    $online=1;
    }

    вставил такое

    $online=0;
    // checking
    if ($host['TYPE']==0) {
    //ping host
    $online=ping(processTitle($host['HOSTNAME']));
    } elseif ($host['TYPE']==1) {
    //web host
    $online=getURL(processTitle($host['HOSTNAME']), 0);
    SaveFile("./cached/host_".$host['ID'].'.html', $online);
    if ($host['SEARCH_WORD']!='' && !is_integer(strpos($online, $host['SEARCH_WORD']))) {
    $online=0;
    }
    if ($online) {
    $online=1;
    }
    } elseif ($host['TYPE']==2) {
    $online =0;
    $online=pingbt(processTitle($host['HOSTNAME']));
    }

Теперь в модуле производится проверка подключенности устройства блютуз по МАК-адресу...

Обсуждение (16) (5)

Москва, Россия

На форуме: Gastello007