#!/bin/bash SCRIPT_NAME="Bluetooth DUN Discovery & Connection Automation Script v1" if [ `whoami` = "root" ]; then echo $SCRIPT_NAME else echo "$SCRIPT_NAME must be run as root." echo "Try again using \"sudo $0\"" exit fi DEVICES=`hcitool dev | egrep [0-9a-fA-F]{2}: | awk '{print $1}'` DEVICE_COUNT=`printf $DEVICES | awk '{print $2}'` if [ "$DEVICE_COUNT" = "" ]; then DEV=$DEVICES else select DEV in $DEVICES; do if [ "$DEV" != "" ]; then break; fi; done; fi; echo "Using $DEV..." echo "Scanning for Bluetooth devices in the vicinity..." TARGETS=`hcitool -i $DEV scan | egrep [0-9a-fA-F]{2}: | awk '{print $1"="$2}'` TARGET_COUNT=`printf $TARGETS | awk '{print $2}'` if [ "$TARGET_COUNT" = "" ]; then TARGET=$TARGETS else select TARGET in $TARGETS; do if [ "$TARGET" != "" ]; then break; fi; done fi; TARGET_BDADDR=`printf $TARGET | sed 's/=.*$//'` TARGET_NAME=`printf $TARGET | sed 's/=/ /' | awk '{print $2}'` echo "Searching $TARGET_BDADDR ($TARGET_NAME)..." CHANNEL=`sdptool search --bdaddr $TARGET_BDADDR DUN | grep Channel | sed 's/[^0-9]//g'` echo "DUN on $TARGET_NAME is on channel $CHANNEL..." if [ "$CHANNEL" != "" ]; then DEVICE_NUM_ID=`printf $DEV | sed 's/[^0-9]//g'` read -p "Save to /etc/bluetooth/rfcomm.conf (y) or run once only (N)? [y/N] " SAVE_OR_ONCE if [ "$SAVE_OR_ONCE" = "y" ] || [ "$SAVE_OR_ONCE" = "Y" ]; then echo "rfcomm0 { bind yes; device $TARGET_BDADDR; channel $CHANNEL; comment "$TARGET_NAME" }" >> /etc/bluetooth/rfcomm.conf echo "Settings saved!" cat /etc/bluetooth/rfcomm.conf else echo "Connecting..." rfcomm release $DEVICE_NUM_ID rfcomm bind $DEVICE_NUM_ID $TARGET_BDADDR $CHANNEL fi; fi;