Автоматическая перезагрузка зависших Wi-Fi точек доступа UniFi AP

Автор | 26.11.2014

Автоматическая перезагрузка зависших Wi-Fi точек доступа UniFi AP

UBQT

О Wi-Fi точках доступа UniFi AP я писал ранее, была рассказано о разновидностях точек, их настройке и диагностике. Хоть данные точки достаточно хороши в работе, но имеется ряд проблем. Например — зависание точек, которое «лечится» лишь перезагрузкой точки. Чтобы выполнять данную операция автоматически, можно использовать представленный ниже скрипт на PHP. Основан на работе утилиты dmesg — отслеживает состояние точки (wifi0: transmit timed out). Добавляется в cron на сервере (контроллере UniFi), проверяет состояние и, подключившись по ssh, перезагружает точку.

<?php /* Notify the user if the server terminates the connection */ function my_ssh_disconnect($reason, $message, $language) {   printf("Server disconnected with reason code [%d] and message: %s\n",          $reason, $message); } $methods = array(   'kex' => 'diffie-hellman-group1-sha1',   'client_to_server' => array(     'crypt' => '3des-cbc',     'comp' => 'none'),   'server_to_client' => array(     'crypt' => 'aes256-cbc,aes192-cbc,aes128-cbc',     'comp' => 'none')); $callbacks = array('disconnect' => 'my_ssh_disconnect'); $connection = ssh2_connect('10.10.10.1', 22, $methods, $callbacks); if (!$connection) die('Connection failed'); if (ssh2_auth_password($connection, 'login', 'password')) { $stream = ssh2_exec($connection, "dmesg | grep 'wifi0: transmit timed out'"); stream_set_blocking($stream, true); $data = "";         while ($buf = fread($stream, 4096)) {             $data .= $buf;         }         fclose($stream); if ($data!="") ssh2_exec($connection, "reboot");; } else {   die('Authentication Failed...'); } ?>
  • Maxim Komissarenko

    добрый день, а если проверять много точек у меня их до 30 штук можно в одном скрипте? или на каждый писать скрипт?

  • Роман Голубенко

    Это подойдет только для контроллера на Linux? А на Windows&