Re: Включаем интернет по расписанию
Вот именно те строки
AuthMode=WPA2PSK
EncrypType=AES
WPAPSK=1111111111
Моей квалификации не хватит для создания скрипта
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Вот именно те строки
AuthMode=WPA2PSK
EncrypType=AES
WPAPSK=1111111111
Моей квалификации не хватит для создания скрипта
Там все элементарно, в файле /tmp/RT2860.dat содается конфиг, затем несколько строк скрипта (в которых и нужно разобраться) инициализируют wi-fi. Нужно создать 2 конфига, в кроне их менять и преинициализировать wi-fi.
Ну, да, это-то очевидно, вот с инициализацией надо поразбираться. И с реализацией тоже(возможно неск. вариантов)
Вот именно те строки
Да, да, они...
Для открытой сети вместо первой, видимо, должно быть:
AuthMode=Open
Остальные уже не важно.
Ну, если будет время, может вечером попробую поиграться этим... Задачка-то интересная!
видимо, должно быть:
А не проще ли настроить wi-fi на открытую сеть и сохранить файл /tmp/RT2860.dat
вот с инициализацией надо поразбираться.
Как несложно догадаться, файл /tmp/RT2860.dat читается прямо модулем ядра при загрузке (insmod /lib/modules/2.6.23-rt/rt2860v2_ap.ko)
Промониторил два файла
1. С закрытой сетью
2. С открытой сетью
Меняются только эти два параметра
AuthMode=OPEN
EncrypType=NONE
Меняются только эти два параметра
Логично.
В общем, схему предлагаю следующую
1) Создаем 2 копии RT2860.dat - вариант для открытой сети, и для защищенной
2) По крону вызываем 2 скрипта, которые подменяют соответствующим файлом /tmp/RT2860.dat
и перегружают модуль rt2860v2_ap.ko
3) Смотрим, что получилось.
Сейчас попробую провернуть такое дело...
Обратите внимание, что после скрипта wlan.sh вызывается bridge.sh и интерфейс ra0 объединяется в бридж с ethernet.
Перед выгрузкой модуля следует удалить ra0 из бриджа, а после инициализации ra0 - вернуть в бридж.
Обратите внимание, что после скрипта wlan.sh вызывается bridge.sh и интерфейс ra0 объединяется в бридж с ethernet.
Перед выгрузкой модуля следует удалить ra0 из бриджа, а после инициализации ra0 - вернуть в бридж.
Zyxmon, не успел прочитать ваше сообщение - только что попробовал сделал. Бридж не трогал, но роутер у меня в режиме "точка доступа" - бридж вроде все равно должен быть?
Вот скрипты:
wl_open.sh
#!/bin/sh
ifconfig ra0 down
rmmod rt2860v2_ap.ko
rm -f /tmp/RT2860.dat
cp ./RT2860_open.dat /tmp/RT2860.dat
insmod /lib/modules/2.6.23-rt/rt2860v2_ap.ko
ifconfig ra0 up
brctl addif br0 ra0
wl_prot.sh
#!/bin/sh
ifconfig ra0 down
rmmod rt2860v2_ap.ko
rm -f /tmp/RT2860.dat
cp ./RT2860_prot.dat /tmp/RT2860.dat
insmod /lib/modules/2.6.23-rt/rt2860v2_ap.ko
ifconfig ra0 up
brctl addif br0 ra0
Предполагается, что в директории, из которой они запускаются, уже лежат файлы RT2860_open.dat и RT2860_prot.dat
полученные путем копирования RT2860.dat в соответствующих режимах.
Для вызова из cron ябы прописал в cp полные пути.
P.S.
Скрипты исправил.
Попробовал подключиться к точке - всё ок.
Отредактировано Dr.Acid (2014-04-10 22:42:56)
Попробовал подключиться - айпишник не выдается. Надо допиливать.
айпишник не выдается. Надо допиливать.
wi-fi отвалился от бриджа. brctl и ifconfig в помощь!
Dr.Acid :айпишник не выдается. Надо допиливать.
wi-fi отвалился от бриджа. brctl и ifconfig в помощь!
Разобрался.
Нужно в конец скриптов дописать строку
brctl addif br0 ra0
Скрипты поправил в том посте.
P.S.
yuoras, протестируйте эти скрипты "в бою" и отпишитесь - как работает(или нет).
И с вас, кстати, итоговая реализация задумки...
Отредактировано Dr.Acid (2014-04-10 22:52:43)
Я бы для надежности добавил в начало скриптов "brctl delif br0 ra0"
Я бы для надежности добавил в начало скриптов "brctl delif br0 ra0"
Тоже так подумал, но вроде исхожу из того, что он сам отваливается нормально. Видимо, это происходит при выгрузке модуля. Но можно и добавить, конечно - перед ifconfig ra0 down
В принципе, у меня вроде так все заработало, но надо подождать "полноценных" тестов.
Спасибо , вечером затестим
Вот собственно решил и попробовать
Создал wifi_close.sh c содержимым
#!/bin/sh
ifconfig ra0 down
rmmod rt2860v2_ap.ko
rm -f /tmp/RT2860.dat
cp ./RT2860_close.dat /tmp/RT2860.dat
insmod /lib/modules/2.6.23-rt/rt2860v2_ap.ko
ifconfig ra0 up
brctl addif br0 ra0
Сделал в файле RT2860.dat изменения и переименовал его в RT2860_close.dat , переместил в папку /tmp
Запустил скрипт wifi_close.sh и сразу же отвалилась web морда (интернет и putty работают)
Кстати скрипт так и не отработал до конца (просто висит на процессе).
Вот скрин htop
Вот собственно решил и попробовать
1) Ну, лично я, не правил файл RT2860.dat вручную, а просто прописав все необходимые настройки(защиту и т.п.), применив и убедившись, что всё работает, просто отписал(скопировал) /tmp/RT2860.dat под другим именем. Потом переключил сеть на открытую, и снова скопировал. Т.е. сам эти файлы не правил.
2) А сам скрипт wifi_close.sh вы из какой папки запускали? Нужно было из /tmp запускать, иначе команда cp не отработает(не найдет файл RT2860_close.dat)
Вообще, я бы так сделал:
1) Создал в /media/DISK_A1 папкую (допустим, wificontrol), т.е. на диске.
2) В эту папку поместил оба скрипта и оба файла .dat
3) В скриптах, в команде cp прописал так:
cp /media/DISK_A1/wificontrol/RT2860_close.dat /tmp/RT2860.dat
Вот так оно всё должно работать "железно".
Я точно ща не скажу, но вроде веб морда у меня не отваливалась.
Вечером ещё потестирую, поосновательней.
Всё сделал точно , как у Вас
В RT2860_open.dat оставил только
AuthMode=OPEN
EncrypType=NONE
Все файлы в одной папке /media/DISK_A1/system/root/wificonfig
#!/bin/sh
brctl delif br0 ra0
ifconfig ra0 down
rmmod rt2860v2_ap.ko
rm -f /tmp/RT2860.dat
cp /media/DISK_A1/system/root/wificonfig/RT2860_open.dat /tmp/RT2860.dat
insmod /lib/modules/2.6.23-rt/rt2860v2_ap.ko
ifconfig ra0 up
brctl addif br0 ra0
После запуска скрипта отвалился WIFi и всё.
Интернет есть только по шнурку, в web морде можно войти куда угодно , кроме "Сеть Wi-Fi"
Помог только ребут
Отредактировано yuoras (2014-04-12 15:42:14)
В RT2860_open.dat оставил только
Настройте как нужно wifi, сохраните файл и не трогайте его!
В RT2860_open.dat оставил только
Вот это не правильно - RT2860_open.dat должен представлять из себя весь вайл RT2860.dat, полученный при настройках роутера на открытый wifi.
Поэтому у вас wifi и не заработал - в RT2860.dat данных не хватало.
Настройте как нужно wifi, сохраните файл и не трогайте его!
Я пробовал и так тоже (Описывал в 64-м сообщении), только полученные файлы переименовал!!!
Собственно, рано радуемся.
Решил ещё попробовать. В общем, всё работает, но очень недолго: через несколько секунд после подключения к wifi она падает(адрес получить успевает, но, например, на веб зайти уже не успеваю). Нужно разбираться, что там происходит.
UPD
Похоже, ложная тревога - всё работает. Сейчас настраиваю полноценную тестовую связку, о результатах отпишу.
Отредактировано Dr.Acid (2014-04-12 22:09:21)
Итак, после окончательных тестов, разборов глюков и т.п.
окончательный(рабочий, проверенный, оттестированный) вариант скриптов:
wl_open.sh
#!/bin/sh
ifconfig ra0 down
rm -f /tmp/RT2860.dat
cp /media/DISK_A1/wifi_switch/RT2860_open.dat /tmp/RT2860.dat
ifconfig ra0 up
wl_prot.sh
#!/bin/sh
ifconfig ra0 down
rm -f /tmp/RT2860.dat
cp /media/DISK_A1/wifi_switch/RT2860_prot.dat /tmp/RT2860.dat
ifconfig ra0 up
Пояснения: Никаких отключений от бриджа, выгрузки модулей и т.п. - всё делается "на ходу"
Всё, что нужно - вырубить ra0, заменить файлик RT2860.dat на нужный, и снова врубить ra0
У меня(теперь) работает четко.
yuoras, делайте RT2860_open.dat и RT2860_prot.dat из своих соответствующих конфигураций(копированием, править самому ничего не нужно) и пробуйте эти скрипты - должно всё работать.
Мысль:
У меня название сети(SSID) было одинаковым - может, имеет смысл его разным делать, чтоб сразу было видно, что за сеть и не было путаницы с конфигурацией со стороны клиентов(хотя у меня вроде нормально всё было). Можно поэкспериментировать с этим...
Dr.Acid,
Благодарим за доводку,
Полезная штука. Только менять буду не шифрование сети, а мощность передатчика приглушать
ночью и утром, а днем на всю катушку.
Полезная штука. Только менять буду не шифрование сети, а мощность передатчика приглушать
ночью и утром, а днем на всю катушку.
А вот тут уже - свободный полет фантазии Много чего можно придумать - тут, скорей, сам принцип интересен.
Попробовал
С защищённой сети без проблем переходит в открытую, а вот с открытой в защищённую нет.
Даже ssid не отображается при поиске wifi сетей, такое чувство , что ra0 не поднимается!!
С защищённой сети без проблем переходит в открытую, а вот с открытой в защищённую нет.
Даже ssid не отображается при поиске wifi сетей, такое чувство , что ra0 не поднимается!!
1) Проверить на ошибки (я пробовал туда-сюда по неск раз - всё работало). Правда, исходное состояние(после загрузки) у меня было открытая сеть, но думаю, это не важно, - могу проверить и наоборот(не помню, может и проверял так тоже).
2) Может, мало времени ждете. Обновление происходит с некоторой задержкой. Сами скрипты у меня выполняются где-то около 5 сек. + через задержку будет видна новая сеть. Сек 20-30 на все должно хватить.
3) Можно ещё в консоли вручную вводить по команде из скрипта и смотреть, что будет.
4) Проверить, поднялся ли ra0 можно через ifconfig - должно быть UP
UPD
Проверил для случая, когда в исходном состоянии сеть защищенная. Всё работает, переключает туда-обратно без проблем, но(см. замечание):
Замечание:
Если вы подключаетесь к роутеру по wifi(как я) и запускаете скрипт в терминале, в процессе его выполнения(после команды ifconfig ra0 down) связь с роутером пропадает, и дальнейшие команды, я подозреваю, не выполняются(/не успевают выполниться)
Поэтому, я запускаю скрипты так:
~ # /media/DISK_A1/wifi_switch/wl_prot.sh &
Тогда скрипт выполняется в фоне, я же получаю консоль, которая тутже "дохнет"
При этом всё отрабатывает четко, т.е. уже через несколько чекунд винда показывает, что wi-fi соединение разорвано, а в соединении отображается "обновленная" сеть.
При работе через cron этой проблемы, естественно, не будет.
Отредактировано Dr.Acid (2014-04-14 18:29:31)
На основе PunBB, при поддержке Informer Technologies, Inc.