Perl et les commandes system
koa0
-
koa0 -
koa0 -
Bonjour tout le monde,
Le problème est simple. J'utilise unix avec differents groupe de travail( j'ai les droits pour y acceder )
ex:
pole2
cpioc
...
qd je change de groupe avec dtterm via la commande newgrp nomgroupe ça marche parfaitement.
Mais qd je change de groupe via un programme perl en utilisant la ligne de commande.
`newgrp nomgroupe` ou system "newgrp nomgroupe" ou encore exec "newgrp nomgroupe" il n'y a pas d'erreur mais ça ne marche pas.
Si quelqu'un pouvait me donner plus de renseignement sur le comment cela fonctionne et surtout sur le comment faire pour que ça fonctionne.
Merci d'avance car c'est très urgent
Karim
Le problème est simple. J'utilise unix avec differents groupe de travail( j'ai les droits pour y acceder )
ex:
pole2
cpioc
...
qd je change de groupe avec dtterm via la commande newgrp nomgroupe ça marche parfaitement.
Mais qd je change de groupe via un programme perl en utilisant la ligne de commande.
`newgrp nomgroupe` ou system "newgrp nomgroupe" ou encore exec "newgrp nomgroupe" il n'y a pas d'erreur mais ça ne marche pas.
Si quelqu'un pouvait me donner plus de renseignement sur le comment cela fonctionne et surtout sur le comment faire pour que ça fonctionne.
Merci d'avance car c'est très urgent
Karim
Configuration: Windows XP Firefox 3.0.6
A voir également:
- Perl et les commandes system
- Reboot system now - Guide
- Invite de commandes - Guide
- Amazon supprimer historique des commandes ✓ - Forum Réseaux sociaux
- Fichier ouvert dans system ✓ - Forum Windows
- Supprimer commandes masquées - Forum Réseaux sociaux
12 réponses
Merci pour la reponse si rapide.
Je debute en Perl et si tu pouvez m'en dire plus je t'en remercierai
Karim
Je debute en Perl et si tu pouvez m'en dire plus je t'en remercierai
Karim
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
cela redirige les commandes jusqu'a XX en début de ligne.
tu peux tester en shell
newgrp group ; id -a ; echo > fichier1 ; ls -l fichier1
newgrp group << XX
id -a ; echo > fichier2 ; ls -l fichier2
XX
tu peux tester en shell
newgrp group ; id -a ; echo > fichier1 ; ls -l fichier1
newgrp group << XX
id -a ; echo > fichier2 ; ls -l fichier2
XX
Desolé de te deranger une nouvelle fois,
J'ai testé la commande et ça n'a pas marché.
J'explique ce que j'ai fait. Sous unix et perl. je dois faire l'erreur du debutant
.
.
.
system("newgrp pole2 << XX");
.
.
.
et là j'ai une erreur
Bareword found where operator expected at /home/st27247/ScriptPerl/EssaiScriptKarim/BOATEST_13_02_09/creationIHM.pl line 538, near "print "Les"
(Might be a runaway multi-line "" string starting on line 530)
(Do you need to predeclare print?)
syntax error at /home/st27247/ScriptPerl/EssaiScriptKarim/BOATEST_13_02_09/creationIHM.pl line 530, near "XX;"
J'ai testé la commande et ça n'a pas marché.
J'explique ce que j'ai fait. Sous unix et perl. je dois faire l'erreur du debutant
.
.
.
system("newgrp pole2 << XX");
.
.
.
et là j'ai une erreur
Bareword found where operator expected at /home/st27247/ScriptPerl/EssaiScriptKarim/BOATEST_13_02_09/creationIHM.pl line 538, near "print "Les"
(Might be a runaway multi-line "" string starting on line 530)
(Do you need to predeclare print?)
syntax error at /home/st27247/ScriptPerl/EssaiScriptKarim/BOATEST_13_02_09/creationIHM.pl line 530, near "XX;"
le plus simple, tu mets tes commandes newgrp ... dans un script, tu le rends exécutable
chmod u+x script
et depuis perl
system("script");
chmod u+x script
et depuis perl
system("script");
Merci de prendre du temps avec moi.
J'ai essayé cette façon de faire mais là des qu'on arrive sur la ligne newgrp.... du script ksh ça me bloque. On voit quand même que le script est lancé.
script ksh:
#!/bin/ksh
echo "debut de programme"
newgrp pole2
echo "fin de programme"
resultat:
debut de programme
J'ai essayé cette façon de faire mais là des qu'on arrive sur la ligne newgrp.... du script ksh ça me bloque. On voit quand même que le script est lancé.
script ksh:
#!/bin/ksh
echo "debut de programme"
newgrp pole2
echo "fin de programme"
resultat:
debut de programme
Comme tu m'as beaucoup aidé je reviens vers toi en esperant ne pas trop t'ennuyer.
Je suis en train de sourcer un environnement en procedant de la façon suivante:
#!/bin/ksh
echo "appel du programme essai"
# Environnement de marcel
newgrp pole2<<XX
. /home/pole2/atelier_pole2_gdc_a380<<YY
echo "---------------------------------------------------------------"
echo "Atelier marcel => ${Loc_marcel}"
echo "Espace de developpement => ${ESPACE_DEV}"
echo "---------------------------------------------------------------"
echo "fin du programme essai"
XX
YY
resultat:
il bloque à la ligne qd je lance le script via perl
. /home/pole2/atelier_pole2_gdc_a380<<YY
Je suis en train de sourcer un environnement en procedant de la façon suivante:
#!/bin/ksh
echo "appel du programme essai"
# Environnement de marcel
newgrp pole2<<XX
. /home/pole2/atelier_pole2_gdc_a380<<YY
echo "---------------------------------------------------------------"
echo "Atelier marcel => ${Loc_marcel}"
echo "Espace de developpement => ${ESPACE_DEV}"
echo "---------------------------------------------------------------"
echo "fin du programme essai"
XX
YY
resultat:
il bloque à la ligne qd je lance le script via perl
. /home/pole2/atelier_pole2_gdc_a380<<YY
peut être:
newgrp pole2<<XX
. /home/pole2/atelier_pole2_gdc_a380<<YY
echo "---------------------------------------------------------------"
echo "Atelier marcel => ${Loc_marcel}"
echo "Espace de developpement => ${ESPACE_DEV}"
echo "---------------------------------------------------------------"
echo "fin du programme essai"
YY
XX
le << YY est-il nécessaire ?
newgrp pole2<<XX
. /home/pole2/atelier_pole2_gdc_a380<<YY
echo "---------------------------------------------------------------"
echo "Atelier marcel => ${Loc_marcel}"
echo "Espace de developpement => ${ESPACE_DEV}"
echo "---------------------------------------------------------------"
echo "fin du programme essai"
YY
XX
le << YY est-il nécessaire ?
effectivement <<YY n'est pas necessaire et il ne bloque plus sans. Par contre dans
echo "---------------------------------------------------------------"
echo "Atelier marcel => ${Loc_marcel}"
echo "Espace de developpement => ${ESPACE_DEV}"
echo "---------------------------------------------------------------"
il doit m'afficher
---------------------------------------------------------------
Atelier marcel => /home/pole2/FCDC/FCDC/ATELIER
Espace de developpement => /home/pole2/FCDC/FCDC
---------------------------------------------------------------
et il m'affiche
---------------------------------------------------------------
Atelier marcel => /home/cpiom_c/FCDC/FCDC/ATELIER
Espace de developpement => /home/cpiom_c/FCDC/FCDC
---------------------------------------------------------------
est ce que je me trompe dans la façon dont j'appelle la commande pour sourcer?
echo "---------------------------------------------------------------"
echo "Atelier marcel => ${Loc_marcel}"
echo "Espace de developpement => ${ESPACE_DEV}"
echo "---------------------------------------------------------------"
il doit m'afficher
---------------------------------------------------------------
Atelier marcel => /home/pole2/FCDC/FCDC/ATELIER
Espace de developpement => /home/pole2/FCDC/FCDC
---------------------------------------------------------------
et il m'affiche
---------------------------------------------------------------
Atelier marcel => /home/cpiom_c/FCDC/FCDC/ATELIER
Espace de developpement => /home/cpiom_c/FCDC/FCDC
---------------------------------------------------------------
est ce que je me trompe dans la façon dont j'appelle la commande pour sourcer?
le . source bien
les variables sont définies dans /home/pole2/atelier_pole2_gdc_a380 ?
sont-elles exportées ?
dans /home/pole2 pole2 est un répertoire, dans newgrp pole2 pole2 est un groupe, 2 choses différentes
les variables sont définies dans /home/pole2/atelier_pole2_gdc_a380 ?
sont-elles exportées ?
dans /home/pole2 pole2 est un répertoire, dans newgrp pole2 pole2 est un groupe, 2 choses différentes
Bonsoir,
désole mais je n'ai pas pu répondre avant. Effectivement pole2 est un groupe mais est aussi un répertoire.
Ce que doit faire le programme c'est de se mettre sur le groupe pole2 pour pouvoir ensuite lancer un environnement qui se trouve sous un répertoire pole2(qui a la même nom que le groupe dans ce cas).
Je suppose que je n'aurai pas de réponse ce soir alors bonne soirée à tous
Karim
désole mais je n'ai pas pu répondre avant. Effectivement pole2 est un groupe mais est aussi un répertoire.
Ce que doit faire le programme c'est de se mettre sur le groupe pole2 pour pouvoir ensuite lancer un environnement qui se trouve sous un répertoire pole2(qui a la même nom que le groupe dans ce cas).
Je suppose que je n'aurai pas de réponse ce soir alors bonne soirée à tous
Karim
Bon j'ai essayé. En fait le probleme vient toujours de fait qu'on ne change pas de groupe. J'essai de changer de groupe et j'affiche l'id mais on est toujours sur l'ancien groupe.
Je m'explique:
on est sous le groupe cpioc
debut du programme perl
...
system ("essai");
debut du programme essai pour se mettre sous le groupe pole2
#!/bin/ksh
echo "appel du programme essai"
# Definition de la version Marcel a utiliser
export MARCEL_ENV="/home/opt/MARCEL/0000750_AA/MARCEL_ENV/marcel_env"
# Environnement de marcel
newgrp pole2<<"$grp"
${grp}
fin du programme essai
On revient au programme perl
my $id = `id`
print "$id";
et là je reste sur le groupe cpioc. Je comprend pas
Karim
Je m'explique:
on est sous le groupe cpioc
debut du programme perl
...
system ("essai");
debut du programme essai pour se mettre sous le groupe pole2
#!/bin/ksh
echo "appel du programme essai"
# Definition de la version Marcel a utiliser
export MARCEL_ENV="/home/opt/MARCEL/0000750_AA/MARCEL_ENV/marcel_env"
# Environnement de marcel
newgrp pole2<<"$grp"
${grp}
fin du programme essai
On revient au programme perl
my $id = `id`
print "$id";
et là je reste sur le groupe cpioc. Je comprend pas
Karim
Merci vraiment pour ton coup de main
Bonne journée
Karim
Je te remercie pour tes explications. Effectivement j'ai corrigé mon architecture et maintenant ça marche.
Bonne journée
A bientôt
Karim