Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Форум
    RouterOS
    Удалить ложные активные сессии с помощью скрипта

    Удалить ложные активные сессии с помощью скрипта

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Удалить ложные активные сессии с помощью скрипта, RouterOS
     
    tomtom80
    Guest
    #1
    0
    20.06.2011 13:30:00
    Привет, я использую UM v5.4. Когда пропадает соединение, возникает проблема — UM не понимает, что сессия остановлена, и сессии пользователей остаются активными в UM. Поэтому, когда связь восстанавливается и пользователи пытаются подключиться, UM говорит, что они не могут, потому что разрешено использовать логин только один раз одновременно. Есть ли решение этой проблемы? Я пытался написать скрипт, но столкнулся с трудностями. Чтобы закрыть сессию, мне нужен номер сессии. Как получить номер сессии?! Вот код:

    :local LastSessionUpdate;  
    :local SessionTimeout;

    :foreach i in=[/tool user-manager session find where active=yes] do={
    # когда было последнее обновление информации о сессии  
       :set LastSessionUpdate [/tool user-manager session get $i till-time]
    # SessionTimeout — это значение, которое говорит, сколько секунд прошло с момента последнего обновления этой сессии  
       :set SessionTimeout ([system clock get time] - [:pick $LastSessionUpdate ([:find $LastSessionUpdate " "]+1) [:len $LastSessionUpdate]] - [/system clock get gmt-offset])
    # обновления идут каждую минуту, если последнее обновление было более 60 секунд назад — закрыть сессию  
       :if ($SessionTimeout > 60) do={  

    # как получить номер сессии??  
           /tool user-manager session close-session numbers= ???  

       }  
    }

    Заранее спасибо!
     
     
     
    Superdust
    Guest
    #2
    0
    20.07.2011 09:16:00
    У меня были такие же проблемы много раз, отправлял запросы в поддержку MT и так далее. Раньше не видел этот скрипт, но кажется, он работает. Но эта проблема существует уже несколько лет, кажется, у меня она была еще в 2009 году! Так как она доставила мне кучу неудобств, нельзя ли как-то это исправить, MT? Очень-очень прошу!
     
     
     
    Superdust
    Guest
    #3
    0
    28.07.2011 11:26:00
    Нет комментариев от MT?
     
     
     
    Superdust
    Guest
    #4
    0
    26.12.2011 18:35:00
    Есть ли какие-то новости по этой проблеме от MT? У меня всё ещё бывают зависания сессий, из-за чего клиенты не могут подключиться к usermanager…
     
     
     
    tester
    Guest
    #5
    0
    06.09.2013 01:31:00
    Я написал этот скрипт, надеюсь, он поможет  
    # вер. 1.0   2013-09-06  
    # вер. 1.1   2013-11-01 - решена проблема с тем, что в конце месяца все сессии убивались  
    #                       - добавлен лог с предупреждением о убитых сессиях  
    # вер. 1.2   2014-03-09 - GMToffset не нужен в версии 6.10 и выше (возможно, в 6.x)  
    #  
    # СКРИПТ:  radius-close-inactive-sessions  
    # ЦЕЛЬ: закрывать сессии, которые активны в radius, но у которых last-seen старее чем $actTimeout  
    #          обычно происходит, когда клиентская сторона теряет связь с radius, а пользователь уходит из хотспота  
    #------------------------------------------------------------------------------

    # настройки  
    # --------  
    # включить отладку { false | true }  
    local debug true  
    # через сколько секунд бездействия убивать сессию  
    local actTimeout (10*60)  
    # смещение от GMT - в User Manager 6.10 и выше не нужно, должно быть 0  
    local GMToffset [/system clock get gmt-offset]
    if ( [/system clock get dst-active] != yes ) do={ :set GMToffset ( $GMToffset - 3600 ) }
    local GMToffset 0  


    # переменные  
    # ---------  
    local sessions  
    local testD [/system clock get date]
    local testDayOfMonth [:pick $testD 4 6]
    local testT [/system clock get time]
    local testTsec ( ($testDayOfMonth*24*3600) + [:pick $testT 0 2]*3600 + [:pick $testT 3 5]*60 + [:pick $testT 6 8] )

    :set sessions [/tool user-manager session find where active=yes]

    if ($debug = true) do={  
     :put ("testD: " . $testD)  
     :put ("testDayOfMonth: " . $testDayOfMonth )  
     :put ("testT: " . $testT)  
     :put ("testTsec: " . $testTsec)  
     :put ("Sessions: " . [:len $sessions])
    }  

    foreach session in $sessions do={  
     :local userName [/tool user-manager session get $session user ]
     :local uptime [/tool user-manager session get $session uptime ]
     :local hostIP [/tool user-manager session get $session "host-ip" ]
     :local lastSeen [/tool user-manager user get $userName last-seen ]

     local lastActD [:pick $lastSeen 0 11]
     local lastActDayOfMonth [:pick $lastSeen 4 6]
     local lastActT [:totime [:pick $lastSeen 12 20]]

     local lastActTsec ( ($lastActDayOfMonth*24*3600) + [:pick $lastActT 0 2]*3600 + [:pick $lastActT 3 5]*60 + [:pick $lastActT 6 8] )

     if ($debug = true) do={  
       :put ("id=".$session . " " . " пользователь " . $userName . " uptime  " . $uptime . " lastSeen " . $lastSeen . " hostIP ". $hostIP)  
       :put ("lastActD: " . $lastActD)  
       :put ("lastActDayOfMonth: " . $lastActDayOfMonth)  
       :put ("lastActT: " . $lastActT)  
       :put ("lastActTsec: " . $lastActTsec)  
     }  
     :set lastActTsec ($lastActTsec + $GMToffset)  
     if ($debug = true) do={  
       :put ("lastActTsec после коррекции GMT: " . $lastActTsec)  
     }  

    # убеждаемся, что сейчас минимум конец месяца + $actTimeout  
     if ( $testTsec > $actTimeout) do={  
    # разница больше $actTimeout, но меньше 27 дней (новый месяц)  
    # из-за локального времени - GMT скрипт будет неэффективен раз в месяц  
       if ( (($testTsec - $lastActTsec) > $actTimeout) and (($testTsec - $lastActTsec) < 27*3600*24) ) do={  
         if ($debug = true) do={  
           :put ("radius неактивная сессия удалена, разница " . ($testTsec - $lastActTsec) . " сек., actTimeout=" . $actTimeout . " сек.")  
         }  
         /tool user-manager session close-session $session  
         :log warning ("radius неактивная сессия удалена, разница " . ($testTsec - $lastActTsec) . " пользователь " . $userName . " uptime  " . $uptime . " lastSeen " . $lastSeen . " hostIP ". $hostIP)  
       } else={  
         if ($debug = true) do={  
           :put ("Нет нужды убивать сессию, разница " . ($testTsec - $lastActTsec) . " сек., actTimeout=" . $actTimeout . " сек.")  
         }  
       }  
     }  
    }
     
     
     
    cleiton
    Guest
    #6
    0
    25.03.2014 18:47:00
    Для меня этот скрипт не работает, у меня есть друзья, которые могли бы помочь нам снова, так как у меня проблемы, когда пользователь застревает из-за истечения сессии и набирает hotspot или pppoe. Есть ли у кого-нибудь ещё какие-то предложения, как решить эту проблему?
     
     
     
    tester
    Guest
    #7
    0
    06.08.2014 23:03:00
    Я обновил код для RouterOS 6.x
     
     
     
    ZSam
    Guest
    #8
    0
    11.03.2022 22:52:00
    Пожалуйста, предоставьте текст для перевода.
     
     
     
    AAw
    Guest
    #9
    0
    14.01.2023 20:13:00
    Можешь, пожалуйста, выложить здесь обновлённый скрипт? Я пользуюсь RouterOS 6.49.6.
     
     
     
    rextended
    Guest
    #10
    0
    14.01.2023 21:49:00
    Не задавайте вопросы по разным темам, решение тут: http://forum.mikrotik.com/t/false-active-sessions/163578/4
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры