#1 Le 20/05/2011, à 21:45
- blackmario
[udev] problème pour lancer un script lors de l'insertion d'une clé
Bonjour,
Je ne comprends pas pourquoi mon script ne se lance pas lorsque j'insère ma clé je pense pourtant tout avoir fait correctement, la règle a l'air de fonctionner car je demande un lien symbolique supplémentaire qui est crée lorsque j'insère ma clé mais mon script ne veut pas s'executer... Si quelqu'un de plus expérimenté avec udev pouvais m'éclairer...
Voici ma règle udev contenue dans le fichier /etc/udev/rules.d/1-cleprojet.rules:
ACTION=="add", SUBSYSTEMS=="usb", KERNEL=="sd?1", ATTRS{serial}=="5B8A1D0000AC" ,RUN+="/home/blackmario/scripts/synchro_dossier /media/USB/doss_sync /media/DATA/doss_sync"
Et voici le code du script (ce script sert a synchroniser le contenu de 2 dossiers en l'occurence dans ma règle :
#!/bin/sh
/usr/bin/gedit
OLDIFS=$IFS
IFS="
"
origine=$PWD
chemin=""
cpt=0
function parcoursDossier(){
cd "$3$chemin"
chemin="$chemin/$1"
echo "dans dossier"
echo $2$chemin
if !([ -e $1 ])
then
mkdir $1 ./
fi
echo "origine $origine"
if [ `ls -A "$origine/$2$chemin" | wc -l` -ne 0 ]
then
echo "ok"
for val2 in `ls -A "$origine/$2$chemin"`
do
if [ -d "$origine/$2$chemin/$val2" ]
then
parcoursDossier $val2 $2 $3
else
if [ -e "$3$chemin/$val2" ]
then
cp -u "$origine/$2$chemin/$val2" "$2$chemin"
else
if [ $dernierAccesCle -ge `stat -c%Y "$2$chemin/$val2"` ]
then
cp "$3$chemin/$val2"
else
rm "$3$chemin/$val2" "$origine/$2$chemin"
fi
fi
fi
done
fi
chemin=${chemin%/*}
cd $origine
}
if [ $# != 2 ]
then
echo "usage synchro_dossier.sh <chemin_premier_dossier> <chemin_second_dossier>"
exit 1
fi
if !([ -d $1 ])
then
echo "Le premier chemin que vous avez renseigné mène vers un fichier inexistant ou qui n'est pas un dossier"
exit 2
fi
if !([ -d $2 ])
then
echo "Le second chemin que vous avez renseigné mène vers un fichier inexistant ou qui n'est pas un dossier"
exit 2
fi
if [ "${1:${#1}-1}" = "/" ]
then
dossier1=${1%/*}
else
dossier1=$1
fi
if [ "${dossier1:0:2}" = "./" ]
then
dossier1=${dossier1/#"."/$PWD}
fi
if [ "${2:${#2}-1}" = "/" ]
then
dossier2=${2%/*}
else
dossier2=$2
fi
if [ "${dossier2:0:2}" = "./" ]
then
dossier2=${dossier2/#"."/$PWD}
fi
nb1=`ls -A $dossier1 | wc -l`
nb2=`ls -A $dossier2 | wc -l`
total=`expr $nb1 + $nb2`
echo $dossier1
echo $dossier2
dernierAccesCle=`cat $dossier1/...`
echo `date +%s` > "$dossier1/..."
if [ $nb1 -ne 0 ]
then
for val in `ls -A $dossier1`
do
if [ $val != "..." ]
then
if [ -d "$dossier1/$val" ]
then
parcoursDossier $val $dossier1 $dossier2 $dernierAccesCle
else
if [ -e "$dossier2/$val" ]
then
cp -u "$dossier1/$val" "$dossier2"
else
if [ $dernierAccesCle -ge `stat -c%Y "$dossier1/$val"` ]
then
rm "$dossier1/$val"
else
cp "$dossier1/$val" "$dossier2"
fi
fi
fi
fi
done
fi
if [ $nb2 -ne 0 ]
then
for val in `ls -A $dossier2`
do
if [ $val != "..." ]
then
if [ -d "$dossier2/$val" ]
then
parcoursDossier $val $dossier2 $dossier1 $dernierAccesCle
else
if [ -e "$dossier1/$val" ]
then
cp -u "$dossier2/$val" "$dossier1"
else
if [ $dernierAccesCle -ge `stat -c%Y "$dossier2/$val"` ]
then
rm "$dossier2/$val"
else
cp "$dossier2/$val" "$dossier1"
fi
fi
fi
fi
done
fi
IFS=$OLDIFS
exit 0
J'espère que quelqu'un pourra m'aider !! Merci d'avance !!
Hors ligne
#2 Le 21/05/2011, à 12:51
- blackmario
Re : [udev] problème pour lancer un script lors de l'insertion d'une clé
Je reviens à la charge, ma règle a l'air de fonctionner car ma clé est bien détécté et quand je fais une simulation avec udevadm test /sys/block/sdb/sdb1 mon terminal m'indique bien que mon script est lancé cependant rien ne s'effectue je ne comprend pas pourquoi... Même le script le plus simpliste du monde qui consiste juste a écrire "salut" dans un fichier afin de vérifier que le script est lancé ne fonctionne pas Je ne sais plus quoi faire j'espère que vous pourrez m'aider !!
Hors ligne
#3 Le 21/05/2011, à 13:20
- blackmario
Re : [udev] problème pour lancer un script lors de l'insertion d'une clé
Apparament ça fonctionne, je pense juste que j'ai du faire quelques betises dans mon script d'où ce disfonctionnement !
Hors ligne