BLUENET

Jun. 26th, 2008 01:12 pm
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
Еще один скрипт из комплекта bluetooth-cli. Обертка вокруг pand, которая обррабатывает типичные ситуации
Использование:
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.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

May 2025

S M T W T F S
    1 2 3
4 56 7 8 9 10
11 12 131415 1617
1819202122 2324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 24th, 2025 01:02 pm
Powered by Dreamwidth Studios