Exercice shell

amn stern Messages postés 31 Statut Membre -  
 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

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    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
  2. jeanbi Messages postés 15399 Date d'inscription   Statut Contributeur Dernière intervention   2 383
     
    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
  3. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    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
    1. 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
  4. miloud.kaddi Messages postés 1 Statut Membre
     
    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