De départ des processus à distance dans un réseau Windows
J'ai plusieurs esclaves des machines et un maître de la machine qui, ensemble, d'exécuter une application distribuée. Processus sur chaque esclave de la machine doivent avoir une interface graphique et d'accès au réseau (je pense qu'il serait appelé à un processus interactif). Pour plus de facilité, il serait bien si le maître de la machine peut démarrer/arrêter le processus sur les esclaves des machines.
Ma première idée était d'utiliser WMI et la classe Win32_Process pour démarrer un processus distant, mais après enquête, il a été reveiled que le processus a commencé de cette façon sont non-interactive et isolé, et ne peuvent donc avoir l'interface graphique. Une note dit que l'on peut utiliser Win32_ScheduledJob.Créer pour créer une distance processus interactif, mais il s'exécute sous le compte LocalSystem qui je tiens à éviter (aussi, je n'arrivais même pas à le faire fonctionner correctement).
Ce serait être de bonnes manières pour résoudre ce problème?
Peut-être qu'il est possible de lancer une application d'assistance qui à son tour commence un processus approprié, mais qui semble tout à fait sale.
Edit: PsExec était vraiment maladroit quand je l'ai essayé et lente comme l'enfer (je ne sais pas pourquoi). En regardant de plus à PsExec il semble qu'il installe un service temporaire sur la machine distante pour lancer l'application. Serait-ce la seule façon pour frayer un processus interactif à l'aide d'une identité propre? Dois-je inclure un service d'assistance à l'installation pour les nœuds? Mais même alors, comment pourrais-je communiquer avec elle alors?
OriginalL'auteur gix | 2009-04-02
Vous devez vous connecter pour publier un commentaire.
PsExec fait partie de la sysinternals suite qui peut le faire
http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
Si vos serveurs windows 2008, vous pouvez également utiliser
Les Services Terminal Server Remote App
OriginalL'auteur Ryu
Vous pouvez utiliser la commande "at".
Ouvrir une ligne de commande et tapez
Dans le terminal. Le seul inconvénient est que le temps sur le système distant doit être à l'intérieur de certaines raisonnable delta de la vôtre. Il n'est pas instantanée. Vous devez attendre quelques secondes pour s'assurer de la distance planificateur de ne pas manquer l'évènement entièrement.
Il y a un WMI équivalent à cela, et a la même base mises en garde:
LISTE 3: le Code pour Créer un Processus Interactif sur Windows Server 2003, Windows XP et Win2K SP3 Machines
Je pense que la plupart des autres manières de le faire (sans l'installation de votre propre service) ont été éteints par les différents services packs en raison de vulnérabilités.
OriginalL'auteur Christopher
Les deux suivantes à la suite d'un recours .NET pour exécuter des processus à distance.
À l'aide de WMI
http://weblogs.asp.net/steveschofield/archive/2006/06/06/WMI---start-a-process-on-remote-machine-passing-credentials_2E00_.aspx
Codeproject Exemple
http://www.codeproject.com/KB/IP/RemotingExec.aspx
Les exemples sont exécutés avec les informations d'identification personnalisées & l'exécutable à distance est une Victoire Formulaire d'application.
Espérons que cette aide.
OriginalL'auteur Ganesh R.
Si le enire groupe est raisonnablement sous votre contrôle, il peut être possible de mettre en œuvre ces processus à distance en tant que Services Windows. Un service peut être interactive (pas par défaut) et il peut être contrôlé à distance via le standard Gestionnaire de Contrôle des Services en cours d'exécution sur chaque PC Windows.
Vous ne pouvez pas obtenir aléatoire de l'exécution des services interactifs, mais ici, sur StackOverflow, je suppose que je suis aborder le développeur d'un service.
Je veux obtenir mon auto-écrite service (écrit en C# à l'aide de TopShelf) pour exécuter de manière interactive. Des idées? Voir ici: stackoverflow.com/questions/39721393/...
OriginalL'auteur MSalters
Puis-je vous demander pourquoi l'esclave processus doivent avoir une interface graphique? J'ai une configuration semblable, mais ont besoin d'une interface graphique uniquement lors de la configuration initiale.
De toute façon, voici ce que j'ai fait, mais malheureusement il s'appuie sur les processus en cours d'exécution comme le compte LocalSystem, je comprends que vous essayez d'éviter, si vous avez vraiment besoin de l'interface graphique.
Pour vous donner un peu de contexte, l'application, j'ai eu à distribuer a été Hudson, et c'était une version antérieure où la façon de distribuer les il est en cours d'exécution Java WebStart application, et donc la nécessité d'une interface graphique (au moins pendant la mise en place, pour aider à la résolution des problèmes).
Ce que j'ai fait a été mis en place l'esclave des applications sous forme de services sur l'esclave des machines en utilisant sc.exe (qui est un pain PITA pour obtenir le droit, fort heureusement vous ne le faire une fois). Quelque chose le long des lignes de:
Notez les espaces après les paramètres (binPath= etc), celles-ci sont nécessaires. Notez également que je l'ai trouvé plus facile d'abandonner le "type= interagir" et modifiez manuellement dans la console de service.
Puis sur le master, également à l'aide de sc.exe je démarrer le service à distance:
Et vérifié que le programme était en cours d'exécution sur l'esclave des machines.
Maintenant, dans mon cas, je n'ai pas vraiment besoin de l'interface graphique, autres que pour le dépannage initial. Dès que j'ai tout fonctionne correctement, j'ai simplement configuré le service de l'exécuter sous un compte de service, mais n'est plus en mode interactif.
J'espère que vous trouverez ce utile.
OriginalL'auteur Jack Leow
Il y a un couple de composants que vous allez avoir besoin pour ce faire.
Tout d'abord, vous aurez besoin d'une méthode de communication avec la machine distante.
Deuxièmement, vous aurez besoin de quelque chose sur la machine distante à l'écoute qui peuvent démarrer votre application.
Les autres suggestions ci-dessus utilisent quelque chose de construit pour l'un ou l'autre de ces composants, ce qui est bien, aussi longtemps que les restrictions de l'une de ces solutions sont appropriées.
PsExec semble être le plus prometteur, out-of-the-box solution. Sinon, vous pouvez rouler votre propre application pour écouter les messages simples via TCP/named pipes/whatever et vient se reproduire sous-processus. Le seul inconvénient est que vous devrez être très prudent autour de la sécurité, en particulier si les machines sont exposées publiquement.
OriginalL'auteur kyoryu
Les PSTools suite a été développé par Sysinternals et était si grande, que la société a été rachetée par Microsoft quelques temps plus tard. L'utilisation de ces outils est le meilleur moyen pour accomplir votre tâche.
Je vois que vous avez mentionné un problème avec l'exécution d'applications de manière interactive. Je vous suggérons d'utiliser le commutateur /i pour exécuter l'application interactive. PSTools offre toutes les fonctionnalités que vous recherchez. Vous avez juste besoin de jouer avec les interrupteurs pour obtenir le résultat souhaité.
Je n'ai jamais connu la lenteur que vous décrivez dans mes applications qui utilisent PSTools.
OriginalL'auteur slypete
MPICH2 est souvent utilisé dans le Calcul Haute Performance des clusters et devrait être en mesure de faire ce que vous voulez. Même si vous ne l'utilisez pas pour le passage de messages entre machines, vous pouvez utiliser ses processus de lanceur pour démarrer tous les processus en place à partir de l'appareil maître. Il peut être configuré pour l'authentification comme un particulier de l'utilisateur de Windows sur les machines.
OriginalL'auteur Jim Hunziker