IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

Ouvrir Firefox avec script Perl


Sujet :

Apache

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 161
    Points
    161
    Par défaut Ouvrir Firefox avec script Perl
    Bonjour,

    J'ai installé Apache correctement (il m'affiche bien It works lorsque je vais sur la page : http://localhost/).

    Mais lorsque je vais sur la page : http://localhost/fox.pl. j'ai un message d'erreur sur la page (Internal Server Error). Et lorsque je consulte le fichier error.log, je n'ai pas de ligne d'erreur.

    dans le scritp fox.pl, j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!c:/users/ash_rmy/documents/sas_web/p/bin/perl.exe
    system('"C:\\Program Files\\Mozilla Firefox\\firefox.exe"');
    j'ai vérifié que le chemin est correct.

    merci de votre aide.

    ash_rmy.

  2. #2
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    salut,
    as tu essayer avec // au lieu de \\ ?
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 161
    Points
    161
    Par défaut
    merci pour ta suggestion!

    oui j'ai essayé mais ça ne marche pas.

    ash_rmy.

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 161
    Points
    161
    Par défaut
    il y a des choses dans ma log maintenant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [Tue Aug 11 14:37:04 2009] [error] [client 127.0.0.1] (OS 2)Le fichier spécifié est introuvable.  : couldn't create child process: 720002: fox.pl
    [Tue Aug 11 14:37:04 2009] [error] [client 127.0.0.1] (OS 2)Le fichier spécifié est introuvable.  : couldn't spawn child process: C:/Users/Ash_Rmy/Documents/SAS_Web/cgi-bin/fox.pl

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 161
    Points
    161
    Par défaut
    j'ai ajouter -w :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!c:/users/ash_rmy/documents/sas_web/p/bin/perl.exe -w
    print "Content-type:text/html\n\n";
    system('"C:\\Program Files\\Mozilla Firefox\\firefox.exe"');


    mais ça ne marche toujours pas (c'est à dire, firefox ne s'ouvre pas). par contre, je n'ai pas de message d'erreur dans la log maintenant.

    merci.

    ash_rmy.

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Pas tout compris : tu veux que Firefox s'ouvre sur le serveur (qui est donc un Windows) en cliquant sur un lien ou une URL, c'est bien ça ?

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 161
    Points
    161
    Par défaut
    oui c'est ça. ça peut paraître illogique je sais mais, je dois m'assurer qu'un .exe s'exécute via Apache.

    merci.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Chez moi ça fonctionnait avec un exécutable situé dans le répertoire Windows (%windir%) comme notepad ou explorer :
    Code Perl : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    system('explorer');
    system('notepad');

    on peut aussi uiliser la commande start
    Code Perl : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    system("start explorer");
    system("start notepad");

    Sinon il y a un outil pour perl appelé PsExec : psexec tool


    J'avais rencontré un problème similaire, mais c'était un problème de droits dans Windows :

    As-tu vérifié que tu avais autorisé le service Apache 2.2 à intéragir avec l'environnement Windows dans Services ?

    Démarrer Exécuter ► taper services.mscOK
    Recherche le service Apache.
    Clic droit sur le service ► Propriétés
    Onglet Connexion ► Choisir Compte système local ► cocher Autoriser le service à interagir avec le bureau
    Relance Apache and see if it works
    Dernière modification par Invité ; 17/08/2009 à 11h49.

  9. #9
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 161
    Points
    161
    Par défaut
    Merci Karzoff de m'avoir répondu.

    J'ai autorisé le service Apache 2.2 à intéragir avec l'environnement Windows. Mais lorsque je tape l'adresse http://127.0.0.1/cgi-bin/Lancement_Firefox.pl dans l'explorer, j'ai une fenêtre qui apparait (détection de boîte de dialogue de services interactifs - voir PJ). Lorsque je clique sur "Afficher le message", un nouvel écran apparait et là j'ai une boite de dialogue pour ouvrir Firefox. Comment faire pour exécuter directement Firefox dans l'écran où je suis.

    Et pour PsExec, comment le mettre en oeuvre ?

    merci beaucoup !

    ash_rmy.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Merci d'avoir bien décrit ton problème, le screenshot est aussi une bonne idée ça aide grandement au diagnostic

    Comme j'avais un peu de temps, j'ai installé Apache et Perl sur la machine du boulot et j'ai exécute le script http://127.0.0.1/cgi-bin/Lancement_Firefox.pl

    J'ai d'abord eu le même problème que toi au début (rien ne se passait), j'ai donc autorisé le service à interagir avec l'environnement Windows et là ça a marché tout de suite (j'ai rafraichi la fenêtre de Firefox et une nouvelle Fenêtre de Firefox c'est tout simplement ouverte )

    Au début je ne comprenais pas mais quand j'ai regardé à nouveau ton screenshot ça a fait tilt!

    J'ai fait la manip sous un Windows XP SP3, vu l'allure de ta boîte de dialogue, ça ressemble à du Windows Server 2008

    Le problème c'est que Firefox sera ouvert avec les droits SYSTEM:


    C'est un problème de sécurité, si le Firefox venait à exécuter du code malicieux, il l'exécuterai avec les droits SYSTEM. Ça ouvre la porte à un certain nombre d'attaque de type User Interface Privilege Isolation (Isolation des privilèges de l'Interface Utilisateur) comme la shatter attack et autres.

    Si je peux le faire sur XP et pas toi sur ton Windows Server, c'est parce que Microsoft a activé une option dans le registre qui autorise ce genre d'intéraction. Le message que tu vois c'est ça la protection (d'ailleurs, sur la page Wikipedia de Shatter Attack, il y a le même screenshot que celui que tu as posté )

    J'ai cherché un peu sur le MSND, j'ai trouvé ceci : Interactive Services(Windows) - MSDN Tout y est.

    La clef en question est NoInteractiveServices

    Démarrer Exécuter ► taper regedit ► OK

    Développer les clef suivantes : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows

    Double cliquer sur la DWORD NoInteractiveServices

    Changer la valeur 0 (laisser Hexadécimal) et valider

    Relancer Apache and That's all Folks!!


    Pour ma part j'ai testé en mettant la valeur à 1 et comme on pouvait le prévoir, après un redémarrage du service Apache, le script ne fonctionnait plus (donc c'est bien de là que viendrait le problème )

    Bonne chance !! (si ça marche pas on verra avec PsExec)
    Dernière modification par Invité ; 13/08/2009 à 11h39.

  11. #11
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 161
    Points
    161
    Par défaut
    Bonjour Karzoff, merci pour ton aide.

    Je n'utilise pas Windows Server 2008, je travaille sur Window Vista. Est ce que tu peux m'expliquer pour le PsExec STP.

    merci.

    ash_rmy.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Karzoff Voir le message
    Démarrer Exécuter ► taper regedit ► OK

    Développer les clef suivantes : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows

    Double cliquer sur la DWORD NoInteractiveServices

    Changer la valeur 0 (laisser Hexadécimal) et valider

    Relancer Apache and That's all Folks!!
    La procédure fonctionne aussi sous Vista

    PsExec est en réalité un outils de la suite PsTools (lien de téléchargements en bas de la page)

    Télécharge l'archive zip, et décompresse-la dans C:\

    La commande psexec est désormais disponible sous l'invite de commande. L'exécution de la commande à vide va t'afficher une aide sur l'usage de la commande.

    Tu peux tester le bon fonctionnement de PsExec dans l'invite de commande avec :
    Code Invite de commande : Sélectionner tout - Visualiser dans une fenêtre à part
    psexec -l -d "C:\Program Files\Mozilla Firefox\firefox.exe"
    Moi ça me lance directement Firefox (j'ai fais la manip sous le XP du boulot). Ça devrait fonctionner sous Vista, peut-être te faudra-t-il lancer l'Invite de Commande en tant qu'Administrateur. Il est aussi probable que Windows te pose une fois la question d'autoriser oui ou non PsExec à lancer un programme.

    Si ça fonctionne, tu n'a plus qu'a utiliser la commande Perl system() comme suit :

    Code Perl : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!c:/perl/bin/perl.exe
    print "Content-type:text/html\n\n";
    system('psexec -l -d "C:\Program Files\Mozilla Firefox\firefox.exe"');

    Une visite sur la page http://127.0.0.1/cgi-bin/Lancement_Firefox.pl et on a le droit à une fenêtre qui ne s'affichera qu'une fois :


    On accepte les conditions en cliquant sur le bouton Agree et c'est parti

    Il est à note que, cette fois-ci, le processus Firefox.exe possède les droits User

    En espérant que ça serve
    Dernière modification par Invité ; 17/08/2009 à 14h39.

  13. #13
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 161
    Points
    161
    Par défaut
    Merci Karzoff pour les informations.

    J'ai ouvert l'invite de commande en mode administrateur.

    J'ai exécuté les commandes suivantes pour ouvrir plusieurs applications :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    psexec -l -d "C:\Program Files\Mozilla Firefox\firefox.exe"
     
    psexec -l -d "C:\Program Files\FileZilla FTP Client\filezilla.exe"
     
    psexec -l -d "C:\Program Files\SAS\SAS 9.1\sas.exe"
    Pour les 3 applications, j'ai des messages d'erreur (voir PJ). Mais la bonne nouvelle c'est PsExec fonctionne

    D'où peut provenir le problème STP, merci de ton aide.

    ash_rmy.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bon

    Essaye avec sans les options -l et -d pour voir

    Si ça ne marche toujours pas, essayes avec l'option -s

    Peut-tu me dire si la commande
    Code Invite de commande : Sélectionner tout - Visualiser dans une fenêtre à part
    psexec -l -d cmd
    fonctionne ?

    (là aussi, tu peux tester sans les options -l et -d puis avec l'option -s )

    Ça doit venir de Vista, parce que toutes les solutions que je t'ai proposées fonctionnent sous XP
    Je ne vois pas d'où vient le problème

    Edit : pour l'instant, tu exécutes les commandes en local ou à distance avec le script Perl ?

  15. #15
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 161
    Points
    161
    Par défaut
    Bonsoir Karzoff, merci encore.

    En ouvrant l'invite de commande en mode administrateur, j'obtiens ces résultats.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    psexec -l -d "C:\Program Files\SAS\SAS 9.1\sas.exe"
    Sas s'ouvre en erreur apparemment parce que je ne l'ai pas installé en administrateur (voir PJ).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    psexec -l -d "C:\Program Files\FileZilla FTP Client\filezilla.exe"
    Idem pour Filezilla, apparemment parce que je ne l'ai pas installé en administrateur (voir PJ).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    psexec -l -d "C:\Program Files\Winamp\winamp.exe"
    Par contre en installant Winamp en administrateur, il s'ouvre sans erreur.

    Donc déjà je pense que pour ouvrir Firefox via un explorer, je dois au préalable l'installer en administrateur.

    Maintenant, j'essaie d'exécuter Winamp via Apache avec le script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!c:/users/ash_rmy/documents/sas_web/p/bin/perl.exe -s
    print "Content-type:text/html\n\n";
    system('c:\\psexec -s "c:\\program files\\winamp\\winamp.exe"');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [Tue Aug 18 21:23:12 2009] [error] [client 127.0.0.1] \r
    [Tue Aug 18 21:23:12 2009] [error] [client 127.0.0.1] PsExec v1.96 - Execute processes remotely\r
    [Tue Aug 18 21:23:12 2009] [error] [client 127.0.0.1] Copyright (C) 2001-2009 Mark Russinovich\r
    [Tue Aug 18 21:23:12 2009] [error] [client 127.0.0.1] Sysinternals - www.sysinternals.com\r
    [Tue Aug 18 21:23:12 2009] [error] [client 127.0.0.1] \r
    [Tue Aug 18 21:23:12 2009] [error] [client 127.0.0.1] Connecting to local system...\r                                                                              \r\rStarting PsExec service on local system...\r                                                                              \r\rConnecting with PsExec service on PC-DE-ASH_RMY...\r                                                                              \r\rStarting c:\\program files\\winamp\\winamp.exe on PC-DE-ASH_RMY...\r                                                                              \r\r\r
    [Tue Aug 18 21:23:12 2009] [error] [client 127.0.0.1] c:\\program files\\winamp\\winamp.exe exited on PC-DE-ASH_RMY with error code 1.\r


    avec ce script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!c:/users/ash_rmy/documents/sas_web/p/bin/perl.exe
    print "Content-type:text/html\n\n";
    system('c:\\psexec "c:\\program files\\winamp\\winamp.exe"');
    ça reste en attente.

    avec ce script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!c:/users/ash_rmy/documents/sas_web/p/bin/perl.exe
    print "Content-type:text/html\n\n";
    system('c:\\psexec -l -d "c:\\program files\\winamp\\winamp.exe"');
    J'ai ce message dans la log :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [Tue Aug 18 21:26:52 2009] [error] [client 127.0.0.1] PsExec v1.96 - Execute processes remotely\r
    [Tue Aug 18 21:26:52 2009] [error] [client 127.0.0.1] Copyright (C) 2001-2009 Mark Russinovich\r
    [Tue Aug 18 21:26:52 2009] [error] [client 127.0.0.1] Sysinternals - www.sysinternals.com\r
    [Tue Aug 18 21:26:52 2009] [error] [client 127.0.0.1] \r
    [Tue Aug 18 21:26:52 2009] [error] [client 127.0.0.1] c:\\program files\\winamp\\winamp.exe started with process ID 5480.\r
    Apparemment, là il est ouvert mais je ne le vois pas...

    merci de votre aide.

    au fait, j'exécute les commandes en local et j'ai bien autorisé Apache à interagir avec le bureau (voir PJ).

    ash_rmy.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Merci d'avoir bien détaillé

    Citation Envoyé par ash_rmy Voir le message
    [CODE]J'ai ce message dans la log :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [Tue Aug 18 21:26:52 2009] [error] [client 127.0.0.1] PsExec v1.96 - Execute processes remotely\r
    [Tue Aug 18 21:26:52 2009] [error] [client 127.0.0.1] Copyright (C) 2001-2009 Mark Russinovich\r
    [Tue Aug 18 21:26:52 2009] [error] [client 127.0.0.1] Sysinternals - www.sysinternals.com\r
    [Tue Aug 18 21:26:52 2009] [error] [client 127.0.0.1] \r
    [Tue Aug 18 21:26:52 2009] [error] [client 127.0.0.1] c:\\program files\\winamp\\winamp.exe started with process ID 5480.\r
    Apparemment, là il est ouvert mais je ne le vois pas...
    La dernière ligne est encourageante, même si tu ne vois pas la fenêtre, le vois-tu dans la liste des processus (Gestionnaire des Tâches ou commande pslist si tu as bien installé PsTools)

    Si ce n'est pas déjà fait, essaye de désactiver l'UAC, parce qu'à défaut d'avoir une illumination, j'ai fini par faire des recherches sur le net, et un problème avec l'UAC est assez récurent sous Vista (ce qui expliquerai pourquoi les solutions que je te donne fonctionnent sous XP)

    Avant de faire ça, tu peux aussi essayer avec les options -s -i (je viens de voir ça sur le net)

    Sinon fait comme je t'ai dis :
    désactiver l'UAC.
    Quitte à le réactiver après, juste pour voir si c'est là que ça bloque.
    Dernière modification par Domi2 ; 27/04/2011 à 16h16.

  17. #17
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 161
    Points
    161
    Par défaut
    merci beaucoup pour ton aide Karzoff !

    ça ne marche toujours pas en déactivant l'UAC. est ce que tu aurais d'autres pistes STP ?

    merci.

    ash_rmy.

  18. #18
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 161
    Points
    161
    Par défaut
    Lorsque je lance VLC via Apache :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!c:/users/ash_rmy/documents/sas_web/p/bin/perl.exe
    print "Content-type:text/html\n\n";
    system('c:\\psexec -l -d "c:\\program files\\winamp\\winamp.exe"');
    J'ai un message d'erreur Windows qui apparait (voir PJ)

    C'est pareil pour les scripts suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #!c:/users/ash_rmy/documents/sas_web/p/bin/perl.exe -s
    print "Content-type:text/html\n\n";
    system('c:\\psexec -l -d "c:\\program files\\winamp\\winamp.exe"');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!c:/users/ash_rmy/documents/sas_web/p/bin/perl.exe -s
    print "Content-type:text/html\n\n";
    system('c:\\psexec "c:\\program files\\winamp\\winamp.exe"');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!c:/users/ash_rmy/documents/sas_web/p/bin/perl.exe
    print "Content-type:text/html\n\n";
    system('c:\\psexec "c:\\program files\\winamp\\winamp.exe"');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!c:/users/ash_rmy/documents/sas_web/p/bin/perl.exe
    print "Content-type:text/html\n\n";
    system('c:\\psexec -l "c:\\program files\\winamp\\winamp.exe"');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #!c:/users/ash_rmy/documents/sas_web/p/bin/perl.exe
    print "Content-type:text/html\n\n";
    system('c:\\psexec -s "c:\\program files\\winamp\\winamp.exe"');
    Il apparaisse bien dans le processus pourtant... (voir PJ).

    ash_rmy.

Discussions similaires

  1. Apache perd le lien avec script Perl
    Par ZebreLoup dans le forum Web
    Réponses: 0
    Dernier message: 07/12/2012, 14h57
  2. exécuter code graphviz avec script perl ?
    Par Caro81 dans le forum Langage
    Réponses: 12
    Dernier message: 06/05/2010, 09h28
  3. probleme avec script perl grab_tv_fr.pl
    Par ZiMo dans le forum Langage
    Réponses: 6
    Dernier message: 30/11/2005, 17h12
  4. Réponses: 6
    Dernier message: 23/05/2005, 08h33
  5. [langage] Probleme avec caractère '$' dans script Perl
    Par zouetchou dans le forum Langage
    Réponses: 11
    Dernier message: 24/07/2004, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo