![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Еще один скрипт из комплекта bluetooth-cli. Обертка вокруг pand, которая обррабатывает типичные ситуации
Использование:
bluenet on
найти первую активную точку доступа с профайлом NAP из перечисленных в /etc/bluetooth/NAP (в порядке перечисления) и присоединиться
bluenet off
отсоединиться
bluenet address профиль
Где профиль NAP (по умолчанию) или GN - присоединться к указанной точке доступа
bluenet master профиль
Изобразить из себя точку доступа (если профиль NAP) или мастера ad-hoc сети (если профиль GN).
Собственно скрипт
Вспомогательные скрипты, вызываемые pand при поднятии интерфейса
btnet-client: (предполагает, что в /etc/network/interfaces присутствует строка "iface bnep0 inet dhcp")
bnet-server:
Не хватает еще скрипта, который добавляет hostname приконнектившихся машин в файл, из которого резолвит имена dnsmasq.
Но вообще, если в режиме клиента я этим скриптом пользуюсь уже давно, и для коннекта к телефону, и для коннекта к компьютеру
(в /etc/bluetooth/NAP у меня две строчки - адрес домашнего компьютера, и адрес моего телефона - именно в такой последовательности), то режим сервера я активно не тестировал. Последнее время ad-hoc сети чаще делаются по Wi-Fi, чем по bluetooth.
Использование:
bluenet on
найти первую активную точку доступа с профайлом NAP из перечисленных в /etc/bluetooth/NAP (в порядке перечисления) и присоединиться
bluenet off
отсоединиться
bluenet address профиль
Где профиль NAP (по умолчанию) или GN - присоединться к указанной точке доступа
bluenet master профиль
Изобразить из себя точку доступа (если профиль NAP) или мастера ad-hoc сети (если профиль GN).
Собственно скрипт
#!/bin/sh case "$1" in on) # Поиск точки доступа в /etc/bluetooth/NAP while read address; do echo "Trying access point $address" if sdptool search --bdaddr $address NAP | grep -q "Service Name"; then pand -c $address -d NAP --devup /usr/local/sbin/btnet-client exit fi done </etc/bluetooth/NAP echo "No active network access point found" 1>&2 exit 1 ;; [0-9A-F][0-9A-F]:*) role=${2:-"NAP"} pand -c $1 -d $role --devup /usr/local/sbin/btnet-client ;; off) ifdown bnep0 pand -K ;; master) # вариант работы ноутбука сервером ad-hoc сети role=${2:-"GN"} PAN_BRIDGE=btgn0 # Экспортируем имя briget для использования btnet-server скриптом export PAN_BRIGE # Создаем bridge на котором будет висеть dhcp сервер brctl addbr $PAN_BRIDGE ifconfig btgn0 10.0.0.1 netmask 255.255.255.0 broacast 10.0.0.255 # Здесь надо бы проверить запущенность dnsmasq и его слегка # переконфигурировать. Но у меня он все равно запущен и # сконфигурирован так, что и так работает. # За исключением того что отдает default gateway и в режиме NAP # и в режиме GN # Если мы работаем NAP, включаем форвардинг if [ "$role" = "NAP" ]; then echo 1> /proc/sys/net/ipv4/ip_forward fi # Запускаем pand в режиме приема pand --listen --role $role --devup /usr/local/sbin/btnet-server ;; *) echo "use $0 on|off|master [GN|NAP]|address [GN|NAP]" >&2 exit 1 ;; esac
Вспомогательные скрипты, вызываемые pand при поднятии интерфейса
btnet-client: (предполагает, что в /etc/network/interfaces присутствует строка "iface bnep0 inet dhcp")
#!/bin/sh logger -p daemon.info "btnet-client[$$] Connected to PAN access point $2 interface $1" ifup $1
bnet-server:
#!/bin/sh logger -p daemon.info "btnet-server[$$]: Machine $2 is connected to our net inetface $1" if [ -z "$PAN_BRIDGE" ]; then logger -p daemon.error "btnet-client[$#]: PAN_BRIDGE variable is absent. Is pand started from bluenet script?" exit 1 fi brctl add $PAN_BRIDGE $1 ifconfig $1 0.0.0.0
Не хватает еще скрипта, который добавляет hostname приконнектившихся машин в файл, из которого резолвит имена dnsmasq.
Но вообще, если в режиме клиента я этим скриптом пользуюсь уже давно, и для коннекта к телефону, и для коннекта к компьютеру
(в /etc/bluetooth/NAP у меня две строчки - адрес домашнего компьютера, и адрес моего телефона - именно в такой последовательности), то режим сервера я активно не тестировал. Последнее время ad-hoc сети чаще делаются по Wi-Fi, чем по bluetooth.