Script unix fichier env
Résolu/Fermé
kamax54
Messages postés
7
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
5 septembre 2007
-
4 sept. 2007 à 14:23
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 4 sept. 2007 à 21:56
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 4 sept. 2007 à 21:56
A voir également:
- Script unix fichier env
- Fichier rar - Guide
- Script vidéo youtube - Guide
- Fichier host - Guide
- Fichier iso - Guide
- Comment ouvrir un fichier epub ? - Guide
7 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
4 sept. 2007 à 14:57
4 sept. 2007 à 14:57
Salut,
root@debian:~/algorithme_en_c# env >> XX root@debian:~/algorithme_en_c# env >> XX root@debian:~/algorithme_en_c# env >> XX root@debian:~/algorithme_en_c# env >> XX root@debian:~/algorithme_en_c# env >> XX root@debian:~/algorithme_en_c# cat username #!/bin/bash i=1 for var in $(grep -E '^(PWD|USER|MAIL|LOGNAME|HOME)' $1) do echo "$i) $var" >> resultat i=$((i+1)) done root@debian:~/algorithme_en_c# sh username XX root@debian:~/algorithme_en_c# cat resultat 1) USER=lami20j 2) MAIL=/var/mail/lami20j 3) PWD=/home/lami20j/algorithme_en_c 4) HOME=/home/lami20j 5) LOGNAME=lami20j 6) USER=lami20j 7) MAIL=/var/mail/lami20j 8) PWD=/home/lami20j/algorithme_en_c 9) HOME=/home/lami20j 10) LOGNAME=lami20j 11) USER=lami20j 12) MAIL=/var/mail/lami20j 13) PWD=/home/lami20j/algorithme_en_c 14) HOME=/home/lami20j 15) LOGNAME=lami20j 16) USER=lami20j 17) MAIL=/var/mail/lami20j 18) PWD=/home/lami20j/algorithme_en_c 19) HOME=/home/lami20j 20) LOGNAME=lami20j 21) USER=lami20j 22) MAIL=/var/mail/lami20j 23) PWD=/home/lami20j/algorithme_en_c 24) HOME=/home/lami20j 25) LOGNAME=lami20jsi l'option -E n'existe pas pour ton grep mets
'^\(PWD\|USER\|MAIL\|LOGNAME\|HOME\)'
kamax54
Messages postés
7
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
5 septembre 2007
4 sept. 2007 à 15:07
4 sept. 2007 à 15:07
merci beaucoup lami20j !!! c'est exactement ça lol
Pourrez-tu juste m'argumenter ta boucle, en particulier $(grep -E '^(PWD|USER|MAIL|LOGNAME|HOME)' $1) STP?Merci
Pourquoi le ^ et pourquoi le -E ?
Pourrez-tu juste m'argumenter ta boucle, en particulier $(grep -E '^(PWD|USER|MAIL|LOGNAME|HOME)' $1) STP?Merci
Pourquoi le ^ et pourquoi le -E ?
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
4 sept. 2007 à 15:16
4 sept. 2007 à 15:16
Salut,
pour capturer le résultat d'une commande on utilise la syntaxe
discutons maintenant la commande
j'utilise l'option -E qui fait que grep se comporte comme egrep (grep étendu)
pourquoi?
pour ne pas obliger de mettre un antislash avant chaque paranthèse et | (en bref, histoire de paresse :-))
et aussi de compatibilité si le grep sur ton système n'a pas l'option -E (ça depends toujours de la version utilisée) on peut utiliser
Pourquoi ^ ?
^ perment d'ancrer l'expression régulière au début de chaine
Donc cherche les chaines qui commencent avec PWD ou USER ou .....
Je l'utilise puisque sinon je vais capturer aussi OLDPWD
Comme ^ cherche au début de chaine, il ne va pas reconnaître OLDPWD même si PWD existe dans la chaîne
pour capturer le résultat d'une commande on utilise la syntaxe
$(commande)
discutons maintenant la commande
j'utilise l'option -E qui fait que grep se comporte comme egrep (grep étendu)
pourquoi?
pour ne pas obliger de mettre un antislash avant chaque paranthèse et | (en bref, histoire de paresse :-))
et aussi de compatibilité si le grep sur ton système n'a pas l'option -E (ça depends toujours de la version utilisée) on peut utiliser
$(grep '^\(PWD\|USER\|MAIL\|LOGNAME\|HOME\)' $1)
Pourquoi ^ ?
^ perment d'ancrer l'expression régulière au début de chaine
Donc cherche les chaines qui commencent avec PWD ou USER ou .....
Je l'utilise puisque sinon je vais capturer aussi OLDPWD
Comme ^ cherche au début de chaine, il ne va pas reconnaître OLDPWD même si PWD existe dans la chaîne
kamax54
Messages postés
7
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
5 septembre 2007
4 sept. 2007 à 15:25
4 sept. 2007 à 15:25
ok, je te remercie pour ton aide lami20j
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
euh attends. Ya un truc qui m'échappe là.
tu peux avoir d'autres variables d'environnement avec le nom de l'utilisateur qui exécute, et par ailleurs tu peux exécuter en tant qu'utilisateur X dans l'environnement de Y, auquel cas ces variables là peuvent te renvoyer un résultat invalide.
enfin bon, une alternative en awk
tu peux avoir d'autres variables d'environnement avec le nom de l'utilisateur qui exécute, et par ailleurs tu peux exécuter en tant qu'utilisateur X dans l'environnement de Y, auquel cas ces variables là peuvent te renvoyer un résultat invalide.
enfin bon, une alternative en awk
#!/usr/bin/awk -f BEGIN { "whoami" | getline ope } $_ ~ ope { x++; print x ") " $_ >> "resultat" }
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
4 sept. 2007 à 20:24
4 sept. 2007 à 20:24
pour changer l'identité d'un utilisateur on peut utiliser su autre ou su - autre
dans le 1er cas même si je suis connecté sous l'identité de autre l'utilisateur garde son environnement donc pas de problèmes
dans le 2ème cas je suis connectè dans l'environnement de autre donc ce n'est plus l'utilisateur qui lance la commande mais autre dans son environnement donc pas de problèmes
en revanche le problème reste discutable si j'exécute la commande de cette manière
donc depuis utilisateur j'exécute
dans le 1er cas même si je suis connecté sous l'identité de autre l'utilisateur garde son environnement donc pas de problèmes
dans le 2ème cas je suis connectè dans l'environnement de autre donc ce n'est plus l'utilisateur qui lance la commande mais autre dans son environnement donc pas de problèmes
en revanche le problème reste discutable si j'exécute la commande de cette manière
donc depuis utilisateur j'exécute
su -c commande autre
Utilisateur anonyme
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
4 sept. 2007 à 20:49
4 sept. 2007 à 20:49
ben c'est là où je veux en venir. Normalement quand tu développes tu ne le fais pas en partant du principe que l'utilisateur se mettra dans les conditions idéales, mais au contraire qu'il se mettra dans la seule situation emmerdogène à laquelle tu n'avais pas pensé :)
Si ton examinateur accepte que le script fonctionne dans des conditions définies par toi, ça marche. S'il veut que ça fonctionne dans toutes les situations, là ça coince.
Si ton examinateur accepte que le script fonctionne dans des conditions définies par toi, ça marche. S'il veut que ça fonctionne dans toutes les situations, là ça coince.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
>
Utilisateur anonyme
4 sept. 2007 à 21:10
4 sept. 2007 à 21:10
En ce cas on peut faire comme ça
j'ai été dérouté par la sortie qu'il voulait obtenir :-)
Merci.
#!/bin/bash i=1 for var in $(sed -n -e /$USER/p $1) do echo "$i) $var" >> resultat i=$((i+1)) doneParcourez ce fichier et recherchez les occurences de l'utilisateur qui a exécuté le script.
j'ai été dérouté par la sortie qu'il voulait obtenir :-)
Merci.
Utilisateur anonyme
4 sept. 2007 à 21:30
4 sept. 2007 à 21:30
root: ~# su biche biche: /root$ whoami biche biche: /root$ echo $USER root biche: /root$ whoami biche biche: /root$ exit root: ~#
il me semblait bien m'être déjà fait avoir par cette variable :)
faut charger l'environnement
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
4 sept. 2007 à 21:56
4 sept. 2007 à 21:56
rien ne t'empêche de changer $USER avec whoami ou d'utiliser des conditions, etc
et voilà ce que donne ton exemple chez moi (je ne me suis pas faire avoir encore avec cette variable :-))
lami20j
P.S. Je m'arrête ici puisque mon but ce n'est pas de rendre ce programme portable :-D, j'ai d'autre projets que je veux rendre portable ;-)))
Bonne soirée
#!/bin/bash i=1 for var in $(sed -n -e /$(whoami)/p $1) do echo "$i) $var" >> resultat i=$((i+1)) done
et voilà ce que donne ton exemple chez moi (je ne me suis pas faire avoir encore avec cette variable :-))
debian:~# su lami20j lami20j@deb:/root$ whoami lami20j lami20j@deb:/root$ echo $USER lami20j lami20j@deb:/root$ whoami lami20j lami20j@deb:/root$ exit exit debian:~#--
lami20j
P.S. Je m'arrête ici puisque mon but ce n'est pas de rendre ce programme portable :-D, j'ai d'autre projets que je veux rendre portable ;-)))
Bonne soirée