Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/08/2008, à 11:25

soupaloignon

[Résolu] Liste des utilisateurs du systeme ?

Bonjour,

Cette commande me liste dans une fenêtre zenity les répertoires du /home. Tous les répertoires des utilisateurs s'affichent donc, y compris le dossier "lost+found". Est ce qu'il y a une manip pour empêcher ce dossier d'apparaitre dans la liste ?

Pour info le but final est de récupérer la liste des utilisateurs, pour en choisir un comme variable. Si il y a une autre manip, je suis preneur big_smile

Merci d'avance


#!/bin/bash
cd /home
nom=$(ls -Ad */ | sed 's,/$,,g' | zenity --list --column=Choisir\ un\ utilisateurs)

Dernière modification par soupaloignon (Le 29/08/2008, à 23:55)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#2 Le 16/08/2008, à 11:32

NooP

Re : [Résolu] Liste des utilisateurs du systeme ?

Bonjour,

Je pense que si tu souhaite avoir la liste des utilisateurs du système, il serait mieux de te servir du fichier /etc/passwd.


Votez Macron, vous l'aurez dans le fion !

Hors ligne

#3 Le 16/08/2008, à 11:41

soupaloignon

Re : [Résolu] Liste des utilisateurs du systeme ?

NooP a écrit :

Bonjour,

Je pense que si tu souhaite avoir la liste des utilisateurs du système, il serait mieux de te servir du fichier /etc/passwd.

J'y ai pensé, mais je ne sais pas comment le filtrer pour avoir juste les utilisateurs qui possèdent un /home. D'où l'idée de travailler à partir des répertoires du /home


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#4 Le 16/08/2008, à 12:10

soupaloignon

Re : [Résolu] Liste des utilisateurs du systeme ?

Bon, j'ai un peu avancé. Même si ce n'est pas très académique certainement, j'en suis là

#!/bin/bash
cd /home
nom=$(ls -Ad */ | sed 's,/$,,g' | sed 's,lost+found$,,g' | zenity --list --column=Choisir\ un\ utilisateurs)

Dans la fenêtre zenity "lost+found" n'y est plus, par contre j'ai une ligne vide à la place.
J'ai essayé un

sed 's,^$,,g'

mais cela ne marche pas

Dernière modification par soupaloignon (Le 16/08/2008, à 13:19)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#5 Le 16/08/2008, à 16:38

Link31

Re : [Résolu] Liste des utilisateurs du systeme ?

soupaloignon a écrit :

J'y ai pensé, mais je ne sais pas comment le filtrer pour avoir juste les utilisateurs qui possèdent un /home. D'où l'idée de travailler à partir des répertoires du /home

cut -d: -f1 /etc/passwd

Hors ligne

#6 Le 16/08/2008, à 18:12

soupaloignon

Re : [Résolu] Liste des utilisateurs du systeme ?

Link31 a écrit :
cut -d: -f1 /etc/passwd

Merci Link31, toujours aussi efficace wink. Par contre cette commande renvoi largement plus que les users possédant un /home. Perso cela me renvoi 35 entrées, alors que j'ai 4 comptes d'utilisateurs. Tu aurais un système pour les filtrer ?

Dans l'idéal c'est la liste qui apparait dans GDM lorsque l'on a un thème avec liste d'utilisateurs en fait.

Dernière modification par soupaloignon (Le 16/08/2008, à 18:27)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#7 Le 16/08/2008, à 18:50

Link31

Re : [Résolu] Liste des utilisateurs du systeme ?

Ça dépend de ton critère de filtrage. Pour récupérer ceux qui ont un dossier personnel dans /home, il suffit de faire :

grep :/home /etc/passwd | cut -d: -f1

Hors ligne

#8 Le 16/08/2008, à 19:07

soupaloignon

Re : [Résolu] Liste des utilisateurs du systeme ?

Merci pour ta réponse, mais cela ne me renvoi pas la totalité des users ayant un dossier dans home, par contre cela m'en renvoi d'autres n'en ayant pas ( syslog et klog)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#9 Le 22/08/2008, à 09:20

soupaloignon

Re : [Résolu] Liste des utilisateurs du systeme ?

Rebonjour,

Je fais remonter ce post... Fin des vacances oblige wink

Pour résumer j'ai besoin de récupérer la liste des utilisateurs du system.

Les différentes solutions évoquées plus haut ne fonctionnent pas totalement. Au final je voudrais récupérer la liste qui apparait dans GDM, lorsque l'on a un thème multi utilisateurs.
GDM va bien chercher cette liste quelque part...

Donc si vous avez de sinfos big_smile
Merci d'avance


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#10 Le 22/08/2008, à 10:01

®om

Re : [Résolu] Liste des utilisateurs du systeme ?

Pour continuer la bidouille :

cat /etc/passwd | grep :/home | grep -v /bin/false | cut -d: -f1

Hors ligne

#11 Le 22/08/2008, à 11:14

soupaloignon

Re : [Résolu] Liste des utilisateurs du systeme ?

®om a écrit :

Pour continuer la bidouille :

cat /etc/passwd | grep :/home | grep -v /bin/false | cut -d: -f1

Genial, ça fonctionne nickel, merci beaucoup.
Encore 1 ou 2 trucs à voir sur le script dans lequel s'insére cette ligne, et je le poste


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#12 Le 22/08/2008, à 11:18

®om

Re : [Résolu] Liste des utilisateurs du systeme ?

soupaloignon a écrit :
®om a écrit :

Pour continuer la bidouille :

cat /etc/passwd | grep :/home | grep -v /bin/false | cut -d: -f1

Genial, ça fonctionne nickel, merci beaucoup.
Encore 1 ou 2 trucs à voir sur le script dans lequel s'insére cette ligne, et je le poste

Ça fonctionne, mais pas dit que ça soit correct (il n'est pas impossible qu'il soit possible de trouver des cas pour lesquels des utilisateurs "normaux" ne seraient pas affichés ou de trouver des utilisateurs "non normaux" qui seraient affichés).

Celui qui comprend la phrase du dessus en 1 seule lecture, bravo !

Hors ligne

#13 Le 22/08/2008, à 13:30

soupaloignon

Re : [Résolu] Liste des utilisateurs du systeme ?

Alors il resterai la solution de lister les dossiers contenus dans le home, en filtrant le répertoire lost+found. Pour la liste des rep ça fonctionne, il y a un bout de code plus haut dans le post qui le fait, mais le filtrage de lost+found, je n'y suis pas arrivé.

Et belle phrase effectivement big_smile


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#14 Le 22/08/2008, à 18:32

nicolas66

Re : [Résolu] Liste des utilisateurs du systeme ?

Perso je propose ça :

ls /home | awk '$0!~/lost\+found/ {print $0;}'

"The computer was born to solve problems that did not exist before." (B. Gates)

Hors ligne

#15 Le 22/08/2008, à 18:49

soupaloignon

Re : [Résolu] Liste des utilisateurs du systeme ?

nicolas66 a écrit :

Perso je propose ça :

ls /home | awk '$0!~/lost\+found/ {print $0;}'

Super, ça marche tresbien aussi, et en plus on est à l'abri des éventuels problèmes que soulevait ®om.

A titre d'info, s'il y avait plusieurs dossiers à virer de la liste, tu ferais comment avec cette commande ?


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#16 Le 22/08/2008, à 19:01

alexduf

Re : [Résolu] Liste des utilisateurs du systeme ?

je pense qu'utiliser le home n'est pas une bonne idée. Par exemple, moi j'ai un répertoire ftp dans mon /home.

je conseillerais plutot la solution de @rom

mais ce n'est que mon point de vue wink

Hors ligne

#17 Le 22/08/2008, à 20:23

nicolas66

Re : [Résolu] Liste des utilisateurs du systeme ?

A titre d'info, s'il y avait plusieurs dossiers à virer de la liste, tu ferais comment avec cette commande ?

Pour ne pas inclure les dossiers d1, d2 et d3 :

ls /home | awk '$0!~/d1|d2|d3/ {print $0;}'

"The computer was born to solve problems that did not exist before." (B. Gates)

Hors ligne

#18 Le 22/08/2008, à 21:13

Totor

Re : [Résolu] Liste des utilisateurs du systeme ?

pour filter lost+found avec grep :

ls /home|grep -v 'lost+found'

pour filtrer plusieurs dossiers avec grep :

ls /home|grep -vE 'd1|d2|d3|lost\+found'

A mon avis, cette solution n'est pas complète (lister le dossier /home) car
-il se peut que des utilisateurs aient été supprimés mais par leur home.
-il est possible que le dossier home ne se trouve pas dans /home (c'est fréquent dans le milieu professionnel)
-le dossier home peut ne pas correspondre à /home/<login>

et pour cela, la seule source fiable c'est bien /etc/passwd (à moins d'avoir un serveur LDAP ou autre pour l'authentification) ! Et donc pour moi, la solution d'atome (ou at home) est la meilleure.


-- Lucid Lynx --

Hors ligne

#19 Le 22/08/2008, à 23:52

soupaloignon

Re : [Résolu] Liste des utilisateurs du systeme ?

Merci à tous pour votre aide et pour vos avis en ce qui concerne le choix de lister le home ou utiliser le /etc/passwd.
C'est finalement vers cette dernière solution, qui est la plus logique de fait, que je vais utiliser, en espérant qu'un utilisateur du script ne tombera pas sur le cas de figure soulevé par ®om.


Avant de mettre à dispo le script je le poste ici. Si vous avez des remarques, idées d'amélioration, n'hésitez pas.
Ce script permet à l'utilisateur d'envoyer des dossiers/fichiers vers un autre compte user, en changeant le propriaitaire des dossiers/fichiers. Création dans le dossier créé chez l'utilisateur d'un fichier log listant les dates et les fichiers/dossiers envoyés.


#!/bin/bash

#############################################################
# www.soupaloignon.net
# 17/08/2008
# License: GPL
# script permettant d'envoyer un dossier ou des fichiers vers un autre compte utilisateur,
# en donnant au dossier et/ou fichier les droits du compte. Création dans le dossier créé
# chez l'utilisateur d'un fichier log listant les dates et les fichiers/dossiers envoyés
# Version : 1.0
# Dépendances : zenity
# Un grand merci aux personnes ayant contribué à l'élaboration de ce script :
# http://forum.ubuntu-fr.org/viewtopic.php?pid=2019359 
# http://forum.ubuntu-fr.org/viewtopic.php?id=246322
#############################################################


#############################################################
# Variables
#############################################################
Nom=$(cat /etc/passwd | grep :/home | grep -v /bin/false | cut -d: -f1 | zenity --list --column=Choisir\ un\ utilisateur)
CreerDossier='00transit'
NomFichier='liste-des-envois'
#############################################################
# Fin des variables 
#############################################################


# Test si un fichier a été sélectionné

    if [ $# -eq 0 ]; then
    zenity --error --title="Erreur" --text="Sélectionnez un fichier"
    exit 1
    fi


# S'assurer que les noms de fichiers contenant des espaces fonctionnent

    IFS=$'\n'


# On demande le mot de passe root et on copie le fichier/dossier

  for I in `echo $*`
  do

    foo=`gksudo -u root -k -m\
 "Entrez votre mot de passe root"\
 /bin/echo "got r00t?"`


# Test pour savoir si le dossier "$CreerDossier" existe déjà"
if [[ -d /home/$Nom/$CreerDossier ]]
then
  echo "Le dossier $CreerDossier existe"
else
  sudo mkdir /home/$Nom/$CreerDossier
 fi


# Copie du dossier délectionné, mise à jour du fichier log, changement des droits
sudo cp -R $I /home/$Nom/$CreerDossier
echo "ENVOI DU: $(date +%d-%m-%y\ à\ %H\ heures-%M\ minutes-%S\ secondes)" | sudo tee -a /home/$Nom/$CreerDossier/$NomFichier
echo $I | sudo tee -a /home/$Nom/$CreerDossier/$NomFichier
echo | sudo tee -a  /home/$Nom/$CreerDossier/$NomFichier
sudo chown -R $Nom:$Nom /home/$Nom/$CreerDossier


# Fenetre d'info finale
zenity --info  --text="Le transfert des fichiers s'est correctement effectué"


done

Dernière modification par soupaloignon (Le 23/08/2008, à 00:08)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#20 Le 23/08/2008, à 15:28

nicolas66

Re : [Résolu] Liste des utilisateurs du systeme ?

Cool, merci pour ta participation. N'oublie pas de marquer "[Résolu]" smile


"The computer was born to solve problems that did not exist before." (B. Gates)

Hors ligne