Выкидываем всех на accel, кто не онлайн в админке

Рассинхронизация

  • nano fix_missing_sessions.php

<?php

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$NAS_IP              = "213.174.7.254";
$TIME_ZONE           = "Europe/Kiev";
$CONF_MYSQL_HOST     = "213.174.7.11";
$CONF_MYSQL_USERNAME = "accel";
$CONF_MYSQL_PASSWORD = "0g23hg2h3g2u93b9t23";
$CONF_MYSQL_DBNAME   = "mikbill";

date_default_timezone_set("$TIME_ZONE");

$db = new PDO( "mysql:host={$CONF_MYSQL_HOST};dbname={$CONF_MYSQL_DBNAME}", $CONF_MYSQL_USERNAME, $CONF_MYSQL_PASSWORD,
                        array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES koi8r") );

$QUERY1 = "SELECT uid, username, framedipaddress FROM radacctbras";
$QUERY2 = "SELECT uid, user, local_ip FROM users";
$CMD = "accel-cmd show sessions | grep active | awk '{print $7}'";

$ip_list = array();

$users_accel = exec($CMD, $output);
foreach ($output as $line) {
        $ip = filter_var($line, FILTER_VALIDATE_IP);
        if( $ip != "" ) {
                $ip_list[$ip]["accel"] = 1;
        }
}

$res1 = $db->query($QUERY1, PDO::FETCH_LAZY);
foreach ($res1 as $row) {
        $ip_list[$row["framedipaddress"]]["billing"] = 1;
        $ip_list[$row["framedipaddress"]]["uid"] = $row["uid"];
        $ip_list[$row["framedipaddress"]]["username"] = $row["username"];
}

$users_mikbill = array();
$res2 = $db->query($QUERY2, PDO::FETCH_LAZY);
foreach ($res2 as $row) {
        $users_mikbill[$row["local_ip"]]["uid"] = $row["uid"];
        $users_mikbill[$row["local_ip"]]["username"] = $row["user"];
}

foreach ($ip_list as $key => $ip) {
        if ( !isset($ip["uid"]) ) {
                if( isset($users_mikbill[$key]) ) {
                        echo "uid: {$users_mikbill[$key]["uid"]}, ip: {$key},  accel = online, billing = offline \n";
                        exec("accel-cmd terminate ip {$key}");
                } else {
                        echo "ip: {$key} not found in mikbill \n";
                        exec("accel-cmd terminate ip {$key}");
                }
        }
}

Комментарии

Популярные сообщения из этого блога

mikbill расшифровка завершений сессий

Accel-ppp команды

Zabbix agent установка и настройка