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

Windows 7 Discussion :

Executer un programme Windows depuis un serveur Linux


Sujet :

Windows 7

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Points : 19
    Points
    19
    Par défaut Executer un programme Windows depuis un serveur Linux
    Bonjour,

    Je cherche un moyen d'executer un programme Windows (sur une machine Windows) depuis un serveur Linux.

    Actuellement j'ai une application qui tourne sous un serveur web. A l'aide d'une librairie WMI, et de PHP, j'arrive à recuperer des informations sur les machines Windows, et à tuer des processus (Le bon vieux tasklist /F ). Sauf la creation d'un process me pose quelques soucis: Can't create process (le nom du process).

    Je viens donc vers vous, je sais pas si je pose ma question au bon endroit, pour savoir si vous avez une technique, un moyen de pouvoir exécuter un programme Windows, sur une machine Windows, depuis un serveur Linux

    (Le serveur Linux envoie des ordres aux machines Windows: tuer le processus X, lancer le processus Y, etc ...). Ces ordres sont effectués en local sur les machines.

    Si vous avez des questions, n'hésitez pas.

    Merci

  2. #2
    Membre averti Avatar de diallomad
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 164
    Points : 364
    Points
    364
    Par défaut
    Citation Envoyé par SuperKnacky Voir le message
    Le serveur Linux envoie des ordres aux machines Windows: tuer le processus X, lancer le processus Y, etc ...). Ces ordres sont effectués en local sur les machines.
    Si tu n'as pas beaucoup de machines sous Windows tu peux installer un "terminal"( Cygwin, mysysGit..) sur Windows et utiliser ssh pour "ordonner" comme tu dis.
    Le chemin de la réussite n'a jamais été une courbe stable tant qu'on respire dans les mêmes fautes sans fin.
    Thomas Sankara

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par diallomad Voir le message
    Si tu n'as pas beaucoup de machines sous Windows tu peux installer un "terminal"( Cygwin, mysysGit..) sur Windows et utiliser ssh pour "ordonner" comme tu dis.

    Salut,

    Alors ta solution n'est pas viable pour mon cas. 50 machines à l'heure actuelle...

    Admettons que je veuille démarrer sur une vingtaine de machine calc.exe. Je veux que la fenêtre pop à l'utilisateur (et pas que le processus calc.exe dans le taskmgr)

  4. #4
    Membre averti Avatar de diallomad
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 164
    Points : 364
    Points
    364
    Par défaut
    Citation Envoyé par SuperKnacky Voir le message
    Salut,
    Alors ta solution n'est pas viable pour mon cas. 50 machines à l'heure actuelle...
    J'avoue que c'est pas pratique de déployer le terminal sur 50 machines.

    Citation Envoyé par SuperKnacky Voir le message
    Admettons que je veuille démarrer sur une vingtaine de machine calc.exe. Je veux que la fenêtre pop à l'utilisateur (et pas que le processus calc.exe dans le taskmgr)
    Tu peux faire un script pour lancer le processus de ton choix sur des machines ciblées.
    Le chemin de la réussite n'a jamais été une courbe stable tant qu'on respire dans les mêmes fautes sans fin.
    Thomas Sankara

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Points : 19
    Points
    19
    Par défaut
    J'y ai pensé ... Ordonné à PHP d'exec un fichier .bat qui se trouve en local sur la machine ... Même combat, can't create process...

    A ma disposition, j'ai wine, winexe, PHP et ses libs, WMIC, et d'autre si necessaire

    J'ai lu qu'il y avait des histoires de sessions...

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par diallomad Voir le message
    J'avoue que c'est pas pratique de déploiement le terminal sur 50 machines.



    Tu peux faire un script pour lancer le processus de ton choix sur des machines ciblées.
    J4viens de relire ton post. Tu penses a quoi exactement quand tu dis : "Tu peux faire un script pour lancer le processus de ton choix sur des machines ciblées." ?

  7. #7
    Membre averti Avatar de diallomad
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 164
    Points : 364
    Points
    364
    Par défaut
    Salut,
    Vu que tu disposes de wine, tu peux faire un script batch et l’exécuter sous linux avec wine.

    J'utilise PSEXEC pour exécuter les processus sur les machines distantes mais je sais pas s'il fonctionne sous wine.

    Le script doit prendre en paramètre la liste des machines et le processus à exécuter. Avec un fichier contenant la liste des machines ainsi que le login, et un numéro attribué à chaque machine pour faciliter l'appel.

    Code BATCH : Sélectionner tout - Visualiser dans une fenêtre à part
     monScript 1-20 notepad
    Le chemin de la réussite n'a jamais été une courbe stable tant qu'on respire dans les mêmes fautes sans fin.
    Thomas Sankara

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Points : 19
    Points
    19
    Par défaut
    Pour les psTools, sous Unix tu peux utiliser winexe. Il part du même principe que Psexec, mais porté sous Unix. Psexec n'est pas compatible à 100% avec Wine.

    Je vais essayer avec psexec, voir si j'ai toujours des erreurs "Can't create process".

    Par contre, excuse moi, mais je n'ai pas compris ton principe avec le script batch pour l'executer sous Linux.

    Pour l'instant, je regarde du côté de ssh ... Si c'est la seule solution qui me permet de faire ca, je m'arrangerais pour deployer du SSH sur les machines existantes et à venir ...

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Points : 19
    Points
    19
    Par défaut
    Premier retour sur la méthode en SSH. Apparement le processus n'apparait que dans le taskmgr ... Or j'aimerais obtenir la fenetre qui "pop" chez l'utilisateur ... Est-ce possible ?

  10. #10
    Membre averti Avatar de diallomad
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 164
    Points : 364
    Points
    364
    Par défaut
    Citation Envoyé par SuperKnacky Voir le message
    Apparement le processus n'apparait que dans le taskmgr ... Or j'aimerais obtenir la fenetre qui "pop" chez l'utilisateur ... Est-ce possible ?


    Tu n'arrives pas à retrouver le processus vient ssh?
    Le chemin de la réussite n'a jamais été une courbe stable tant qu'on respire dans les mêmes fautes sans fin.
    Thomas Sankara

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Points : 19
    Points
    19
    Par défaut
    Je vois le processus server.exe qui est dans le taskmgr. Sauf que j'aimerais avoir l'application en mode graphique qui soit lancé chez l'utilisateur.

  12. #12
    Membre averti Avatar de diallomad
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 164
    Points : 364
    Points
    364
    Par défaut
    Bon, ne sachant pas ce que tu lances comme processus, il m'est difficile de dire quelque chose. Qu'est ce que ça donne si tu lances un truc natif (notepad, calc...)?
    Le chemin de la réussite n'a jamais été une courbe stable tant qu'on respire dans les mêmes fautes sans fin.
    Thomas Sankara

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Points : 19
    Points
    19
    Par défaut
    Idem, je le vois dans le taskmgr, mais rien niveau graphique.

    En fait, server.exe est un soft qui permet de faire du rendu d'image en reseau. Sauf, que ce soft doit etre lancé, et visible pour que les utilisateurs puissent couper "leur" server et donc réutiliser leur machine convenablement (lancer un rendu fait grimper le proc à 100% ^^).

    En tout cas, merci de te pencher sur mes attentes !

  14. #14
    Membre averti Avatar de diallomad
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 164
    Points : 364
    Points
    364
    Par défaut
    Pas besoins de remercier
    Est ce que tu peux poster le script de lancement du processus?
    Le chemin de la réussite n'a jamais été une courbe stable tant qu'on respire dans les mêmes fautes sans fin.
    Thomas Sankara

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Points : 19
    Points
    19
    Par défaut
    Voilà la méthode que j'utilise:

    public function processAction() {
    session_write_close();
    $request = $this->getRequest();
    $type = $request->getPost('type');
    $machine = $request->getPost('machine');
    $handle = $request->getPost('handle');

    if ($handle !== "nothing") {
    $killProcess = 'cat </dev/null | winexe --interactive=0 --ostype=1 -U REALM/LGN%PWD//' . $machine . ' \'taskkill /F /pid '.$handle.'\' ';
    exec($killProcess);
    }

    $startProcess = "ssh cmaSSH@prod_cma 'server.exe'";
    exec($startProcess);
    }
    La manière de tuer le processus est lié à son PID, que je recupère au préalable. Comme tu peux voir, winexe est similaire à PsExec .

    Le truc, si je lance de la même manière server.exe, je me prends un "Error: Can't create Process('server.exe'). Du coups, obligé de passer par une autre manière. avec la méthode que tu vois à $startProcess ne me convient pas, puisque le processus est "caché", enfin il n'y a pas l'interface de l'application.

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Points : 19
    Points
    19
    Par défaut
    J'ai trouvé ceci ... Mais je ne comprends pas la fin ...

    http://superuser.com/questions/53178...rom-ssh-client.

    Il crée un fichier cygwin_screen.cmd dans le dossier Démarrage de Windows qui contient
    @echo off
    C:
    chdir C:\cygwin\bin
    bash --login -i "/home/username/bin/start_screen.sh
    Ensuite, il place start_screen.sh qui sera lu par le terminal et qui contient :

    #!/bin/bash
    screen -dmS "my_screen"
    Par contre, la fin
    $screen -d -r my_screen

    $notepad.exe
    $cygstart my_doc.doc
    J'en fait quoi de ca ? Il appelle ses variables ($screen) ?

  17. #17
    Membre averti Avatar de diallomad
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 164
    Points : 364
    Points
    364
    Par défaut
    Salut,
    Désolé pour cette réponse tardive, j'ai eu une journée assez remplie.
    La dernière partie du code doit être utiliser sur le client ssh(le serveur linux dans ton cas) après l'établissement de la session.
    Les autres parties sont pour le serveur ssh(les 50 Windows ).
    Le chemin de la réussite n'a jamais été une courbe stable tant qu'on respire dans les mêmes fautes sans fin.
    Thomas Sankara

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Points : 19
    Points
    19
    Par défaut
    Salut diallomad,

    Je vais regarder tout ca aujourd'hui je pense. J'avais pas saisi que le $ representait son bash ...

    Oh que le wkd se fait attendre

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Points : 19
    Points
    19
    Par défaut
    J'ai regardé et ca ne semble pas être ce que je cherche.

    Plus j'avance plus j'me dis que ce que je cherche à faire, qui n'a rien de compliqué en soit je suppose, s'avère réellement compliqué.

    J'veux juste executer, depuis une machine Linux, un processus qui s'appelle server.exe sur une machine Windows et que l'interface graphique de l'application soit la.
    Un peu comme si je lancais calc sur la machine Windows et que la calculatrice soit sur l'écran de la machine Windows (et pas que le process).

  20. #20
    Membre expérimenté
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Points : 1 394
    Points
    1 394
    Par défaut
    il existe des clients wmi sous linux et windows supporte wmi. WMI contient une classe process pour la gestion de processus qui permet de les manipuler.

    Regarde ça

    http://www.krenger.ch/blog/wmi-commands-from-linux/


    par contre tu ne peux pas lancer de processus interactif avec le bureau utilisateur, car cela correspond à une faille de sécurité.

    Je pense que ce que psexec fait c'est d'utiliser le partage administratif pour envoyer un binaire bâti là dessus: http://msdn.microsoft.com/en-us/libr...02(VS.85).aspx

    EDIT:
    des détails sur le fonctionnement de psexec: http://windowsitpro.com/systems-management/psexec
    à la fin tu verras que lorsque psexec est lancé il installe d'abord un service sur la machine distante pour recevoir des ordres à distance

Discussions similaires

  1. Executer un programme RPG depuis une classe JAVA
    Par AnneCa dans le forum JDBC
    Réponses: 3
    Dernier message: 18/02/2018, 12h14
  2. Programme Windows avec Wine pour Linux
    Par ValyGator dans le forum C++
    Réponses: 3
    Dernier message: 14/01/2010, 15h48
  3. executer un programme windows
    Par m0ul3sh0t dans le forum Langage
    Réponses: 8
    Dernier message: 30/10/2009, 13h56
  4. Réponses: 3
    Dernier message: 11/12/2006, 18h27
  5. [Système] Executer un programme externe depuis un scripte php
    Par Scorpion Rouge dans le forum Langage
    Réponses: 1
    Dernier message: 24/01/2006, 11h59

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