Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • 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
    Скрипт для изменения ширины каналов на клиентах в диапазоне 5.2?

    Скрипт для изменения ширины каналов на клиентах в диапазоне 5.2?

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Скрипт для изменения ширины каналов на клиентах в диапазоне 5.2?, RouterOS
     
    chadd
    Guest
    #1
    0
    25.05.2011 06:56:00
    Я бы очень хотел уметь писать скрипты, но у меня выходит каша, когда я пытаюсь. Мне нужен обновлённый скрипт старого, который раньше менял режим беспроводной связи "b/g/nstreme" и ширину каналов, чтобы он работал с версией 5.2. Теперь, когда в 5.2 появился режим «any», мне нужен только скрипт для изменения ширины каналов. Есть кто-нибудь, кто мог бы помочь или, может, подправить старый скрипт для меня? Вот старый скрипт, который я использовал:

    local delais 5s  
    local liste 2.4ghz-b/g,2ghz-5mhz,2ghz-10mhz;  
    foreach band in=$liste do={  
    if (![/interface wireless get wlan1 running]) do={
    /interface wireless set wlan1 band=$band  
    delay $delais  
    }  
    }  
    if (![/interface wireless get wlan1 running]) do={
    if [/interface wireless nstreme get wlan1 enable-nstreme] do={
    /interface wireless nstreme set wlan1 enable-nstreme=no  
    } else={  
    /interface wireless nstreme set wlan1 enable-nstreme=yes  
    }  
    }

    Спасибо, Чад
     
     
     
    0ldman
    Guest
    #2
    0
    20.06.2011 13:43:00
    Кто-то там наверняка знает…
     
     
     
    wirelesswaves
    Guest
    #3
    0
    21.06.2011 15:29:00
    Попробуй так: работает для версии 5.4… Вся суть скрипта — отслеживать статус «running» интерфейса wlan1. Если wlan теряет связь (0), тогда скрипт начнёт менять ширину канала, сначала на 5 МГц. Он будет сканировать (что есть в scanlist или по умолчанию), делать это в течение 5 секунд, потом пробовать следующую ширину канала. Также режим установится в «any». Думаю, твоя задача такая же, как у меня — обойти тех пользователей, которые каждый вечер выключают свои устройства, мешая нам эффективно работать с сетями, а на следующий день жалуются, что у них нет интернета! Скрипт я быстро состряпал недавно, чтобы помочь себе и Руди в эксперименте по переходу с 20 МГц на 10 или 5 МГц. Также удобно ставить его на клиентские CPE, потому что когда клиент выключает CPE в момент, когда мы админы меняем сеть, это очень раздражает. Планировщик запускается при старте системы и работает 180 раз, после чего отключается. (Учти, что после следующей перезагрузки планировщик останется выключенным.) Я добавил второй планировщик, который перезапускает первый после ребута, чтобы обойти это ограничение. После того как клиенты восстановят соединение (я предполагаю, что после твоих экспериментов с сетью ты, конечно, можешь просто отключить планировщики и скрипт будет бездействовать). Если хочешь, можно использовать поле «Identity» в точке доступа и заставить клиентские CPE глобально отключать свои планировщики — для этого нужно добавить несколько строк в скрипт, которые будут искать это поле и действовать. Во ВСЕХ нужных CPE вставь это: Назови скрипт schedcheckWiFi и вставь туда следующий код: local count [/system scheduler get 0 value-name=run-count] :if (count>180) do= {/system scheduler disable 0} :local delais 5s :local liste 5mhz,10mhz,20mhz; :foreach band in=$liste do={ :if (![/interface wireless get wlan1 running]) do={ /interface wireless set wlan1 channel-width=$band wireless-protocol=any :delay $delais } } Потом добавь в планировщик вызов скрипта… в поле «on event» пропиши /system scheduler enable schedcheckWiFi starttime=startup interval=0 PS. Я не несу ответственности за возможные ошибки и советую сначала попробовать всё на тестовом стенде. Свяжись с Руди, он тоже игрался с этим скриптом, делал его более аккуратным и пытался избавиться от второго планировщика. Его посты ниже, тема где-то «как заставить планировщик выполняться x раз» или что-то вроде того… Но это по сути то же самое. Если тебе это не подходит, дай знать с конкретными требованиями, я попробую что-то придумать, но времени особо мало. С уважением, Simon
     
     
     
    0ldman
    Guest
    #4
    0
    23.06.2011 16:20:00
    Выглядит хорошо. Я собираюсь посмотреть на это и на свой скрипт, чтобы лучше разобраться. Спасибо!
     
     
     
    wirelesswaves
    Guest
    #5
    0
    24.06.2011 15:00:00
    Oldman. Я перечитал своё сообщение, и понял, что оно не совсем ясно. Скрипт в порядке, но планировщики — не совсем понятно. Я опустил расписание, которое изначально запускает скрипт. Это просто: запуск происходит при загрузке, затем должен выполняться каждые 20 секунд. Поэтому вы видите, как ширина канала вызывается после каждой 5-секундной паузы, затем сканирование и так далее, пока счётчик планировщика не достигнет 180. После этого он отключается (хотя некоторые могут и не захотеть, чтобы его отключали!). Планировщик из предыдущего сообщения повторно включает первый планировщик (после того, как тот был отключён предыдущим скриптом). Проблема была в том, что после отключения планировщика он остаётся отключенным даже после перезагрузки. Поэтому и нужен второй планировщик, который его заново включает. Обязательно убедитесь, что ОРИГИНАЛЬНЫЙ ПЛАНИРОВЩИК находится на позиции 0, а второй (тот, который заново включает) — стоит после него в списке планировщиков. Тем, кто не хочет, чтобы планировщик запускался каждые 20 секунд и предпочитает отключать скрипт вручную, заходя в каждый cpe, просто удалите ПЕРВЫЕ 2 СТРОКИ из скрипта. Удачи, Саймон.
     
     
     
    0ldman
    Guest
    #6
    0
    02.08.2011 13:26:00
    Мне нужно остановиться и уделить время на тестирование этого. Между грозой и всякими другими экстренными ситуациями я просто вымотан.
     
     
     
    0ldman
    Guest
    #7
    0
    01.12.2011 19:58:00
    Я сегодня этим занимался, но возникла небольшая проблема. У меня есть текстовый файл, который я вставляю в терминал для настройки CPE. Но никак не могу запустить этот скрипт через терминал. Вручную в Winbox создаю скрипт, вставляю в окно скрипта — всё работает, а через терминал — не выходит. Раньше уже делал это на версиях v3 и v4, конфиг брал у кого-то на этом форуме пару лет назад.

    /system script  
    add name="ChangeBand" source=":local count [/sys scheduler get 0 value-name=run-count]
    :if (count>180) do= {/system scheduler disable 0}  
    :local delais 5s  
    :local liste 5mhz,10mhz,20mhz;  
    :foreach band in=$liste do={  
    :if (![/interface wireless get wlan1 running]) do={
    /interface wireless set wlan1 channel-width=$band wireless-protocol=any  
    :delay $delais  
    }  
    }  
    " \  
       on-event=ChangeBand start-time=startup  
    /system scheduler disable schedcheckWifi  
    / мой старый рабочий конфиг /


    /system script  
    add name="ChangeBand" \  
       source=":local delais 5s\r\n:local liste 2.4ghz-b/g,2ghz-5mhz,2ghz-10mhz;\r\n \  
       \r\n:foreach band in=\$liste \  
       do={\r\n:if (![/interface wireless get wlan1 running]) do={\r\n/interface \
       wireless set wlan1 band=\$band\r\n:delay \$delais\r\n}\r\n}\r\n\r\n:if \  
       (![/interface wireless get wlan1 running]) \\\r\ndo={\r\n :if \
       [/interface wireless nstreme get wlan1 enable-nstreme] \\\r\n do={\r\n \
             /interface wireless nstreme set wlan1 enable-nstreme=no\r\n    } \  
       else={\r\n        /interface wireless nstreme set wlan1 \  
       enable-nstreme=yes\r\n    }\r\n}"  
    /system scheduler  
    add comment="" disabled=no interval=20s name="schedcheckWifi" \  
       on-event=ChangeBand start-time=startup  
    /system scheduler disable schedcheckWifi  
    /
     
     
     
    WirelessRudy
    Guest
    #8
    0
    01.12.2011 22:59:00
    Итак, я отредактировал исходный скрипт, который прислал мне Simon, сделав из него очень короткую версию, подходящую для моих нужд. Частоту 5GHz убрал, а беспроводной протокол установил на «nv2-nstreme-802.11». После того как несколько месяцев назад я переключил все мои сети на 10MHz, я вообще удалил скрипты и планировщики с CPE. Всё, что у меня осталось — это следующий код, записанный на бумажке:

    /name=“ChangeBand” owner=“admin”  
    вставьте следующий текст в окно исходников:

    :local delais 5s  
    :local liste 5mhz,10mhz,20mhz;  
    :foreach band in=$liste do={  
       :if (![/interface wireless get wlan1 running]) do={
           /interface wireless set wlan1 channel-width=$band wireless-protocol=nv2-nstreme-802.11  
           :delay $delais  
       }  
    }  

    /system script add name=A policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api source=“log info "Script A start"\r \n:global counter\r \n:set counter ($counter+1)\r \n:if ($counter <= 5) do={/system script run B}\r \n:log info "Script A end"”  

    add name=B policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api source=“:global counter\r \n:log info ("Script B run number:".$counter)”  

    add name=simulatereboot policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api source=“:global counter 0”  

    /system scheduler add disabled=no interval=3s name=schedule2 on-event=A policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api start-date=jun/17/2011 start-time=13:15:16  

    Вот этот скрипт далее работает непрерывно:

    /system script add name=ChangeBand policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api source=“:local delais 5s\r \n:local liste 10mhz,20mhz;\r \n\r \n:foreach band in=$liste do={\r \n:if (![/interface wireless get wlan1 running]) do={\r \n/interface wireless set wlan1 channel-width=$band wireless-protocol=nv2-nstreme-802.11\r \n:delay $delais\r \n}\r \n}\r \n”

    Если память не изменяет, счётчик работал не очень хорошо. Скрипт всегда выполнялся, но свою задачу делал. Переключение ширины канала на AP заставляло всех клиентов перейти на новую частоту через некоторое время.  

    Причина, по которой я потом убрал эти скрипты, была в следующем: когда по какой-то причине клиенты отключались от AP, скрипты начинали тестировать и менять ширину канала, что иногда занимало довольно много времени, прежде чем они снова подключались. На граничных каналах (а тогда были проблемы с отключениями у NV2) это серьёзно нарушало работу всей моей сети (из-за самого процесса NV2).  

    Но спасибо, Simon, что оценил совместно разработанный скрипт.
     
     
     
    WirelessRudy
    Guest
    #9
    0
    01.12.2011 23:00:00
    Ой, совсем забыл сказать, что скрипт нужно сначала протестировать, и я ни в коем случае не несу ответственности за любые сбои. На самом деле, я помню, что скрипт был неидеален во всех отношениях…
     
     
     
    0ldman
    Guest
    #10
    0
    03.02.2012 19:01:00
    /system script  
    add name=ChangeBand policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api source=":local delais 5s\r\n:local liste 5mhz,10mhz,20mhz;\r\n \r\n:foreach band in=\$liste do={\r\n:if (![/interface wireless get wlan1 running]) do={\r\n/interface wireless set wlan1 channel-width=\$band wireless-protocol=any\r\n:delay \$delais\r\n}\r\n}\r\n"

    /system scheduler  
    add comment="" disabled=no interval=20s name="schedcheckWifi" on-event=ChangeBand start-time=startup  
    /system scheduler disable schedcheckWifi  
    / Вот что я сейчас пытаюсь заставить работать, но после изменений он не подключается к моей точке доступа. Я уже делал туда-сюда разные варианты и кажется, вернулся почти к тому, что ты написал. Сейчас стоит 5 МГц, 802.11. СPE меняет ширину канала на 5 МГц с правильной информацией слишком быстро, потом переключается на 10 МГц, 20 МГц — просто не сканирует достаточно долго, чтобы найти точку доступа. Кажется, я понял. «local delais 5s» — это сколько времени оставаться на одном параметре, прежде чем переходить к следующей ширине, да?
     
     
     
    chadd
    Guest
    #11
    0
    16.02.2012 04:36:00
    Да, именно это задержка. Я уже давно все настроил, но тоже пришлось увеличить задержку. Chadd
     
     
     
    0ldman
    Guest
    #12
    0
    19.02.2012 18:37:00
    Вот моя финальная версия правок, основанная на том, что делали до меня. Мне ещё нужно разобраться, как автоматизировать смену канала расширения HT в будущем.

    /system script  
    add name=ChangeBand policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api source=":local delais 10s\r\n:local liste 5mhz,10mhz,20mhz;\r\n \r\n:foreach band in=\$liste do={\r\n:if (![/interface wireless get wlan1 running]) do={\r\n/interface wireless set wlan1 channel-width=\$band wireless-protocol=any\r\n:delay \$delais\r\n}\r\n}\r\n"

    /system scheduler  
    add comment="" disabled=no interval=20s name="schedcheckWifi" on-event=ChangeBand start-time=startup  
    /system scheduler disable schedcheckWifi
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры