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 22/11/2015, à 13:28

mecanotox

[Résolu] Récupération d'une chaine de caractère dans /etc/passwd

Bonjour à tous.

Pour les besoin d'un scripte, il faudrait que je récupère une chaine de caractère en particulier dans le fichier /etc/passwd :

utilisateur:x:10200:10002:adresse@email.dot,,,:/home/utilisateur:/bin/bash

J'aimerais récupérer les chaine de caractère "utilisateur" et "adresse@email.dot" dans 2 variables.

Il semblerait que ce soit possible avec cat, awk, sort, mais je ne comprends pas du tout le man.

Est-ce que quelqu'un aurait une idée ?

Merci d'avance.

Dernière modification par mecanotox (Le 22/11/2015, à 16:53)

Hors ligne

#2 Le 22/11/2015, à 14:08

credenhill

Re : [Résolu] Récupération d'une chaine de caractère dans /etc/passwd

hello

$ read nom email < <(awk -F "[:,]" '/^utilisateur/ {print $1, $5}' /etc/passwd); echo $nom $email
utilisateur adresse@email.dot

ou

$ IFS=":," read nom x x x email x < <(grep '^utilisateur' /etc/passwd ); echo $nom $email
utilisateur adresse@email.dot

Dernière modification par credenhill (Le 22/11/2015, à 14:17)

Hors ligne

#3 Le 22/11/2015, à 15:01

MicP

Re : [Résolu] Récupération d'une chaine de caractère dans /etc/passwd

michel@debG53SW:~$ lignePasswd="utilisateur:x:10200:10002:adresse@email.dot,,,:/home/utilisateur:/bin/bash"
michel@debG53SW:~$ [[ "${lignePasswd}" =~ (.*):.*:.*:.*:(.*):.*:.* ]]
michel@debG53SW:~$ echo ${BASH_REMATCH[1]}
utilisateur
michel@debG53SW:~$ echo ${BASH_REMATCH[2]%%,*}
adresse@email.dot
michel@debG53SW:~$ 

Hors ligne

#4 Le 22/11/2015, à 15:15

mecanotox

Re : [Résolu] Récupération d'une chaine de caractère dans /etc/passwd

hello.

Merci de ce retour d'information, je vais voir de suite comment l'adapter à mon cas.
Je reviendrais sur le topic lorsque j'aurais terminé le scripte pour mettre le code.

Merci de vos retour.

Hors ligne

#5 Le 22/11/2015, à 16:44

mecanotox

Re : [Résolu] Récupération d'une chaine de caractère dans /etc/passwd

J'ai réussi à l'intégrer par rapport à mon besoin.
J'ai utilisé la solution de credenhill.
L'autre fonctionne également.

Merci à la communauté.
Ci dessous, voici le bout de code :

#!/bin/bash
        echo "Saisir user"
        read usr
        echo ""
        usrmail=$(read usrmail < <(awk -F "[:,]" '/^'$usr'/ {print $5}' /etc/passwd);echo $usrmail)
        echo $usrmail

Dernière modification par mecanotox (Le 22/11/2015, à 16:53)

Hors ligne

#6 Le 22/11/2015, à 17:10

MicP

Re : [Résolu] Récupération d'une chaine de caractère dans /etc/passwd

#!/bin/bash
read -p "Saisir user : " usr
read usrmail < <(awk -F "[:,]" '/^'"$usr"'/ {print $5}' /etc/passwd)
echo $usrmail

=======
Pour infos, tu fais :

man bash

et dans la page man de bash, tu entre un caractère / suivit de 4 espaces puis du mot read suivit d'un espace et appuie sur la touche entrée.

Hors ligne

#7 Le 22/11/2015, à 17:20

mecanotox

Re : [Résolu] Récupération d'une chaine de caractère dans /etc/passwd

Merci de ton retour. Effectivement il y avait des éléments en trop.
J'ai corrigé du coup de mon côté

Voci le code final :

#!/bin/bash
read -p "Saisir user : " usr
read usrmail < <(awk -F "[:,]" '/^'"$usr"'/ {print $5}' /etc/passwd)
echo $usrmail

Dernière modification par mecanotox (Le 22/11/2015, à 17:20)

Hors ligne

#8 Le 22/11/2015, à 17:28

credenhill

Re : [Résolu] Récupération d'une chaine de caractère dans /etc/passwd

pour une seule variable, pas besoin du read

usrmail=$(awk -F "[:,]" '/^'"$usr"'/ {print $5}' /etc/passwd)

Hors ligne

#9 Le 22/11/2015, à 18:43

MicP

Re : [Résolu] Récupération d'une chaine de caractère dans /etc/passwd

Tant qu'à faire :

#!/bin/bash
read -p "Saisir user : " usr
echo $(awk -F "[:,]" '/^'"$usr"'/ {print $5}' /etc/passwd)

Hors ligne

#10 Le 23/11/2015, à 12:27

credenhill

Re : [Résolu] Récupération d'une chaine de caractère dans /etc/passwd

ou

awk -F "[:,]" 'BEGIN {printf "saisir user : "; getline usr < "-"} $1 ~ "^"usr {print $5}'  /etc/passwd

Hors ligne

#11 Le 23/11/2015, à 13:54

MicP

Re : [Résolu] Récupération d'une chaine de caractère dans /etc/passwd

Ben voilà : Je ne pense pas qu'il soit possible de faire plus court smile

=======
Il reste que le champ que tu utilise pour récupérer l'adresse mail est nommé Full name => C'est dans ce champ que l'on indique le nom complet de l'utilisateur.

C'était le champ utilisé par la commande finger, mais comme cette commande n'est pratiquement plus utilisée, le contenu de ce champ dépends donc du choix de l'utilisateur.

Ce champ a aussi été renommé GECOS field (General Electric Comprehensive Operating System) et est divisé en sous-champs séparés par une virgule.
Il contient toujours le nom complet de l'utilisateur mais en plus son adresse, son numéro de téléphone, ou/et d'autres informations comme par exemple, un nom d'entreprise, un rôle dans l'entreprise, etc.
Alors pourquoi pas une adresse mail.

Hors ligne