Bonjour à tous !
Voici mon problème, j’ai un script en bash qui; globalement effectue une sauvegarde d’une partition virtuelle de XEN sur un disque dur USB.
Si il y a des erreurs, un mail est envoyé.
Les principales erreurs sont dues au fait qu’il ne reconnait pas les commandes de XEN du genre:
xm shutdown “nom machine” ou xm create " …"
Je pense que je n’ai pas renseigné l’environnement des commandes comme on doit le faire avec la ligne #!/bin/bash, le problème étant que je n’ai pas trouvé comment faire pour celles de XEN.
Est ce que quelqu’un pourrait m’aider ?
Merci d’avance ! : )
xm ne doit pas être dans le $PATH du script, essaie de voir où il se trouve grâce à la commande :
Puis au début de ton script tu met
#!/bin/sh
PATH=$PATH:/le/dossier/que/tu/auras/trouvé
Merci de m’aider !
je ne peux pas essayer la sauvegarde en pleine journée a cause du trafic a ma boite mais j’essaie cette nuit et je te dis tout ce que ca a fait!
Meric bcp en tout cas : )
Donc j’ai lancé le script hier via crontab.
Même erreurs :
Rapport d’erreurs
jeudi 10 septembre 2009, 23:59:01 (UTC+0200)
Disque present - jeudi-23:59:01
/root/save.sh: line 6: xm: command not found
Probleme Zeus
mount: /dev/mapper/vdisk-zeus–disk already mounted or /root/chroot busy
mount: according to mtab, /dev/mapper/vdisk-zeus–disk is already mounted on /root/chroot
Probleme Montage disque Zeus - jeudi-23:59:01
/root/save.sh: line 38: xm: command not found
Probleme Zeus
Voici le script pour voir si j’ai fait des éventuelles erreurs ( je ne suis pas très calé en bash
)
#!/bin/sh
PATH=$PATH:/usr/sbin/xm
date > save_`date +%j-%Y`.log
if [ -e /dev/sdb1 ];
then echo "Disque present - `date +%A-%H:%M:%S`" >> save_`date +%j-%Y`.log;
if(xm shutdown zeus >> save_`date +%j-%Y`.log 2>&1 )
then echo "Zeus shutdown ok" >> save_`date +%j-%Y`.log;
else echo "Probleme Zeus" >> save_`date +%j-%Y`.log;
fi
if(mount /dev/vdisk/zeus-disk /root/chroot >> save_`date +%j-%Y`.log 2>&1 )
then echo "Montage Disque Zeus ok - `date +%A-%H:%M:%S`" >> save_`date +%j-%Y`.log;
if( mount -t ntfs-3g -o force /dev/sdb1 /root/usb >> save_`date +%j-%Y`.log 2>&1 )
then echo "Montage disque ok - `date +%A-%H:%M:%S`" >> save_`date +%j-%Y`.log;
if( mkdir /root/usb/`date +%j-%y` >> save_`date +%j-%Y`.log 2>&1 )
then echo "Creation dossier ok - `date +%A-%H:%M:%S` " >> save_`date +%j-%Y`.log;
if( cp -r /root/chroot/srv/data /root/usb/`date +%j-%y`/ >> save_`date +%j-%Y`.log 2>&1 )
then echo "Copie Data ok - `date +%A-%H:%M:%S`" >> save_`date +%j-%Y`.log;
else echo "Probleme Data - `date +%A-%H:%M:%S`" >> save_`date +%j-%Y`.log;
fi
if( cp -r /root/chroot/home /root/usb/`date +%j-%y`/ >> save_`date +%j-%Y`.log 2>&1 )
then echo "Copie Home ok - `date +%A-%H:%M:%S`" >> save_`date +%j-%Y`.log;
else echo "Probleme Home - `date +%A-%H:%M:%S`" >> save_`date +%j-%Y`.log;
fi
if(umount /root/usb >> save_`date +%j-%Y`.log 2>&1)
then echo "Demontage disque usb ok - `date +%A-%H:%M:%S`" >> save_`date +%j-%Y`.log;
else echo "Probleme umount USB - `date +%A-%H:%M:%S`" >> save_`date +%j-%Y`.log;
fi
if(umount /root/chroot >> save_`date +%j-%Y`.log 2>&1)
then echo "Demontage disque Zeus ok - `date +%A-%H:%M:%S`" >> save_`date +%j-%Y`.log;
else echo "Probleme umount Zeus - `date +%A-%H:%M:%S`" >> save_`date +%j-%Y`.log;
fi
else echo "Probleme creation dossier - `date +%A-%H:%M:%S`" >> save_`date +%j-%Y`.log;
fi
else echo "Probleme Mount USB-Disk- `date +%A-%H:%M:%S`" >> save_`date +%j-%Y`.log;
fi
else echo "Probleme Montage disque Zeus - `date +%A-%H:%M:%S`" >> save_`date +%j-%Y`.log;
fi
if(xm create /etc/xen/zeus.cfg >> save_`date +%j-%Y`.log 2>&1 )
then echo "Zeus start! ok" >> save_`date +%j-%Y`.log;
else echo "Probleme Zeus" >> save_`date +%j-%Y`.log;
fi
mail -s "Resume sauvegarde de `date`" xxxx@gmail.com < save_`date +%j-%Y`.log
mail -s "Resume sauvegarde de `date`" xxxx@medimex.fr < save_`date +%j-%Y`.log
mail -s "Resume sauvegarde de `date`" xxxx@medimex.fr < save_`date +%j-%Y`.log
else echo "Probleme Disque Non present - `date +%A-%H:%M:%S`" >> save_`date +%j-%Y`.log;
fi
Merci encore de votre aide : )
Cela changerait quelque chose si je mettais le path dans crontab directement ?
Au cas ou voici ma crontab:
###################
Save Daily Zeus
###################
MAILTO=root
SHELL=/bin/bash
59 23 * * * /root/save.sh <---- Voici le script qui effectue la sauvegarde, lancé automatiquement tous les soirs a 23h59 et qui s’éffectue entièrement que si un disque dur est branché.
00 14 * * 4 /root/mail.sh <---- script envoyant un message rappellant qu’une sauvegarde est programmée.
Bonjour,
Ce n’est pas PATH=$PATH:/usr/sbin/xm mais PATH=$PATH:/usr/sbin
Le PATH définit une liste de répertoire et non les chemins vers le binaire directement.
-_- ok merci j’ai modifié : )
Merci ! Je verrais ce soir si ça a marché !
Désolé de na pas avoir était très clair et de ne pas avoir pu répondre plutôt.
Aucun soucis, tu es là pour m’aider c’est pas moi qui m’en plaindrais : )
Je vois ce qu’a donné le script lundi puis je reposterais : )
Bon Week end !
Après avoir renseigné cette ligne dans mon script, il s’exécute encore moins:
Donc est ce que l’une de mes boucles n’est pas bonne ?
Fichier Log d’erreurs:
Disque present -
/usr/sbin/xm: line 4: basename: command not found
/usr/lib/xen-common/bin/xen-utils-version: line 16: cat: command not found
WARING! Can’t read type from sysfs!
/usr/sbin/xm: line 6: /usr/lib/xen-default/bin/: is a directory
/usr/sbin/xm: line 6: exec: /usr/lib/xen-default/bin/: cannot execute: Succès
Probleme Zeus
/root/save.sh: line 10: mount: command not found
Probleme Montage disque Zeus -
/usr/sbin/xm: line 4: basename: command not found
/usr/lib/xen-common/bin/xen-utils-version: line 16: cat: command not found
WARING! Can’t read type from sysfs!
/usr/sbin/xm: line 6: /usr/lib/xen-default/bin/: is a directory
/usr/sbin/xm: line 6: exec: /usr/lib/xen-default/bin/: cannot execute: Succès
Probleme Zeus
Bonjour,
Après la commande suivante : PATH=$PATH:/usr/sbin execute un export du PATH :