Bonjour

J'ai fait un petit script bash :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/bin/bash
 
drap=`grep "/media/h" /etc/mtab | wc -l`
Xdialog --msgbox "Vous avez $drap clef(s) deja disponbile(s)" 0 0
 
drap=0
 
if [ `grep "/media/h1" /etc/mtab | wc -l` == 1 ] ; then
 Xdialog --yesno "Enleve t'on la clef /mnt/h1 ?" 0 0;\
 case $? in
  0)
   umount /media/h1
   if [ `grep "/media/h1" /etc/mtab | wc -l` == 1 ] ; then
    Xdialog --msgbox "Probleme pour enlever /media/h1.\n Faire la commande suivante pour identifier un utilisateur eventuel de ce peripherique :\n /sbin/fuser  -vm /media/h1" 0 0
   else
    Xdialog --msgbox "Vous pouvez enlever le peripherique /media/h1 sans probleme" 0 0
   fi
   ;;
  1)
   Xdialog --msgbox "le peripherique /media/h1 est conserve" 0 0
   ;;
  255)
   Xdialog --msgbox "le peripherique /media/h1 est conserve" 0 0
   ;;
 esac
else
if [ `grep "/media/h1" /etc/mtab | wc -l` == 0 ] ; then
 if [  `ls -1 /dev/ | grep "sdc1" | wc -l` == 1  ] ; then
  mount /media/h1
  if [ `grep "/media/h1" /etc/mtab | wc -l` == 0 ] ; then
   Xdialog --msgbox "erreur dans le montage de /media/h1" 0 0
  else
   Xdialog --msgbox "/media/h1 est maintenant disponible" 0 0
   drap=1
  fi
 fi
fi
fi
 
if [ `grep "/media/h2" /etc/mtab | wc -l` == 1 ] ; then
 Xdialog --yesno "Enleve t'on la clef /mnt/h2 ?" 0 0;\
 case $? in
  0)
   umount /media/h1
   if [ `grep "/media/h1" /etc/mtab | wc -l` == 1 ] ; then
    Xdialog --msgbox "Probleme pour enlever /media/h2.\n Faire la commande suivante pour identifier un utilisateur eventuel de ce peripherique :\n /sbin/fuser  -vm /media/h2" 0 0
   else
    Xdialog --msgbox "Vous pouvez enlever le peripherique /media/h2 sans probleme" 0 0
   fi
   ;;
  1)
   Xdialog --msgbox "le peripherique /media/h2 est conserve" 0 0
   ;;
  255)
   Xdialog --msgbox "le peripherique /media/h2 est conserve" 0 0
   ;;
 esac
else
if [ `grep "/media/h2" /etc/mtab | wc -l` == 0 ] ; then
 if [ `ls -1 /dev/ | grep "sdd1" | wc -l` == 1 ] ; then
  mount /media/h2
  if [ `grep "/media/h2" /etc/mtab | wc -l` == 0 ] ; then
   Xdialog --msgbox "erreur dans le montage de /media/h2" 0 0
  else
   Xdialog --msgbox "/media/h1 est maintenant disponible" 0 0
   drap=1
  fi
 fi
fi
fi
 
if [ $drap == 0 ] ; then
 drap=`grep "/media/h" /etc/mtab | wc -l`
 Xdialog --msgbox "Aucune nouvelle clef rajoutee !\n $drap clef(s) actuellement disponible" 0 0
fi
Il va avec les lignes suivantes du fstab :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
/dev/sdc1 /media/h1 vfat umask=0022,users,iocharset=utf8,sync,noauto,exec 0 0
/dev/sdd1 /media/h2 vfat umask=0022,users,iocharset=utf8,sync,noauto,exec 0 0
Je veux bien le donner à dvp.com pour un script d'exemple, mais j'aimerai pouvoir apporter quelques améliorations :
1)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 else
 if [ `grep "/media/h2" /etc/mtab | wc -l` == 0 ] ; then
Pourquoi si je mets elif, ça plante ?
2)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 if [ `ls -1 /dev/ | grep "sdd1" | wc -l` == 1 ] ; then
Il doit y avoir plus simple pour dire que le périphérique existe !
3)
Comment faire pour activer l'affichage du Xdialog correctement avec les accents ?
Sans l'erreur suivante dès qu'on met un accent dans le texte et avec l'accent dans le texte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
(Xdialog:9443): Pango-WARNING **: Invalid UTF-8 string passed to pango_layout_set_text()