Envoi bluetooth en ligne de commande

Wouah un mois sans signe de vie ?

Si si je suis toujours là, mon Twitter est même encore actif.

Et euh oui, j’ai un truc à vous montrer tout de même cette semaine : un script unix pour envoyer facilement un fichier via Bluetooth, sous linux. Ça paraît bien simple comme fonction en apparence mais lorsqu’on veut le faire dans un programme de manière automatique, on se perd vite entre les commandes.

Assurez vous d’avoir toutes ces commandes : bluetoothd, bluetooth-agent, rfcomm, hcitool, obexftp.

Pour envoyer un fichier a priori, tapez le nom du script et en arguments le fichier à envoyer et l’adresse mac si vous l’avez déjà.
L’usage est « usage : envoiBluetooth.bash [device] »

Le fichier peut aussi être téléchargé (en .bash sinon ce serveur web emet un 403…)

#!/bin/sh

BTD_LAUNCHED=`ps -e | grep bluetoothd`
BTA_LAUNCHED=`ps -e | grep  » bluetooth$ »`

STEP=1

echo « \033[1;4m \033[0m »
echo « \033[1;4m> Send a file by Bluetooth on shell |\033[0m »
echo
echo « File to send : \033[1m’$1’\033[0m »
echo « Deviced specified : \033[1m’$2’\033[0m (not mandatory) »
echo
echo « Let’s go. »

BEGIN=`date « +%s »`

################################################# KO

if [ `whoami` != « root » ]; then
echo « \n\033[1;31;4mYou should be root to do this.\033[0m »
echo « \nusage : `basename $0` [device] »
exit 1
fi

if [ $# -lt 1 ]; then
echo « \nusage : `basename $0` [device] »
exit 2
fi

if [ ! -f « $1 » ]; then
echo « \n\033[1;31;4m’$1′ is not a file.\033[0m »
echo « \nusage : `basename $0` [device] »
exit 2
fi

################################################# OK

echo « \n\033[1;32;40m$STEP/ Bluetooth Daemon\033[0m »
if [ -z « $BTD_LAUNCHED » ]; then
bluetoothd&
echo « I launched a new daemon »
else
echo « Already present daemon »
fi
STEP=`expr $STEP \+ 1`
echo « \n\033[1;32;40m$STEP/ Bluetooth Agent\033[0m »
if [ -z « $BTA_LAUNCHED » ]; then
bluetooth-agent 0000 $2
echo « \033[1mSleeping 10 seconds\033[0m »
echo « \033[1;4mYOU HAVE 10 SECONDS TO ENTER THIS PIN CODE ON PHONE : ‘0000’\033[0m »
echo « (I launched a new agent) »
sleep 10
else
echo « Already present agent »
fi
STEP=`expr $STEP \+ 1`
echo « \n\033[1;32;40m$STEP/ Getting device address\033[0m »
ADDRESS=$2;
if [ ! -z $ADDRESS ]; then
echo « You just gave me the address $ADDRESS »
else
echo « This may take a while… »
ADDRESS=$(hcitool scan | tail -n 1 | tr ‘ ‘ ‘\n’ | tr ‘\t’ ‘\n’ | head -n 2 | tail -n 1)
echo « Well, I found this address : ‘$ADDRESS’ (see nothing ? then something wrong happened before) »
fi
if [ -z $ADDRESS ]; then
echo « Do you have installed each needed command ? bluetoothd, bluetooth-agent, rfcomm, hcitool, obexftp ? »
exit 1
fi
STEP=`expr $STEP \+ 1`
echo « \n\033[1;32;40m$STEP/ Connecting to device\033[0m »
rfcomm connect 0 $ADDRESS &
PID=$!
echo « PID of connection manager : $PID »
STEP=`expr $STEP \+ 1`
echo « \n\033[1;32;40m$STEP/ FTP with file\033[0m »
obexftp -b $ADDRESS -p $1
STATUS=$?
STEP=`expr $STEP \+ 1`
echo « \n\033[1;32;40m$STEP/ Killing connection\033[0m »
kill $PID
echo « FTP with status $STATUS »
if [ $STATUS -eq 255 ]; then
echo « Which means \033[1;37;4msucessful\033[0m »
else
echo « Which means \033[1;31;4mfailure\033[0m »
fi

if [ $STATUS -eq 69 ]; then
echo « … is your file already used on the device ? »
fi

if [ $STATUS -eq 1 ]; then
echo « … are you sure your device address is correct ? »
fi

END=`date « +%s »`

LENGTH=`expr $END \- $BEGIN`
echo
echo « Duration : $LENGTH seconds »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*