[Perl/Unix]Récup var d'env != users

Fermé
fxta - 29 sept. 2009 à 15:16
 fxta - 6 oct. 2009 à 15:00
Salut,
pour commencer je m'excuse du nom du post mais il devait être explicite tout en respectant le nombre de lettres maxi....

Objet : Je souhaiterai récupérer différentes variables d'environnement de chaques utilisateurs sous Unix.

Bases : les utilisateurs et mots de passe utilisateurs peuvent etre récupéré facilement dans des variables.

Contraintes : récupérer certaines variables d'environnements sans que le script ne s'arrete a chaque changement d'utilisateur.

J'ai pensé à un truc dans le style qui ne fonctionne, bien évidemment, pas du tout :

my $su= `su - $login $pass`; my $env= $ENV{'HOME'};


Mais sur le principe, c est ca. Apres entre la théorie et la pratique......

Bonne journée.

4 réponses

loveparade Messages postés 506 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 14 mai 2011 60
29 sept. 2009 à 19:22
Regardes les fichiers /proc/<uid>/environ (en changeant bien sur uid avec un existant)

Exemple en sh: cat /proc/self/environ
retourne les vars environnantes de la session
0
J'ai bien trouvé /proc/<uid>. Je n'ai pas le /enviro malheureusement.
Merci pour se renseignement.

1er problème : lorsque je recupere mon uid avec la commande id, celui ci n'est pas listé dans le répertoire proc.

2eme probleme : comment connaitre l'id d'un environnement sans se connecter ni le démarrer ?
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
30 sept. 2009 à 10:07
hello
l'environnement est local à une tâche, avec
my $su= `su - $login $pass`; my $env= $ENV{'HOME'};
tu ne récupères que l'environnement du shell qui a lancé le su
0
oui, je fais mon su donc je switch de user, je recup les variables d env puis je reswitch de user etc.... et je boucle tout ca. Le pb c est que j'y arrive pas.
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
30 sept. 2009 à 10:51
si tu es root, pas besoin de password
et si tu fais
su -c set $user
0
Nan mais en ligne de commande a la main en dur j'arrive tres facilement a recuperer les variables d'environnement qui m'interessse:
>su - LOGIN
>PASS
>echo $VAR_D'ENV


Le probleme c est de recuperer ca avec un script perl en dynamique.

L'autre solution serait de récuperer la source des informations d'unix pour les variables :
il doit bien exister un endroit ou toutes les variables de tous les environnements sont stockés.

Unix est bien obligé de garder une trace des variables d'environnements propres a chaque user...le probleme c est de savoir où....
0
Bon j'ai trouvé, dans chaque environnement il y a un fichier caché .profile. C est ce fichier qui contient toutes les variables propres a l'environnement.

Bonne journée.
0