#1 Le 13/05/2007, à 00:09
- angenoir66
Astuce: Verrouillage du pc par bluetooth
Bonjour à tous.
J'ai découvert un petit script shell sympathique qui permet de verrouiller l'ordinateur (ou de lancer n'importe quelle autre application) selon la distance à laquelle se trouve un téléphone portable par rapport au pc.
Le script original vient du site: http://gentoo-wiki.com/TIP_Bluetooth_Proximity_Monitor
La version que je vais donner est modifié, et permet de lancer automatiquement une socket rfcomm au démarrage de l'application (et elle la détruit à la fin de l'exécution). De plus, elle utilise un appel dcop pour mettre en pause amarok lorsque l'on sort de la zone, et de le ré-enclencher lors du retour. Je fais aussi appel à aumix pour mettre le canal sonore principal à zéro.
Trêve de blah blah, il est cependant à noter que ce script peut (et doit) être grandement amélioré.
ATTENTION Avec mes modifications, si amarok n'est pas lancé lors de la sortie de zone, le système X plante. Je vous conseille donc de récupérer le script original sur le lien cité plus haut.
Variables à modifier:
DEVICE : Adresse MAC du périphérique bluetooth concerné. (utilisez "hcitool scan" pour la connaître)
INTERVAL : Durée en secondes entre les vérifications de l'éloignement du périphérique.
MIN_RSSI : Éloignement du périphérique à partir duquel le script considère qu'il est hors zone.
HCITOOL : Emplacement de l'exécutable de hcitool (utilisez "which hcitool" pour le connaître)
DATE : Format de la date pour le log [décommentez la ligne "#echo $1 >> /var/log/BTProximity.log" pour enregistrer le log dans le fichier spécifié, sinon il n'apparaîtra qu'en console]
fichier: /usr/local/bin/btproximity
#!/bin/bash
# BTProximity by Thomas Kear <qupada@initng.org>
# Inspired by scripts from gentoo-wiki.com, but designed for KDE users
# No warranty expressed or implied, if it breaks you get to keep both pieces.
DEVICE="00:00:00:00:00:00" # Use 'hcitool scan' to find
INTERVAL="2" # Seconds
MIN_RSSI="-5" # Min = -10
HCITOOL="/usr/bin/hcitool"
DATE="date +%X" # Format to log times in, default = HH:MM:SS (24 hour), 'date --help' for info
#rfcomm connect 0 $DEVICE&
log () {
# Log to console
echo $1
# Log to file
#echo $1 >> /var/log/BTProximity.log
}
# Script to run when device leaves proximity
device_out () {
log "`${DATE}`: Device left proximity"
proximity="out"
# Only change commands below this line
dcop kdesktop KScreensaverIface lock &> /dev/null # Start KDE Screensaver
dcop amarok player pause &> /dev/null &
aumix -v 0 &> /dev/null &
}
#Script to run when device enters proximity
device_in () {
log "`${DATE}`: Device entered proximity"
proximity="in"
# only change commands below this line
killall -9 kdesktop_lock &> /dev/null & # Stop KDE Screensaver. -9 might seem a bit harsh, but works fine
dcop amarok player play &> /dev/null &
aumix -v 100 &> /dev/null &
}
# This keeps trying to connect until it succeeds, may cause a few % CPU usage, but better than failing to unlock
connect () {
while `check_disconnected`
do
/usr/bin/hcitool cc ${DEVICE}
if `check_connected`
then
log "`${DATE}`: Connected to `${HCITOOL} name ${DEVICE}` (${DEVICE})"
sleep 3 # RSSI returns stupid values if measured immediately after connecting, wait a couple of seconds
fi
done
}
#Returns 0 if connected, 1 otherwise
check_connected () {
[[ -n `${HCITOOL} con | grep ${DEVICE}` ]] && return 0 || return 1
}
#Opposite of above, 1 if connected
check_disconnected () {
[[ -z `${HCITOOL} con | grep ${DEVICE}` ]] && return 0 || return 1
}
rfcomm connect 0 $DEVICE&> /dev/null &
proximity="in"
while `/bin/true`
do
#Connect to bluetooth device
check_disconnected && connect
#Get RSSI from bluetooth device
rssi=`${HCITOOL} rssi ${DEVICE} | gawk -F\:\ '{print $2}'`
if (( ${rssi} <= ${MIN_RSSI} ))
then
# Exit proximity
[[ ${proximity} == "in" ]] && device_out
else
# Enter proximity
[[ ${proximity} == "out" ]] && device_in
fi
# Wait for interval set at the top, and cycle
sleep ${INTERVAL}
done
Dernière modification par angenoir66 (Le 13/05/2007, à 00:10)
/etc/init.d/ est un nid de démons, les démons vous dis-je, les terrrrribles démons...
Hors ligne
#2 Le 13/05/2007, à 09:29
- clem-vangelis
Re : Astuce: Verrouillage du pc par bluetooth
en fait ya pas mal de truc a changer pour que ça amrche sous gnome
mais faudra que je test que j'aurais un tel portable qui supporte le bluetooth , en attendant hop marque-page
Dernière modification par clem-vangelis (Le 16/05/2007, à 21:02)
Hors ligne
#3 Le 06/10/2007, à 22:57
- Flew
Re : Astuce: Verrouillage du pc par bluetooth
Une version graphique avec un paquet .deb est sortie \o/
--> version 1.2
(\__/)
(='.'=)
(")_(")
Hors ligne