Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 sad 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