04.06.2010 07:26
cppmm — Настройка атоматического выбора wi-fi сети в Debian.
Есть у меня одна замечательная вещь - Asus EeePC. И, так как тут имеется wi-fi карта, не пользоваться услугами беспроводной связи просто грех. Но хорошо, когда сеть одна. А что, если их много и надо в одном месте включать одну, в другом другую? И при этом всякие графические монструозные комбайны ставить не хочется. Как быть? Настроить имеющиеся в Debian'е инструменты работы с сетью. Это на самом деле намного проще, чем может показаться на первый взгляд.Управление сетевыми интерфейсами осуществляется в Debian'е через файл /etc/network/interfaces и скрипт /etc/init.d/networking. Для нас важен файл настроек. Если заглянуть в его man, то можно найти замечательный параметр mapping. Эта опция даёт возможность создавать разные логические интерфейсы на одном физическом и автоматически выбирать нужный по определённым параметрам. Проще говоря - что-то типа профилей. Для выбора надо набросать небольшой скриптик и прописать условия.
Итак, к делу.
Условие определения логического интерфейса могут быть любые. Мне лично удобно по mac-адресу(логичнее, конечно, кажется по SSID, но мне этот вариант не подходит, потому что на всех, настроенных мной точках, я выставляю опцию SSID Broadcast в off, поэтому увидеть его стандартными средствами, не подключившись проблематично, но если у вас не так, то разумеется определение профиля по SSID более правильный выбор). Логика работы проста - при поднятии интерфейса, система сканирует сеть, смотрит, какая из знакомых ей точек доступна и подключается к ней. Основную работу за нас будет делать небольшой скрипт. Примеры таких скриптов можно глянуть в /usr/share/doc/ifupdown/examples/ . Там же лежат примеры настройки файла interfaces. У меня скрипт получился такой:
Как можно заметить, несмотря на простоту, в скрипте есть несколько особенностей. Первая - ему по умолчанию в качестве первого аргумента передаётся имя интерфейса. Вторая - он читает построчно заданные в настройках параметры. Третья - он должен вернуть выбранное логическое имя интерфейса и код выхода(0 - всё хорошо, работаем, 1 - ошибка, выходим). Если первое и последнее - понятно, то второе требует небольшого пояснения. Скрипту передаются параметры, заданные в interfaces. Последним параметром обязательно должно быть имя логического интерфейса. И всё, что делает скрипт, в конечном счёте направлено на то, чтобы это имя вернуть на stdout. Как видно, в моём случае я сканирую воздух, и, если попадается знакомый mac, тут же выбираю соответствующее ему имя. Если знакомых нет, разумеется подключение прерывается. Маки и имена указаны в interfaces. Для тех, кто будет использовать выборку по SSID, надо будет сделать что-то типа iwlist $iface scanning | grep $ssid.
И наконец, запись в interfaces:
Я для примера показал две точки, но их на самом деле может быть сколько угодно. Главное соблюдать формат записи - map mac-адрес логическое_имя. Разумеется, параметры для каждой из точек могут совершенно любыми.
И последний штрих. Дело в том, что по умолчанию при загрузке /etc/init.d/networking стартует достаточно рано относительно других сервисов. Оно понятное дело нужно, когда у меня сервер со всякими sshd, apache и прочими радостями. Но на нетбуке это совершенно лишнее. А из-за такой "спешки" не успевают подгрузиться все нужные для работы выбирающего скрипта части. А именно, не инициализировался до конца интерфейс, поэтому команда iwlist не возвращала ожидаемого результата. Я решил это просто - двумя командами перенёс загрузку сети с ранних этапов на стандартные, вместе с основными частями системы:
# update-rc.d -f networking remove
# update-rc.d networking defaults
Всё. При загрузке, если я нахожусь в зоне действия знакомой сети, нетбук автоматом к ней подключится. Если я не выключал нетбук и перешёл от одной знакомой сети к другой, достаточно рестартануть сеть и всё будет отлично.
Именно за такие простые и удобные вещи я и люблю Linux вообще и Debian в частности.
Конечно. Проще несколько километров мышкой намотать и нажать пару десятков кнопочек. Кто ж спорит? :)
Вообще с постом согласен. Хорошее простое решение. Но, глядя объективно, nm умеет находить новые сетки вокруг себя. И пытается восстановить связь при потере оной (Все это с переменным успехом, но все-таки). Так что... it depends в общем.
А ещё этот nm умеет глючить отлично. Зачем зависеть от какой-то проги далеко не самой надёжной, когда можно всё сделать по-надежному и с гарантией? Новую сеть добавить - дело 30 секунд. Зато ничего вдруг не отвалится просто так и будет работать хоть где.
Вот ты настроил свою сеть в гноме/kde/etc, пользуешься. Упали иксы, не поднимаются. Полез в виртуальный терминал. Загуглить бы, а сети-то нету.. NM управляется только из гуя. И будешь сидеть, настраивать сеть полчаса... :)
Вот ты настроил свою сеть в гноме/kde/etc, пользуешься. Упали иксы, не поднимаются. Полез в виртуальный терминал. Загуглить бы, а сети-то нету.. NM управляется только из гуя. И будешь сидеть, настраивать сеть полчаса... :)
Уважаемый, вы как-то очень бегло прочитали мой коммент и не уловили основную суть.
В остальном, что касается меня, то я не юзаю nm и, оказавшись без иксов, вполне способен сказать нечто из серии:
В остальном, что касается меня, то я не юзаю nm и, оказавшись без иксов, вполне способен сказать нечто из серии:
/usr/sbin/wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -B
/sbin/dhclient -nw wlan0
Ну и тем более, зачем тогда NM, если можно один раз настроить всё, чтобы работало везде и всегда? :)
Знание матчасти не пригодится тому, кто решил юзать NM, т.к. он изначально расчитан на людей, не знающих матчасти, как раз чтобы избавить их от знания этой самой мат.части.
И да... с матчастью у меня может и не всё гладко, но ни в одном из юзаных мною дистров я не нашёл как рулить NM'ом без гуя в дефолтной установке. может и есть какие-то дополнительные пакеты или финты ушами, но это не меняет ситуации. Я поставил NM, который так волшебно всё разруливает. А оказывается, чтобы юзать его без гуя - надо ещё и матчасть учить. Уж лучше разобраться с конфигом interfaces один раз и не париться.
И если уж юзать менеджеры подобные - то тогда wicd, там хоть консольный клиент есть.
И да... с матчастью у меня может и не всё гладко, но ни в одном из юзаных мною дистров я не нашёл как рулить NM'ом без гуя в дефолтной установке. может и есть какие-то дополнительные пакеты или финты ушами, но это не меняет ситуации. Я поставил NM, который так волшебно всё разруливает. А оказывается, чтобы юзать его без гуя - надо ещё и матчасть учить. Уж лучше разобраться с конфигом interfaces один раз и не париться.
И если уж юзать менеджеры подобные - то тогда wicd, там хоть консольный клиент есть.
Ага.. что примечательно - консольный клиент только "разрабатывается" после стольки-то лет...
Собрать всё воедино - это конечно хорошо. Но собрать так,чтобы всё работало всегда и везде. За последний год этот NM не раз показывал,насколько он "хорошо" собрал.
Да, последние релизы стали заметно лучше. Но, блин, через столько времени наконец сделать нормально - это пипец. Сейчас заработало, в следующем релизе снова сломают. И метайся то и дело - толи точка доступа тупит, толи забыл что-то, толи NM лажает... Да нафига? Я понимаю, если в инет выходишь каждый день с нового места через новое соединение... В остальных случаях NM - просто лишнее слабое звено. Да удобно, да красиво. И дай бог, чтобы оно действительно стало тем, что ты в нём видишь. Хотя бы через год. Но пока это всего лишь набор костылей, нифига не нативно прикрученных.
Собрать всё воедино - это конечно хорошо. Но собрать так,чтобы всё работало всегда и везде. За последний год этот NM не раз показывал,насколько он "хорошо" собрал.
Да, последние релизы стали заметно лучше. Но, блин, через столько времени наконец сделать нормально - это пипец. Сейчас заработало, в следующем релизе снова сломают. И метайся то и дело - толи точка доступа тупит, толи забыл что-то, толи NM лажает... Да нафига? Я понимаю, если в инет выходишь каждый день с нового места через новое соединение... В остальных случаях NM - просто лишнее слабое звено. Да удобно, да красиво. И дай бог, чтобы оно действительно стало тем, что ты в нём видишь. Хотя бы через год. Но пока это всего лишь набор костылей, нифига не нативно прикрученных.
через столько времени наконец сделать нормально
Вы так говорите, как будто лично с разработчкиками контракт подписали, а они все дедлайны просрали.
Поддерживаю.
Мой опыт общения с nm сводился зачастую к попытке чего-нить настроить, неудаче и удалении сабжа нафиг из системы. :)
Задумка у nm хороша, но реализация просто мегаотвратительна. Имхо, этот продукт неюзабелен в принципе.
А с interfaces я стал разбираться, потому что это как бы изкоробочное решение, а не надстройка-костыль над системой.
Говорят, ещё есть wicd, но мне его пробовать не доводилось. А теперь уже и не нужно. :)
Мой опыт общения с nm сводился зачастую к попытке чего-нить настроить, неудаче и удалении сабжа нафиг из системы. :)
Задумка у nm хороша, но реализация просто мегаотвратительна. Имхо, этот продукт неюзабелен в принципе.
А с interfaces я стал разбираться, потому что это как бы изкоробочное решение, а не надстройка-костыль над системой.
Говорят, ещё есть wicd, но мне его пробовать не доводилось. А теперь уже и не нужно. :)
Ну, не обязательно. У меня во времена ubuntu 8.10 nm ни в какую не хотел подключаться к сети, и только прописка конфиг. ручками помогла. С тех пор так и осталось, хотя nm в lucid уже работает на отлично
Вот. Спасибо. Ты сделал то, что мне было лень делать. Теперь можно wpa-supplicant удалять =>
Всегда пожалуйста. :)
Это и есть OpenSource - сделал что-то, поделись с другими.
Это и есть OpenSource - сделал что-то, поделись с другими.
Мне просто было жутко лень это сделать. Как-то и wpa работал, но выпилить его хотелось.
Так как пошли пинки в сторону NM у Ъ-линуксоидов, попробую вот что высказать.
1. Скрипт весьма полезен, я бы попросил автора покурить в сторону выбора сети без перезагрузки сети, было бы круто вообще.
2. Выбираем любую доступную сеть (что примечательно, NM умеет хранить историю сетей).
Добавляем галочку "Подключать автоматически".
Ну и конечно, это же очень сложно.
3. Нетворкманагером можно управлять из консоли. Но зачем? Для просмотра статуса соединения удобно пользовать программку nm-tool.
Насколько мне известно, в данный момент разрабатывается cnetworkmanager - консольный клиент для NM, в Федоре привычно он уже есть, в убунту (по крайней мере в lucid) не завезли. Я им пользовался, и скажу, что это удобно.
К чему я это все говорю. Посмотрите, какой зоопарк развели в линуксе со звуком - написали всяких там прослоек, у разрабов потом крышу сносит. А ведь надо предусмотреть, установил ли Вася Пупкин, считающий себя Ъ пульсаудио или нет. То же самое из сетью. Вы должны быть благодарны проекту NetworkManager, который собирает всё управление сетью в себе, а не разбрасывает это по полочкам и кучкам. Это полезно и удобно. Хотите консоли - блять, настройте PPPoE через chap-secrets, имея под рукой только маны. После этого вы поймете, почему эта гуевина находится в вашем дистрибутиве. Я написал это тебе, dfx.
1. Скрипт весьма полезен, я бы попросил автора покурить в сторону выбора сети без перезагрузки сети, было бы круто вообще.
2. Выбираем любую доступную сеть (что примечательно, NM умеет хранить историю сетей).
Добавляем галочку "Подключать автоматически".
Ну и конечно, это же очень сложно.
3. Нетворкманагером можно управлять из консоли. Но зачем? Для просмотра статуса соединения удобно пользовать программку nm-tool.
Насколько мне известно, в данный момент разрабатывается cnetworkmanager - консольный клиент для NM, в Федоре привычно он уже есть, в убунту (по крайней мере в lucid) не завезли. Я им пользовался, и скажу, что это удобно.
К чему я это все говорю. Посмотрите, какой зоопарк развели в линуксе со звуком - написали всяких там прослоек, у разрабов потом крышу сносит. А ведь надо предусмотреть, установил ли Вася Пупкин, считающий себя Ъ пульсаудио или нет. То же самое из сетью. Вы должны быть благодарны проекту NetworkManager, который собирает всё управление сетью в себе, а не разбрасывает это по полочкам и кучкам. Это полезно и удобно. Хотите консоли - блять, настройте PPPoE через chap-secrets, имея под рукой только маны. После этого вы поймете, почему эта гуевина находится в вашем дистрибутиве. Я написал это тебе, dfx.
И да, если кого-то интересует как управлять nm без cnetworkmanager'а, отвечу - через dbus. Например, так.
Ну да. Давай и плеером через dbus управлять и рабочие столы переключать через него же... а фигли? удобней же, чем один раз конфиг настроить...
вообще спор ниочем... хорошо что есть nm и хорошо что конфиги еще не отменили.на домашнем компе нет nm, на нетбуке есть(мало ли в кафе зайти),но на нетбуке домашняя вафля поднимается из конфигов(мне так понятнее). главное выбор есть
NM нужен не только для wifi, у меня его основное предназначение - руление hspda-модемом, с чем он прекрасно и справляется. А если он умеет еще и wifi и lan, то зачем лишние телодвижения?
Встроенные средства тоже умеют и wi-fi и простую сеть. Так зачем лишние телодвижения? ;)
Вполне возможно, между прочим. Тут вот люди рассказывают душераздирающие истории о муках настройки PPPoE, который отлично настраивается без всяких костылей. Лично мне с такими модемами не приходилось работать, поэтому точно сказать не могу, но по моему опыту, иногда в базовой системе имеется столько возможностей, что поражаешься её универсальности.
у меня hspda модем :)
Для работы нужно следующее:
usb_modeswitch для включения режима модема (большинство детектится как cd-rom + картридер)
comgt для того, чтобы ввести pin-код
затем можно создавать ppp-соединение (через wvdial или сразу ppp). Кстати, если использовать wvdial, то можно обойтись и без comgt
Для работы нужно следующее:
usb_modeswitch для включения режима модема (большинство детектится как cd-rom + картридер)
comgt для того, чтобы ввести pin-код
затем можно создавать ppp-соединение (через wvdial или сразу ppp). Кстати, если использовать wvdial, то можно обойтись и без comgt
Хех.
pre-up опция interfaces для usb_modeswitch, Она же для ввода pin-кода. Потом с помощью параметра up устанавливаем соединение, используя pppd или wvdial и радуемся жизни. :)
А я-то думал, там что-то страшное. :)
pre-up опция interfaces для usb_modeswitch, Она же для ввода pin-кода. Потом с помощью параметра up устанавливаем соединение, используя pppd или wvdial и радуемся жизни. :)
А я-то думал, там что-то страшное. :)
И перед этим нужно искурить 5 кг манов, когда в NM + modem-manager все работает (тыкнул мышкой - выбрал своего оператора)
ну, мне интересно разбираться как оно делается. Да и не всегда есть возможность тыкнуть мышкой.
В общем, как обычно про фломастеры.
В общем, как обычно про фломастеры.
Мне проще один раз немного манов скурить, настроить и потом больше никогда не тыкать мышкой. :)
Правильно там про фломастеры говорят.
Правильно там про фломастеры говорят.
1. Скрипт весьма полезен, я бы попросил автора покурить в сторону выбора сети без перезагрузки сети, было бы круто вообще.
Уже начал. Если правильно понял логику работы, это реализуется через udev и опцию aloow-hotplug(а именно, скрипт /lib/udev/net.agent). Когда разберусь, разумеется отпишусь. Просто пока я не совсем разобрался, как udev получает параметры, указанные в interfaces. Но маны решают.
настройте PPPoE через chap-secrets, имея под рукой только маны.
Хинт: pppoe-setupВ общем как два пальца об асфальт.
Зачем же? pppoe-setup есть по дефолту, на моей памяти оно было всегда.
Так можно принять религию, запрещающую использовать ls и городить нечто типа:
Так можно принять религию, запрещающую использовать ls и городить нечто типа:
for i in * ; do echo $i ; done
Хотите консоли - блять, настройте PPPoE через chap-secrets, имея под рукой только маны.
проблем не возникало
+1. Настраивал в своё время, управился за час примерно (вместе с чтением манов). Причём сначала пытался через NM (часа два честно старался и потел) - не получилось. Эта сволочь даже не говорит, что не так, просто не соединяется. А через конфиги - каждый шаг можно проверить за 5.2 и поправить сразу.
Осилил. В последних версиях. До этого NM наотрез отказывался подключаться к моей точке доступа. Настройки ТД не менялись, если чё..
А к PPPoE я тогда так и не смог подключиться, да. Давай, объясни мне насколько неверен изгиб моих рук для работы с таким удобным и хорошим NM.
NM наотрез отказывался подключаться к моей точке доступа
к PPPoE я тогда так и не смог подключиться,
Осилил
отказывался
не смог
Осилил
Всегда так делал.
Я даже больше скажу. Описанную в топике настройку настройку я сделал без доступа к гуглу - забыл дома инет оплатить и от нечего делать решил попилить сеть на нетбуке. Вся информация, которая мне понадобилась есть в man interfaces, /usr/share/doc/ifupdown и манах к тем утилитам, что я использовал.
Я даже больше скажу. Описанную в топике настройку настройку я сделал без доступа к гуглу - забыл дома инет оплатить и от нечего делать решил попилить сеть на нетбуке. Вся информация, которая мне понадобилась есть в man interfaces, /usr/share/doc/ifupdown и манах к тем утилитам, что я использовал.
мне кажется, что wicd умеет тоже самое и немножко больше, так что советую посмотреть в его сторону
Я там выше писал, что знаю о wicd. Но предпочитаю использовать имеющиеся инструменты, если они работают хорошо, а не доустанавливать много всего и сразу.
ну да, а потом, еще напишешь поддержку подключению без перезапуска, еще чего-нибудь, и получится монструозный велосипед
Стоп.
А вот этого не надо. Я не писал ничего нового. Это стандартный путь настройки, предусмотренный дистрибутивом и имеющимися в нём инструментами.
Если уж сравнивать, то это wicd и nm - велосипеды, потому как оказывается без них всё работает. И если у кого-то нет времени/желания/знаний для того, чтобы разобраться в том, что предоставляет дистрибутив - это их выбор. Мне это не надо. И, как я и написал, судя по манам, подключение без перезапуска сети - это тоже предусмотренная разработчиками опция.
А вот этого не надо. Я не писал ничего нового. Это стандартный путь настройки, предусмотренный дистрибутивом и имеющимися в нём инструментами.
Stanzas beginning with the word "mapping" are used to determine how a logical interface name is chosen for a physical interface that is to be brought up. The first line of a mapping stanza
consists of the word "mapping" followed by a pattern in shell glob syntax. Each mapping stanza must contain a script definition. The named script is run with the physical interface name
as its argument and with the contents of all following "map" lines (without the leading "map") in the stanza provided to it on its standard input. The script must print a string on its
standard output before exiting. See /usr/share/doc/ifupdown/examples for examples of what the script must print. (c) man interfcaes
consists of the word "mapping" followed by a pattern in shell glob syntax. Each mapping stanza must contain a script definition. The named script is run with the physical interface name
as its argument and with the contents of all following "map" lines (without the leading "map") in the stanza provided to it on its standard input. The script must print a string on its
standard output before exiting. See /usr/share/doc/ifupdown/examples for examples of what the script must print. (c) man interfcaes
Если уж сравнивать, то это wicd и nm - велосипеды, потому как оказывается без них всё работает. И если у кого-то нет времени/желания/знаний для того, чтобы разобраться в том, что предоставляет дистрибутив - это их выбор. Мне это не надо. И, как я и написал, судя по манам, подключение без перезапуска сети - это тоже предусмотренная разработчиками опция.
Он может. Но это как и NM - лишняя прослойка между пользователем и системой.
Где-то я уже подобное видел.
# pacman -S netcfg
bash: pacman: команда не найдена
Ваш вариант не работает.
Так при чём здесь видел? Арчевский метод ну никак не применить к дебиану %)
йопрст.
И после этого говорят о том, что везде наплодили зоопарки дистрибутивов, несовместимых друг с другом. В gentoo можно поставить apt-get, в debian арче-конфиги сети, в слаке попадаются rpm'ки созданные для слаки... :))
И после этого говорят о том, что везде наплодили зоопарки дистрибутивов, несовместимых друг с другом. В gentoo можно поставить apt-get, в debian арче-конфиги сети, в слаке попадаются rpm'ки созданные для слаки... :))
Мне в генту больше всего нравится как она лезет в deb-src и с них код тырит :)
Ага. Есть такое.
А ещё у меня есть один знакомый гентушник, который с помощью emerge, пары скриптови такой-то матери deb-пакеты собирает, потому что на серверах держит дебиан. :)
А ещё у меня есть один знакомый гентушник, который с помощью emerge, пары скриптов
прикрути-ка мне движок от мерса к жигулям или наоборот. Обе ведь машины - не проблема будет.
Я обожаю эти интернеты! Ведь просто один способ настройки сети показал, а тут набежали и устроили локальный холивар. :))
Люди-человеки, не бойтесь. После моего маленького топика никто не выпилит nm из дистрибутивов. Не надо пытаться его так яро защищать. Я не буду приходить к вам домой и поголовно настраивать всё через interfaces. :)
Люди-человеки, не бойтесь. После моего маленького топика никто не выпилит nm из дистрибутивов. Не надо пытаться его так яро защищать. Я не буду приходить к вам домой и поголовно настраивать всё через interfaces. :)
Священная война на то и священная, что ведётся не за логику и здравый смысл, а так.. за идею %))
Настоящему линуксоиду пофиг на инструмент. Но холивар - это святое!
ЛОР, кажется
Уже повторял сколько раз, кто как хочет так и дрочит, способ весьма хорош когда сети особо не меняются, да и дает понять как оно все работает, это главное, cppmm велосипедист в хорошем смысле этого слова)) лично я подчерпнул для себя интересное про маппинг. А вот что лично мне тут не нравится, что если нужно быстро подключится к новой сетке, нужно работать руками (и головой=) на что тратится время, вообщем у меня на дебиане wicd работал когда-то и я не жаловался.
жопу%)