Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/06/2006, à 19:36

ludox

Script...

Bonjour,

J'ai essayé de m'écrire un script pour monter et demonter mes clés et lecteurs usb mais voilà ce que me répond

./Mcleusb.sh: line 18: syntax error near unexpected token `fi'
./Mcleusb.sh: line 18: `fi'

Et voilà mon script :


#!/bin/sh

echo "Que veux tu monter/demonter Ludo ?

1 - Monteur clé USB
2 - Monter lecteur carte memoire XD
3 - Demonter"

echo -n "Choix : "
read choix

if $choix=3 ;
then
        sudo umount /media/cleUSB
        sudo umount /media/readerUSB
else

fi

if $choix=2 ;
then
        sudo mkdir /media/readerUSB
        sudo mount -t vfat /dev/sdc1 /media/readerUSB
else

fi


if $choix=1 ;
then
        sudo mkdir /media/cleUSB
        sudo mount /dev/sda1 /media/cleUSB
else

fi

Quelqu'un saurait me dire ce qui ne va pas ?


LudoX
-----------------------------------------

-----------------------------------------

Hors ligne

#2 Le 03/06/2006, à 19:44

cep

Re : Script...

sudo inutile pour monter les disques et clés externes

http://forum.ubuntu-fr.org/viewtopic.php?id=41031

Hors ligne

#3 Le 03/06/2006, à 19:46

Lord Alembert

Re : Script...

c'est end if et pas fi je pense.

Hors ligne

#4 Le 03/06/2006, à 19:53

jr95

Re : Script...

Il faut au moins une instruction entre le "else" et le "fi".

Dans ton cas, il suffit de supprimer les lignes "else" cette erreur ne devrait plus apparaitre.

Hors ligne

#5 Le 03/06/2006, à 20:41

ludox

Re : Script...

cep a écrit :

sudo inutile pour monter les disques et clés externes

http://forum.ubuntu-fr.org/viewtopic.php?id=41031

Formidable ca.
Et tous les users sont dans plugdev d'office ?


Comment aurais je pu le savoir autrement ?
(histoire de trouver d'autres astuces du genre sans attendre de me poser la question)


LudoX
-----------------------------------------

-----------------------------------------

Hors ligne

#6 Le 03/06/2006, à 20:44

ludox

Re : Script...

J'ai viré les else et j'ai viré les mkdir, je laisserai les rep permanents
car sans sudo pas de mkdir ?
J'ai donc ajouter un petit P partout.

Par contre maintenant j'ai ca :

./Mcleusb.sh: line 12: 3=3: command not found
./Mcleusb.sh: line 18: 3=2: command not found
./Mcleusb.sh: line 25: 3=1: command not found


LudoX
-----------------------------------------

-----------------------------------------

Hors ligne

#7 Le 04/06/2006, à 02:06

caverne

Re : Script...

La syntaxe est :
if [ $choix=3 ] ;
then
        sudo umount /media/cleUSB
        sudo umount /media/readerUSB
  fi

Hors ligne

#8 Le 04/06/2006, à 02:24

ludox

Re : Script...

Ok, ca m'avait échappé.
Je ne me souviens pas avoir vu les crochets sur les sites que j'ai consulté...
Je modifie de ce pas.
....................................
Nan, ca marche toujours pas :


Que veux tu monter/demonter Ludo ?

1 - Monteur clé USB
2 - Monter lecteur carte memoire XD
3 - Demonter
Choix : 2
Erreur: device invalide /media/cleUSB (doit être dans /dev)↵
Erreur: device invalide /media/readerUSB (doit être dans /dev)↵
mount: wrong fs type, bad option, bad superblock on /dev/sdc,
       missing codepage or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

Erreur : impossible de détruire le point de montage: Aucun fichier ou répertoire de ce type
Erreur: ne peut déterminer le chemin réel de ce périphérique: Aucun fichier ou répertoire de ce type

Je remets le script car j'ai modifié plusieurs trucs depuis le début...

J'ai mis des espaces comme tu m'as indiqué entre les crochets.
J'ai aussi remplacer sdc1 par sdc tout court que me donne dmesg pour la carte memoire.


#!/bin/sh

echo "Que veux tu monter/demonter Ludo ?

1 - Monteur clé USB
2 - Monter lecteur carte memoire XD
3 - Demonter"


echo -n "Choix : "
read choix

if [ $choix=3 ] ;
then
        pumount /media/cleUSB
        pumount /media/readerUSB
fi

if [ $choix=2 ] ;
then
        pmount -t vfat /dev/sdc /media/readerUSB

fi


if [ $choix=1 ] ;
then
        pmount /dev/sda1 /media/cleUSB

fi

Dernière modification par ludox (Le 04/06/2006, à 02:35)


LudoX
-----------------------------------------

-----------------------------------------

Hors ligne

#9 Le 04/06/2006, à 08:01

cep_

Re : Script...

Voir le man pmount.
pmount monte un périférique à la volée en créant le point de montage dans media.
Voir aussi le fonctionnement de pmount avec plugdev, hal, etc.
Le périférique est identifié aussi à la volée, c'est à dire que si plusieurs clés (ou disques) sont montées à la suite les uns des autres, leur numérotation est adaptée.

Si le but de ton script est de monter une clé toujours dans le même point de montage, il faudra le coupler avec une règle udev.

#10 Le 04/06/2006, à 09:57

jr95

Re : Script...

La page de man de test dit :

STRING1 = STRING2
              the strings are equal      
INTEGER1 -eq INTEGER2
              INTEGER1 is equal to INTEGER2

Dans ton cas, il faut utiliser -eq dans les tests.
De plus, il faut laisser des espaces autour du signe = (et des autres opérateurs) dans les tests sur les chaines de caractères.

Hors ligne

#11 Le 04/06/2006, à 13:55

ludox

Re : Script...

cep_ a écrit :

Voir le man pmount.
pmount monte un périférique à la volée en créant le point de montage dans media.
Voir aussi le fonctionnement de pmount avec plugdev, hal, etc.
Le périférique est identifié aussi à la volée, c'est à dire que si plusieurs clés (ou disques) sont montées à la suite les uns des autres, leur numérotation est adaptée.

Si le but de ton script est de monter une clé toujours dans le même point de montage, il faudra le coupler avec une règle udev.

non, je m'en fous du nom du rep pour le montage.
Si Pmount crée le rep au montage tant mieux.
Dans /dev ou dans /media, itoo, pas de soucis.


LudoX
-----------------------------------------

-----------------------------------------

Hors ligne

#12 Le 04/06/2006, à 21:09

ludox

Re : Script...

Bon, pour info et pour ceux que ca pourrait intéresser, voilà mon script final qui fonctionne.

j'ai pas compris grand chose à If...(surement une histoire de variable) et j'ai du mal à trouver un man là dessus.

Alors j'ai trouvé autre chose :

case esac

Pour l'adapter à votre config, il faut que vous repériez sur quel /dev/sd* s'installe votre clé ou lecteur de carte usb.

Par contre, j'ai besoin d'aide pour le rentrer dans le menu icewm.
Si je mets le script rien ne se passe car je suppose qu'icewm lance le script sans ouvrir de xterm.


#!/bin/sh


# pose la question et récupère la réponse

echo "Que veux tu monter/demonter Ludo ?

1 - Monteur clé USB
2 - Monter lecteur carte memoire XD
3 - Demonter"


echo -n "Choix : "
read choix

# agit selon la réponse

case $choix in
        1)
        pmount /dev/sda1 ;;

        2)
        pmount /dev/sdc1 ;;

        3)
        pumount /dev/sdc1
        pumount /dev/sda1 ;;

        *) echo "Erreur, vous devez répondre 1,2 ou 3.";;
esac


LudoX
-----------------------------------------

-----------------------------------------

Hors ligne

#13 Le 04/06/2006, à 21:10

ludox

Re : Script...

C'est bon j'ai trouvé, suffit de rajouter xterm devant le chemin du script.

A+++


LudoX
-----------------------------------------

-----------------------------------------

Hors ligne