script bash pour mise en veille du disque usb

Top Page

Reply to this message
Author: anne.guilde@free.fr
Date:  
To: ML Guilde
New-Topics: Re: script bash pour mise en veille du disque usb
Subject: script bash pour mise en veille du disque usb
coucou


Pour mon script Rsync, j'ai ajouté 2 fonctions pour pour la mise en
veille du disque usb.

Je mets les 2 fonctions que j'ai fait pour mettre en veille et réactiver
le disque usb.
Si quelqu'un peut jeter un oeil

J'ai mis plein de echo pour suivre ce qui se passe
J'ai mis le résultat des echo avec des commentaires dans le mail

# sub pour enlever la veille du boitier usb
do_connect_boitier()
{
connected=$(blkid -t UUID=$UUID)
echo "resultat de connected : $connected"
if [ -z "$connected" ] # pas connecté
          then
           echo "$UUID : pas connecté - Backup: disque absent"
           echo "on remet en route le disque"
           echo "Connection du boitier USB"


           echo "avant bind"
           ls -al /dev/sd*


           echo "binding device $UUID"
           echo -n "1-2.5.5" > /sys/bus/usb/drivers/usb/bind


           ls -al /dev/sd*
         echo "début sleep a : après bind"
           sleep 10
         echo "fin sleep"
           ls -al /dev/sd*


           # y-a pas de /dev/sdb1 après le bind
           # comment récupérer le /dev/sdb1


           DEV_NAME=$(blkid -U "$UUID")
           echo "DEV_NAME : $DEV_NAME"
               DEV_NAME=$(blkid -U "$UUID")
           echo "DEV_NAME : $DEV_NAME"
           DEV_NAME1=echo /dev/$(basename $(dirname $(readlink 
/sys/class/block/$(basename $DEV_NAME))))
           echo "DEV_NAME1 : $DEV_NAME1"


           ls -al /dev/sd*
         echo "début sleep avant sdparm --command=start"
           sleep 10
         echo "fin sleep"
           ls -al /dev/sd*


           DEV_NAME1="/dev/sdb"


               # sdparm --command=start /dev/sdb
           echo "sdparm start"
               sdparm --command=start "$DEV_NAME1" >/dev/null


           ls -al /dev/sd*
         echo "début sleep après sdparm --command=start"
           sleep 10
         echo "fin sleep"
           ls -al /dev/sd*



           # send SCSI start command
           echo "Sync device $DEV_NAME1"
           sdparm --command=sync $DEV_NAME1 >/dev/null


           echo "après sdparm --command=sync"
           ls -al /dev/sd*


          else #connecté
               echo "$UUID : déjà connecté - Backup: disque présent"
fi
}


# sub pour mettre en veille le boitier usb
do_suspend_boitier()
{
echo "début suspend boitier"
ls -al /dev/sd*
DEV_NAME=$(blkid -U "$UUID")
#DEV_NAME=$(blkid -t UUID=$UUID |cut -f1 -d:)
echo "DEV_NAME : $DEV_NAME"

echo "DEV_NAME1 1: $DEV_NAME1"
DEV_NAME1=echo /dev/$(basename $(dirname $(readlink
/sys/class/block/$(basename $DEV_NAME))))
echo "DEV_NAME1 2: $DEV_NAME1"

DEV_NAME1="/dev/sdb"
echo "DEV_NAME1 3: $DEV_NAME1"

# recherche du port du boitier usb
DEVICE1=$(udevadm info --query=path --name=${DEV_NAME1} --attribute-walk | \
egrep "looking at parent device" | head -1 | \
sed -e "s/.*looking at parent device '\(\/devices\/.*\)\/.*\/host.*/\1/g")
DEV_BUS_ID=${DEVICE1##*/}
echo "Found device $DEVICE1 associated to $DEV_NAME1; USB bus id is
$DEV_BUS_ID"

echo "Deconnection du boitier USB"
# send SCSI sync command, some devices don't support this so we just
# ignore errors with "|| true"
echo "Syncing device $DEV_NAME1"
sdparm --command=sync "$DEV_NAME1" >/dev/null || true

# send SCSI stop command
echo "Stopping device $DEV_NAME1"
sdparm --command=stop "$DEV_NAME1" >/dev/null

# unbind it; if this yields "no such device", we are trying to unbind 
the wrong device
echo "unbinding device $DEV_BUS_ID"
if [[ "${DEV_BUS_ID}" == fw* ]]
then
     echo "unbinding device $DEV_BUS_ID"
     echo -n "${DEV_BUS_ID}" > /sys/bus/firewire/drivers/sbp2/unbind
else
     echo "unbinding device $DEV_BUS_ID"
     echo -n "${DEV_BUS_ID}" > /sys/bus/usb/drivers/usb/unbind
fi


echo "fin suspend boitier"
ls -al /dev/sd*
}

do_connect_boitier
echo "début sleep"
sleep 180
echo "fin sleep"
###do_mount
if [ -f $EXCLUDES ]; then
if [ -d $BACKUPDIR ]; then
# now the actual transfer
### do_purge
# Bon là, pour une fois, commentaire clair dans une modif de script
# Ajout PS : avant de faire le backup, on dumpe les bases mySQL
# utilisation des outils SME !
### /sbin/e-smith/signal-event pre-backup
### do_rsync && do_accounting
echo "tout va bien"
else
echo "cant find $BACKUPDIR"; exit
fi
else
echo "cant find $EXCLUDES"; exit
fi
###do_umount
do_suspend_boitier


résutat =>
----------

# ./RsyncUSB-nux-corriger-1
resultat de connected :
d74930de-fb5f-41e5-9503-35079f5793aa : pas connecté - Backup: disque absent
on remet en route le disque
Connection du boitier USB
avant bind
brw-rw---- 1 root disk 8, 0 9 févr. 03:54 /dev/sda
brw-rw---- 1 root disk 8, 1 9 févr. 03:54 /dev/sda1
brw-rw---- 1 root disk 8, 2 9 févr. 03:54 /dev/sda2
brw-rw---- 1 root disk 8, 3 9 févr. 03:54 /dev/sda3
binding device d74930de-fb5f-41e5-9503-35079f5793aa
brw-rw---- 1 root disk 8, 0 9 févr. 03:54 /dev/sda
brw-rw---- 1 root disk 8, 1 9 févr. 03:54 /dev/sda1
brw-rw---- 1 root disk 8, 2 9 févr. 03:54 /dev/sda2
brw-rw---- 1 root disk 8, 3 9 févr. 03:54 /dev/sda3
début sleep a : après bind
fin sleep
brw-rw---- 1 root disk 8, 0 9 févr. 03:54 /dev/sda
brw-rw---- 1 root disk 8, 1 9 févr. 03:54 /dev/sda1
brw-rw---- 1 root disk 8, 2 9 févr. 03:54 /dev/sda2
brw-rw---- 1 root disk 8, 3 9 févr. 03:54 /dev/sda3
brw-rw---- 1 root disk 8, 16 9 févr. 19:18 /dev/sdb
=> Pas de /dev/sdb1 donc uuid pas reconnu

DEV_NAME :
DEV_NAME :
basename: opérande manquant
Saisissez « basename --help » pour plus d'informations.
dirname: opérande manquant
Saisissez « dirname --help » pour plus d'informations.
basename: opérande manquant
Saisissez « basename --help » pour plus d'informations.
./RsyncUSB-nux-corriger-1-tux: line 291: /dev/ : ceci est un répertoire
DEV_NAME1 :
brw-rw---- 1 root disk 8, 0 9 févr. 03:54 /dev/sda
brw-rw---- 1 root disk 8, 1 9 févr. 03:54 /dev/sda1
brw-rw---- 1 root disk 8, 2 9 févr. 03:54 /dev/sda2
brw-rw---- 1 root disk 8, 3 9 févr. 03:54 /dev/sda3
brw-rw---- 1 root disk 8, 16 9 févr. 19:18 /dev/sdb
début sleep avant sdparm --command=start
fin sleep
brw-rw---- 1 root disk 8, 0 9 févr. 03:54 /dev/sda
brw-rw---- 1 root disk 8, 1 9 févr. 03:54 /dev/sda1
brw-rw---- 1 root disk 8, 2 9 févr. 03:54 /dev/sda2
brw-rw---- 1 root disk 8, 3 9 févr. 03:54 /dev/sda3
brw-rw---- 1 root disk 8, 16 9 févr. 19:18 /dev/sdb

=> J'ai mis en dur DEV_NAME1="/dev/sdb" dans le script
=> Si quelqu'un a une idée

sdparm start
brw-rw---- 1 root disk 8, 0 9 févr. 03:54 /dev/sda
brw-rw---- 1 root disk 8, 1 9 févr. 03:54 /dev/sda1
brw-rw---- 1 root disk 8, 2 9 févr. 03:54 /dev/sda2
brw-rw---- 1 root disk 8, 3 9 févr. 03:54 /dev/sda3


début sleep après sdparm --command=start
fin sleep
brw-rw---- 1 root disk 8, 0 9 févr. 03:54 /dev/sda
brw-rw---- 1 root disk 8, 1 9 févr. 03:54 /dev/sda1
brw-rw---- 1 root disk 8, 2 9 févr. 03:54 /dev/sda2
brw-rw---- 1 root disk 8, 3 9 févr. 03:54 /dev/sda3
brw-rw---- 1 root disk 8, 16 9 févr. 19:18 /dev/sdb
brw-rw---- 1 root disk 8, 17 9 févr. 19:18 /dev/sdb1
Sync device /dev/sdb
après sdparm --command=sync
brw-rw---- 1 root disk 8, 0 9 févr. 03:54 /dev/sda
brw-rw---- 1 root disk 8, 1 9 févr. 03:54 /dev/sda1
brw-rw---- 1 root disk 8, 2 9 févr. 03:54 /dev/sda2
brw-rw---- 1 root disk 8, 3 9 févr. 03:54 /dev/sda3
brw-rw---- 1 root disk 8, 16 9 févr. 19:18 /dev/sdb
brw-rw---- 1 root disk 8, 17 9 févr. 19:18 /dev/sdb1
début sleep
fin sleep
tout va bien
début suspend boitier
brw-rw---- 1 root disk 8, 0 9 févr. 03:54 /dev/sda
brw-rw---- 1 root disk 8, 1 9 févr. 03:54 /dev/sda1
brw-rw---- 1 root disk 8, 2 9 févr. 03:54 /dev/sda2
brw-rw---- 1 root disk 8, 3 9 févr. 03:54 /dev/sda3
brw-rw---- 1 root disk 8, 16 9 févr. 19:18 /dev/sdb
brw-rw---- 1 root disk 8, 17 9 févr. 19:18 /dev/sdb1
DEV_NAME : /dev/sdb1
DEV_NAME1 1: /dev/sdb
=> les paramètres d'une fonction sont passées aux autres fonctions ???

./RsyncUSB-nux-corriger-1-tux: line 335: /dev/sdb: Permission non accordée
=> pourquoi Permission non accordée
=> J'ai testé en ligne de commande cela fonctionne
=> # UUID="d74930de-fb5f-41e5-9503-35079f5793aa"; DEV_NAME=$(blkid -t
UUID=$UUID |cut -f1 -d:); echo /dev/$(basename$(dirname $(readlink
/sys/class/block/$(basename $DEV_NAME))))
=> /dev/sdb

DEV_NAME1 2: /dev/sdb
DEV_NAME1 3: /dev/sdb
Found device /devices/pci0000:00/0000:00:12.2/usb1/1-2/1-2.5/1-2.5.5
associated to /dev/sdb; USB bus id is 1-2.5.5
Deconnection du boitier USB
Syncing device /dev/sdb
Stopping device /dev/sdb
unbinding device 1-2.5.5
unbinding device 1-2.5.5
fin suspend boitier
brw-rw---- 1 root disk 8, 0 9 févr. 03:54 /dev/sda
brw-rw---- 1 root disk 8, 1 9 févr. 03:54 /dev/sda1
brw-rw---- 1 root disk 8, 2 9 févr. 03:54 /dev/sda2
brw-rw---- 1 root disk 8, 3 9 févr. 03:54 /dev/sda3

Si quelqu'un a un peu de temps pour lire et donner des conseils

Merci
Anne