[résolu] Need help pour un script bash

Need help pour un script bash [résolu] - Multimédia - Linux et OS Alternatifs

Marsh Posté le 18-10-2002 à 21:35:20    

Salut
 
j'essaye en ce moment de me faire un script bash qui automatiserait les sauvegardes sur CD-RW. voilà ce que je cherche à faire :
 
tester la présence d'un CD dans le graveur (oui/non)
 
si non, afficher une boite de dialogue et ejecter le graveur puis revenir au début
 
si oui, effacer le CD-RW, créer une image à partir des mes archives de sauvegarde et la graver puis quitter.
 
voilà déjà ce que j'ai fait :

Code :
  1. #!/bin/sh
  2. if test CD
  3. then cdrecord blank=fast && mkisofs -R /mnt/win_g/savelinux | cdrecord speed=10 dev=0,0,0 -
  4. else eject /dev/scd0 & Xdialog --title "sauvegarde" --icon /usr/share/doc/Xdialog-2.0.4/samples/warning.xpm --msgbox "Veuillez insérer un CD-RW pour la sauvegarde" 0 0
  5. fi


 
mes pb se situent à 2 endroits: comment tester la présence du CD (je pourrais essayer de le monter mais c'est pas très propre comme solution je trouve) et comment revenir au début après avoir inséré le CD.
 
merci


Message édité par Mjules le 21-10-2002 à 19:44:56

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 18-10-2002 à 21:35:20   

Reply

Marsh Posté le 18-10-2002 à 21:46:05    

bon j'ai déjà résolu la 2° question (en fait, il faut une boucle while et pas if ), il ne reste plus qu'à trouver comment tester la présence d'un CD.


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 18-10-2002 à 21:55:11    

au pire tu peux lancer la gravure telle quelle , et si la galette n'est pas dans le lecteur , cdrecord te renverra un statut 1 ( pas bon ). Tu testes $?  et tu définis les conséquences comme il faut ( si $? == 1  ben ya un prob )

Reply

Marsh Posté le 18-10-2002 à 22:42:01    

Mjules a écrit a écrit :

Salut
 
j'essaye en ce moment de me faire un script bash qui automatiserait les sauvegardes sur CD-RW. voilà ce que je cherche à faire :
 
tester la présence d'un CD dans le graveur (oui/non)
 
si non, afficher une boite de dialogue et ejecter le graveur puis revenir au début
 
si oui, effacer le CD-RW, créer une image à partir des mes archives de sauvegarde et la graver puis quitter.
 
voilà déjà ce que j'ai fait :

Code :
  1. #!/bin/sh
  2. if test CD
  3. then cdrecord blank=fast && mkisofs -R /mnt/win_g/savelinux | cdrecord speed=10 dev=0,0,0 -
  4. else eject /dev/scd0 & Xdialog --title "sauvegarde" --icon /usr/share/doc/Xdialog-2.0.4/samples/warning.xpm --msgbox "Veuillez insérer un CD-RW pour la sauvegarde" 0 0
  5. fi


 
mes pb se situent à 2 endroits: comment tester la présence du CD (je pourrais essayer de le monter mais c'est pas très propre comme solution je trouve) et comment revenir au début après avoir inséré le CD.
 
merci




 
si ca peut t'aider voila le miens....plus qu'a ajouter les tests que je fais pas (plusieurs graveurs oblige donc les backups se font sur le meme CD pendant 1 moi).
 


kneko@linux:~> ssh -l root localhost
root@localhost's password:
Last login: Thu Oct 10 16:21:08 2002 from localhost
Have a lot of fun...
linux:~ # more backup_on_CDRW.sh
#!/bin/sh
rm /var/log/backup_on_CDRW.log
date > /var/log/backup_on_CDRW.log
echo "Creer le fichier iso-----------------------" >> /var/log/backup_on_CDRW.log
mkisofs -o /tmp/New_bckp.iso -J -r -R -graft-points -l \
        -l -L -no-bak -allow-multidot -q \
        pdbs/=/home/database \
        docs/=/home/kneko/Documents \
        bgd1/=/home/operator/backgrounds.4.Xwin \
        bgd1/=/home/operator/backgrounds2.4.Xwin \
        dbkp/=/home/kneko/sql.backup \
        stig/=/home/kneko/tkseti-3.06 \
        stir/=/home/kneko/setiNuxCommander-0.1-pre2 \
        root/=/root \
        brdl/=/a-graver \
        html/=/home/kneko/public_html \
        >> /var/log/backup_on_CDRW.log
echo "Creer le fichier iso--------------------END" >> /var/log/backup_on_CDRW.log
echo "Effacer le CDRW actuel---------------------" >> /var/log/backup_on_CDRW.log
cdrecord -v -pad speed=4 dev=1,0,0 blank=fast >> /var/log/backup_on_CDRW.log
echo "Effacer le CDRW actuel------------------END" >> /var/log/backup_on_CDRW.log
echo "Graver le CD ------------------------------" >> /var/log/backup_on_CDRW.log
cdrecord -v speed=4 dev=1,0,0 /tmp/New_bckp.iso >> /var/log/backup_on_CDRW.log
echo "Graver le CD ---------------------------END" >> /var/log/backup_on_CDRW.log
date >> /var/log/backup_on_CDRW.log
echo "Tester la descente / le montage du CD -----" >> /var/log/backup_on_CDRW.log
umount /media/cdrecorder >> /var/log/backup_on_CDRW.log
mount /dev/sr3 /media/cdrecorder >> /var/log/backup_on_CDRW.log
echo "Tester la descente / le montage du CD --END" >> /var/log/backup_on_CDRW.log
mutt -a /var/log/backup_on_CDRW.log -s "backup on CDRW report" root < /root/mailbosy.txt
mutt -a /var/log/backup_on_CDRW.log -s "backup on CDRW report" kneko < /root/mailbosy.txt
mutt -a /var/log/backup_on_CDRW.log -s "backup on CDRW report" toila < /root/mailbosy.txt
# Script de backup sur un CDRW
# Doit etre present dans le ROOT crontab
#
# LASTMODIF : 31/08/2002 - 18:28
#
# Ajouter a la liste a  sauver : /home/kneko/tkseti-3.06
# Modifier le chemin pdbs : /home/database
linux:~ # crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.8581 installed on Tue Oct 15 00:31:38 2002)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
# Root crontab master file
# -----------
# reveil MATIN
#20 6 * * * play /usr/share/sounds/alsa/test.wav
50 6 * * 1-5 play /usr/share/sounds/alsa/test.wav
# -----------
# faire un backup sur CDRW
30 4 * * 0,2,4 sh /root/backup_on_CDRW.sh
# -----------
# faire le menage dans les mailbox
0 0 1 * 1 find / -name "mbox" -exec rm -f {} \;
# -----------
# faire le menage dans les fichiers core
0 0 2 * 1 find / -name "core" -exec rm -f {} \;
# -----------
# faire le menage dans les mails
13 3 * 1 * find /var/spool/mail -size +8196k -exec tar cvf {}.tar -e {} \;
 
linux:~ #


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 19-10-2002 à 18:14:19    

Wahou, sacré truc !!
 
perso, je vais faire un peu plus simple et sans log (normalement, ma machine n'est allumé que quand je suis là)
 
est ce que ça ça marcherait ?

Code :
  1. ]#!/bin/sh
  2. # je commence par essayer d'effacer le CD, si il n'est pas dans
  3. # le graveur, j'éjecte celui-ci et j'affiche une boite de
  4. # dialogue
  5. while [ `cdrecord speed=10 blank=fast dev=0,0,0`=1 ];
  6. do eject /dev/scd0 & Xdialog --title "sauvegarde" --icon /usr/share/doc/Xdialog-2.0.4/samples/warning.xpm --msgbox "Veuillez insérer un CD-RW pour la sauvegarde" 0 0
  7. done
  8. #si il est dans le graveur, on sort de la boucle WHILE
  9. # on fait l'image, on la grave, et o, l'efface après
  10. mkisofs -R -o ~/tmp/sauve.iso /mnt/win_g/savelinux \
  11. cdrecord speed=10 dev=0,0,0 -eject ~/tmp/sauve.iso
  12. rm -f ~/tmp/sauve.iso


 
ou bien ça va coincer qql part ?


Message édité par Mjules le 19-10-2002 à 18:16:08

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 19-10-2002 à 18:19:08    

taiste


---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
Reply

Marsh Posté le 19-10-2002 à 18:28:11    

pour l'instant je suis chez mes parents et j'ai pas Linux avant lundi donc si qql voit une erreur grossière, j'aimerais bien qu'il me le dise. merci


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 19-10-2002 à 20:20:55    

Mjules a écrit a écrit :

Wahou, sacré truc !!
 
perso, je vais faire un peu plus simple et sans log (normalement, ma machine n'est allumé que quand je suis là)
 
est ce que ça ça marcherait ?

Code :
  1. ]#!/bin/sh
  2. # je commence par essayer d'effacer le CD, si il n'est pas dans
  3. # le graveur, j'éjecte celui-ci et j'affiche une boite de
  4. # dialogue
  5. while [ `cdrecord speed=10 blank=fast dev=0,0,0`=1 ];
  6. do eject /dev/scd0 & Xdialog --title "sauvegarde" --icon /usr/share/doc/Xdialog-2.0.4/samples/warning.xpm --msgbox "Veuillez insérer un CD-RW pour la sauvegarde" 0 0
  7. done
  8. #si il est dans le graveur, on sort de la boucle WHILE
  9. # on fait l'image, on la grave, et o, l'efface après
  10. mkisofs -R -o ~/tmp/sauve.iso /mnt/win_g/savelinux \
  11. cdrecord speed=10 dev=0,0,0 -eject ~/tmp/sauve.iso
  12. rm -f ~/tmp/sauve.iso


 
ou bien ça va coincer qql part ?




 
je ferrai + simple :
cdrecord speed=10 blank=fast dev=0,0,0
if [ $? -gt 0 ]
   eject /dev/scd0 & Xdialog --title "sauvegarde" --icon      /usr/share/doc/Xdialog-2.0.4/samples/warning.xpm --msgbox "Veuillez insérer un CD-RW pour la sauvegarde" 0 0
   exit 1
else
   mkisofs ...................
   #la encore test du code retour  
   if [ $? -lt 1 ]
       cdrecord speed=10 dev=0,0,0 -eject ~/tmp/sauve.iso
       rm -f ~/tmp/sauve.iso
   else
       exit 1
   fi
fi
exit 0
 
un truc comme ca...
 
verifies les man pages de cdrecord & mkisofs pour verifier les valeurs a tester, mais en structurre ca doit ressemler
 


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 21-10-2002 à 19:41:38    

donc pour finir, je vous donne mon script en entier (+ la partie archivage), merci à tous :
 

#!/bin/sh
########################################################
#  Ce script permet de sauvegarder des dossiers important (et une arborescence)
#  et de les graver ensuite.                                                                          
#  Dans un premier temps, on monte la partition où l'on va sauvegarder                
#  et on fait 3 archives de /etc, /home/jules, et /mes documents,                      
#  bref tout les trucs vitaux à sauvegarder. ces archives sont compressé en bzip2
########################################################
 
mount /mnt/win_g
 
rm -f /mnt/win_g/savelinux/etc.tar.bz2
tar -cjvf /mnt/win_g/savelinux/etc.tar.bz2 /etc/*
rm -f /mnt/win_g/savelinux/jules.tar.bz2
tar -cjvf /mnt/win_g/savelinux/jules.tar.bz2 /home/jules/* --exclude /home/jules/.mozilla/jules/l8ai4hil.slt/Cache
rm -f /mnt/win_g/savelinux/doc.tar.bz2
tar -cjvf /mnt/win_g/savelinux/doc.tar.bz2 /mnt/win_d/Mes\ Documents/*
 
###################################################
# phase, suivante, la gravure
# je commence par essayer d'effacer le CD, si il n'est pas dans  
# le graveur, j'éjecte celui-ci et j'affiche une boite de dialogue
# une fois qu'on a mis le CD, on efface, on fait l'image et on grave
# note: le $? -gt 0 permet de tester la réponse de cdrecord qui est 1
# en cas de problème (i. e. le CD-RW est absent)
###################################################
 
cdrecord speed=10 blank=fast dev=0,0,0
if [ $? -gt 0  ] ;  
  then eject /dev/scd0 & Xdialog --title "sauvegarde" --icon /usr/share/doc/Xdialog-2.0.4/samples/warning.xpm --msgbox "Veuillez insérer un CD-RW pour la sauvegarde" 0 0  && cdrecord speed=10 blank=fast dev=0,0,0  
mkisofs -R -o /tmp/sauve.iso /mnt/win_g/savelinux/ && cdrecord speed=10 dev=0,0,0 -eject /tmp/sauve.iso
  else
 
#####################################
# si le CD-RW était déjà dans le lecteur et ben on fait
# l'image et on grave
#####################################
 
mkisofs -R -o /tmp/sauve.iso /mnt/win_g/savelinux/  
cdrecord speed=10 dev=0,0,0 -eject /tmp/sauve.iso  
fi
 
########################################
# on efface l'image et on démonte le lecteur de sauvegarde
########################################
 
rm -f /tmp/sauve.iso  
umount /mnt/win_g
exit 0


Message édité par Mjules le 21-10-2002 à 19:44:08

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed