Ecrire un script shell
Résolu/Fermé
sisimouhamed
-
3 mai 2009 à 01:22
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 4 mai 2009 à 10:40
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 4 mai 2009 à 10:40
A voir également:
- Ecrire un script shell
- Script vidéo youtube - Guide
- Ecrire en gras sur whatsapp - Guide
- Ecrire en miroir - Guide
- Classic shell windows 10 français - Télécharger - Personnalisation
- Ecrire un rapport exemple ✓ - Forum Word
6 réponses
jivef
Messages postés
927
Date d'inscription
mercredi 11 août 2004
Statut
Membre
Dernière intervention
12 novembre 2020
306
3 mai 2009 à 04:42
3 mai 2009 à 04:42
Salut,
Quelle sera l'entrée des arguments ?
Entrée standard (clavier) ou redirecteur avec un fichier ?
Dans le cas du clavier, tu peux utiliser read.
echo -e "Veuillez saisir le code utilisateur en minuscules. (chiffres autorisés.) \c"
utilisateur=$utilisateur
read utilisateur
echo "$utilisateur"
ensuite, tu teste la présence de la variable $utilisateur dans /etc/passwd en précisant même que la ligne commence par $utilisateur:
Tu auras donc quelque chose comme "^$utilisateur:" dans ton test.
Ce sera la ligne suivante :
grep "^$utilisateur:" /etc/passwd
sachant que lorsque la commande réussi et que la chaine est trouvée, le $? est égal à 0 et quand la commande échoue le $? est en général 1 (en tout cas toujours différent de 0)
Donc pour savoir si ton grep a fonctionné, utilise la commande "test" dans un "if"
Ca donnera quelque chose comme
if test $?=0
then
echo "le compte existe"
fi
Tu peux faire l'inverse en testant que $? est différent de 0. A toi de voir.
On a globalement quelque chose qui ressemble à ça :
#!/bin/sh
# auteur : JVF
# Objet du script :
#Lecture du compte saisi au clavier. Controle de la présence du compte dans base utilisateurs unix.
# nom du script : version : date : observation
# verifuser.sh : 1.0 : 20090501: creation
######################################################################################
# Lecture des informations fournies en entree standard (clavier)
echo -e "Veuillez saisir le code utilisateur en minuscules. (chiffres autorisés.) \c"
utilisateur=$utilisateur
read utilisateur
echo "$utilisateur"
# Recherche de la variable $utilisateur dans le fichier /etc/passwd
grep "^$utilisateur:" /etc/passwd
# Analyse du code retour ($?)
if test $?=0
then
echo "le compte existe"
fi
Tu dois voir que j'ai insisté sur les commentaires, c'est une habitude à prendre...
Ensuite je voudrais que tu lises la remarque suivante :
Je ne sais pas dans quel cadre tu dois faire ce script, mais si c'est dans un cadre scolaire ou universitaire, dis-toi bien que je ne te rend pas service en te machant le travail.
Je viens de passer 10 minutes à revoir des commandes bash et ça m'a été profitable, mais par contre, toi, tu n'auras strictement rien appris.
Quelle sera l'entrée des arguments ?
Entrée standard (clavier) ou redirecteur avec un fichier ?
Dans le cas du clavier, tu peux utiliser read.
echo -e "Veuillez saisir le code utilisateur en minuscules. (chiffres autorisés.) \c"
utilisateur=$utilisateur
read utilisateur
echo "$utilisateur"
ensuite, tu teste la présence de la variable $utilisateur dans /etc/passwd en précisant même que la ligne commence par $utilisateur:
Tu auras donc quelque chose comme "^$utilisateur:" dans ton test.
Ce sera la ligne suivante :
grep "^$utilisateur:" /etc/passwd
sachant que lorsque la commande réussi et que la chaine est trouvée, le $? est égal à 0 et quand la commande échoue le $? est en général 1 (en tout cas toujours différent de 0)
Donc pour savoir si ton grep a fonctionné, utilise la commande "test" dans un "if"
Ca donnera quelque chose comme
if test $?=0
then
echo "le compte existe"
fi
Tu peux faire l'inverse en testant que $? est différent de 0. A toi de voir.
On a globalement quelque chose qui ressemble à ça :
#!/bin/sh
# auteur : JVF
# Objet du script :
#Lecture du compte saisi au clavier. Controle de la présence du compte dans base utilisateurs unix.
# nom du script : version : date : observation
# verifuser.sh : 1.0 : 20090501: creation
######################################################################################
# Lecture des informations fournies en entree standard (clavier)
echo -e "Veuillez saisir le code utilisateur en minuscules. (chiffres autorisés.) \c"
utilisateur=$utilisateur
read utilisateur
echo "$utilisateur"
# Recherche de la variable $utilisateur dans le fichier /etc/passwd
grep "^$utilisateur:" /etc/passwd
# Analyse du code retour ($?)
if test $?=0
then
echo "le compte existe"
fi
Tu dois voir que j'ai insisté sur les commentaires, c'est une habitude à prendre...
Ensuite je voudrais que tu lises la remarque suivante :
Je ne sais pas dans quel cadre tu dois faire ce script, mais si c'est dans un cadre scolaire ou universitaire, dis-toi bien que je ne te rend pas service en te machant le travail.
Je viens de passer 10 minutes à revoir des commandes bash et ça m'a été profitable, mais par contre, toi, tu n'auras strictement rien appris.
mamiemando
Messages postés
33079
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 avril 2024
7 749
4 mai 2009 à 10:40
4 mai 2009 à 10:40
Nouvelle question, nouveau sujet pour maintenir la clarté du forum ! Ouvre un nouveau fil de discussion.
Bonne chance
Bonne chance
mamiemando
Messages postés
33079
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 avril 2024
7 749
3 mai 2009 à 02:18
3 mai 2009 à 02:18
Il suffit de parcourir les arguments passés au script et de les comparer à $USER ou encore mieux, à `whoami`.
Bonne chance
#!/bin/sh login=`whoami` for i in "$@" do if [ "$i" = "$login" ]; then echo "$i est le login utilisé" else echo "$i n'est pas le login utilisé" fi done
Bonne chance
mamiemando
Messages postés
33079
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 avril 2024
7 749
3 mai 2009 à 20:52
3 mai 2009 à 20:52
Ce qui est sûr c'est que ta version est bien compliquée :-)
jivef
Messages postés
927
Date d'inscription
mercredi 11 août 2004
Statut
Membre
Dernière intervention
12 novembre 2020
306
3 mai 2009 à 22:10
3 mai 2009 à 22:10
Bonjour,
Je pense que ta solution ne fonctionne qu'avec le login courant, or ce n'est pas exactement ce qui est demandé.
Pour rappel
"je voudrai savoire le code source d'un programme shelle qui reçoit plusieurs chaines de caractere et affiche si elles correspondent à un nom de login ou non."
Il ne s'agit donc pas de vérifier si la chaine saisie correspond au login courant (obtenu par whoami) mais de vérifier si la chaine saisie est bien dans la base des comptes unix (/etc/passwd)
Je ne suis pas un cador, mon script peut-être amélioré en permettant la saisie de plusieurs chaines de caractères, pour l'instant tel qu'il est écrit il faut le faire un par un, mais ce ne serait pas grand chose de le modifier.
Cependant il va bien vérifier que la chaine saisie correspond à un compte unix.
On pourrait très bien compléter ma solution avec ta boucle for qui permettrait de lire chaque argument et de répondre si le compte existe ou pas.
Apparemment, je peux compter sur toi.
A bientux.
Jonas.
Je pense que ta solution ne fonctionne qu'avec le login courant, or ce n'est pas exactement ce qui est demandé.
Pour rappel
"je voudrai savoire le code source d'un programme shelle qui reçoit plusieurs chaines de caractere et affiche si elles correspondent à un nom de login ou non."
Il ne s'agit donc pas de vérifier si la chaine saisie correspond au login courant (obtenu par whoami) mais de vérifier si la chaine saisie est bien dans la base des comptes unix (/etc/passwd)
Je ne suis pas un cador, mon script peut-être amélioré en permettant la saisie de plusieurs chaines de caractères, pour l'instant tel qu'il est écrit il faut le faire un par un, mais ce ne serait pas grand chose de le modifier.
Cependant il va bien vérifier que la chaine saisie correspond à un compte unix.
On pourrait très bien compléter ma solution avec ta boucle for qui permettrait de lire chaque argument et de répondre si le compte existe ou pas.
Apparemment, je peux compter sur toi.
A bientux.
Jonas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mamiemando
Messages postés
33079
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 avril 2024
7 749
4 mai 2009 à 01:03
4 mai 2009 à 01:03
Ah oui exact j'avais mal lu. Effectivement dans ton cas, la méthode est la bonne. Merci de ta vigilance !
Pour la lecture des arguments passés au script, il suffit de reprendre la boucle que j'ai indiqué. Bref en mixant nos deux codes on obtient ce qu'il faut, mais on va lui laisser le soin de chercher ;-)
Pour la lecture des arguments passés au script, il suffit de reprendre la boucle que j'ai indiqué. Bref en mixant nos deux codes on obtient ce qu'il faut, mais on va lui laisser le soin de chercher ;-)