Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/12/2007, 20h44   #1
Rédacteur/Modérateur
 
Avatar de ero-sennin
 
Homme
Développeur informatique
Inscription : juillet 2005
Messages : 2 905
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2005
Messages : 2 905
Points : 3 700
Points : 3 700
Par défaut Création d'un Script : Afficher un message selon une condition

Bonsoir,

Je suis nouveau dans le monde de Linux et je voudrais faire un script pour créer mes utilisateurs samba etc etc.

Le soucis que je rencontre et que je veux faire en sorte d'afficher une information ou une autre selon que la commande réussi ou non.

Par exemple, je fais ceci :

Code :
1
2
useradd -d /data/home/deva/thomas -m -g gdeva -s /bin/sh -p `mkpasswd thomas` thomas
echo "Création de Thomas : Fait"
Je voudrais n'afficher que la seconde ligne si la première s'effectue correctement mais je ne sais pas si celà est possible ...

Pouvez vous me guidez svp.
Merci.
ero-sennin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2007, 22h35   #2
Membre Expert
 
Inscription : juillet 2006
Messages : 1 677
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : juillet 2006
Messages : 1 677
Points : 1 812
Points : 1 812
Ah tiens, salut ero-sennin !, d'un forum à l'autre !

Alors, l'immense majorité des commandes linux renvoient une valeur de succès ou d'erreur(s). « man la_commande » t'en dira plus.
Du coup, moi je fais
Code :
1
2
3
4
5
6
ret=la_commande
if $ret=0 then
  instruction1
else
  instruction2
fi
Plus ou moins comme en Delphi, quoi,
Enfin, ce code est de tête, pas testé (et linux c'est un peu lointain), mais je dois pas être loin de la vérité.
("else instruction2" est optionnel)
Mes 2 cts,
--
jp
Jipété est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 13h43   #3
Rédacteur/Modérateur
 
Avatar de ero-sennin
 
Homme
Développeur informatique
Inscription : juillet 2005
Messages : 2 905
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2005
Messages : 2 905
Points : 3 700
Points : 3 700
Hey, salut Jipété

Je viens de regarder la commande man useradd et je vois qu'en effet, on a 0 lorsque tout est OK sinon >0 en cas d'erreur.

J'ai fait ceci :

Code :
1
2
3
4
5
6
7
8
#!/bin/bash
 
echo "***** Création des élèves arle *****"
ret = useradd -s /bin/sh -p `mkpasswd claire` claire
 
if $ret = 0 then
echo "Claire fait parti des élèves"
fi
Mais j'ai une erreur :
ret : commande introuvable
erreur de syntaxe près du jeton fi inattendu

Merci de bien vouloir m'éclairer
ero-sennin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 20h15   #4
Membre Expert
 
Inscription : juillet 2006
Messages : 1 677
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : juillet 2006
Messages : 1 677
Points : 1 812
Points : 1 812
Ah ouais, j'ai dû merder un truc, j'l'ai fait de tête, et ça fait longtemps...
Essaye du côté de
Code :
1
2
3
4
5
6
7
8
#!/bin/bash
 
echo "***** Création des élèves arle *****"
ret = $(useradd -s /bin/sh -p `mkpasswd claire` claire)
 
if [ $ret = "0" ] then
  echo "Claire fait partie des élèves"
fi
partie parce que Claire est une partie des élèves, et ça marche aussi pour Paul !
--
jp
Jipété est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 20h23   #5
Membre confirmé
 
Avatar de hmhm12
 
Inscription : novembre 2007
Messages : 257
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 257
Points : 245
Points : 245
ou plus simple;

(useradd -s /bin/sh -p `mkpasswd claire` claire) && echo "Claire fait parti des élèves"
hmhm12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 20h39   #6
Rédacteur/Modérateur
 
Avatar de ero-sennin
 
Homme
Développeur informatique
Inscription : juillet 2005
Messages : 2 905
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2005
Messages : 2 905
Points : 3 700
Points : 3 700
Citation:
Envoyé par Jipété Voir le message
Ah ouais, j'ai dû merder un truc, j'l'ai fait de tête, et ça fait longtemps...
Essaye du côté de
Code :
1
2
3
4
5
6
7
8
#!/bin/bash
 
echo "***** Création des élèves arle *****"
ret = $(useradd -s /bin/sh -p `mkpasswd claire` claire)
 
if [ $ret = "0" ] then
  echo "Claire fait partie des élèves"
fi
partie parce que Claire est une partie des élèves, et ça marche aussi pour Paul !
--
jp
Erf, ça ne fonctionne toujours pas...
Dommage car j'aurai bien aimé faire de cette façon

Citation:
Envoyé par hmhm12 Voir le message
ou plus simple;

(useradd -s /bin/sh -p `mkpasswd claire` claire) && echo "Claire fait parti des élèves"
Oué, là ça fonctionne
Merci bien ... cependant n'y a t-il pas une solution plus proche de celle citée par Jipété ?

Merci
ero-sennin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 20h55   #7
Rédacteur/Modérateur
 
Avatar de ero-sennin
 
Homme
Développeur informatique
Inscription : juillet 2005
Messages : 2 905
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2005
Messages : 2 905
Points : 3 700
Points : 3 700
Ca y est ! J'ai trouvé enfin là chose !!!

Tout ça pour un problème de point-virgule ...
Et pour récupérer la valeur de retour de la dernière commande, on utilise $?

Ce qui donne dans mon cas :

Code :
1
2
3
4
5
6
7
8
#!/bin/bash
 
echo "***** Création des élèves arle *****"
useradd -s /bin/sh -p `mkpasswd claire` claire
 
if [ $? = 0 ]; then
  echo "Claire fait partie des élèves"
fi
Merci pour votre aide
A+
ero-sennin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h38.


 
 
 
 
Partenaires

Hébergement Web