Exercice shell [Fermé]

Signaler
Messages postés
24
Date d'inscription
vendredi 15 avril 2011
Statut
Membre
Dernière intervention
5 décembre 2012
-
 Utilisateur anonyme -
Bonjour,

j'ai un probléme avec les scripts et j'ai un script a réaliser, je vous prie de bien m'aider a le réaliser.
voila le script que je dois réaliser :
- ecrire un script qui parcours le fichier /etc/passwd et affiche pour chaque utilisateur ordinaire le login,l'UID et le repertoire personnel et son shell.

merci d'avance pour votre aide.



Ce n'est pas le temps qui passe, mais nous qui passons dans le temps.

4 réponses

Messages postés
29812
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mai 2021
7 093
Je t'invite à lire les pages de man et un tutoriel sur le langage shell qui explique ce qu'est un "pipe". Tu n'as besoin que de cat et cut pour répondre à cet exercice, il faut ensuite juste trouver quelles options passer et comment faire le pipe.

man cat
man cut


Pour savoir à quoi correspondent chaque colonnes de /etc/passwd :

man 5 passwd


Bonne chance
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
14717
Date d'inscription
samedi 9 décembre 2006
Statut
Contributeur
Dernière intervention
8 mai 2021
2 315
re,
j'esper que depuis le temps , elle ou il a trouver la solution , car sinon elle ou il a eu droit a une belle bulle !!!
je comprends pas l'interet de deterer de vieux post et de plus de donner des solutions alors que le but d'un forum n'est pas de faire les exercices des posteurs .
il est vrai que la culture c'est comme .......................... signe Francoise Sagan
a+


FC 19 - Mandriva 2010 -Debian 6.0-
Les meilleures choses ont besoin de patience.(JC ANGLADE)
Messages postés
29812
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mai 2021
7 093
Surtout que l'algorithme proposé est sous optimal puisqu'on va faire un grep sur tout /etc/passwd autant de fois qu'il y a de lignes dans le fichier, alors qu'on peut afficher la réponse en une seule passe... Accessoirement l'exercice peut être réalisé sans utiliser grep.

Ainsi, quitte à saborder un exercice proposé par un enseignant pour élève trop feignant(e) pour chercher 5 minutes dans
man cut
et ici ...
https://www.commentcamarche.net/faq/5027-comment-lire-un-fichier-ligne-par-ligne

... merci de faire ce sabordage correctement.

#!/bin/bash

min_uid=500

while read line
do
    uid=$(echo $line | cut -d ":" -f 3)
    if [ "$uid" -ge "$min_uid" ]
    then
        echo $line | cut -d ":" -f 1,3,7
    fi
done < /etc/passwd

return 0


Bref...
salut,

#!/bin/sh

min_uid=500
while IFS=':' read nom _ uid _ _ _ shell
do
   test "$uid" -ge "$min_uid" && echo "$nom:$uid:$shell"
done < /etc/passwd


\o/
Messages postés
1
Date d'inscription
jeudi 6 février 2014
Statut
Membre
Dernière intervention
6 février 2014

Bonsoir,
Voilà une solution:

#!/bin/bash
for i in 'cut -d":" -f3 /etc/passwd'
do
#Extraction des utilisateurs ordinaire
if [ $i -ge 500 ]
then
grep "$i" /etc/passwd | cut -d":" -f1,3,7
fi
done