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