Exercice shell

amn stern Messages postés 24 Date d'inscription   Statut Membre Dernière intervention   -  
 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.
A voir également:

4 réponses

mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
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
jeanbi Messages postés 15119 Date d'inscription   Statut Contributeur Dernière intervention   2 184
 
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)
0
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
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://forums.commentcamarche.net/forum/affich-37620017-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...
0
Utilisateur anonyme
 
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/
0
miloud.kaddi Messages postés 1 Date d'inscription   Statut Membre Dernière intervention  
 
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
-1