Connexion à distance à Windows à partir d’Ubuntu

J’ai un programme Python que j’utilise sous Ubuntu sur une machine locale. Au cours du programme, je me connecte à deux machines distantes: l’une exécutant Ubuntu et l’autre exécutant Windows. J’ai les adresses IP, les noms et les mots de passe pour se connecter à ces machines. La machine locale envoie une commande aux machines distantes et les machines distantes envoient une réponse. En ce moment, j’essaie juste de faire en sorte que les machines distantes renvoient «bonjour» à la machine locale. Je peux accéder à distance à ces deux machines sur la ligne de commande depuis mon ordinateur local en utilisant:

sshpass -p password ssh -X name@ipaddress 

mot de passe , nom et adresse IP sont correctement renseignés pour chaque machine. Je sais donc que je peux me débrouiller dans les deux machines. De là, je peux exécuter n’importe quelle commande comme si j’étais sur cette machine localement.

Cependant, je voudrais le faire depuis mon programme en envoyant une simple instruction echo 'hello' . Je peux accomplir cela avec le serveur Ubuntu distant avec les éléments suivants:

 from subprocess import Popen, PIPE cmd = ["sshpass", "-p", password, "ssh", "-X", name+"@"+ipaddress, "echo 'hello'"] ssh = Popen(cmd, stdout=PIPE, stderr=PIPE) print ssh.stdout.readlines() 

Le mot de passe , nom et adresse IP sont des variables qui sont déjà définies par ce point. Cela fonctionne sur le serveur distant Ubuntu où il renvoie la liste suivante:

 ['hello\n'] 

C’est bien, mais quand je tente la même chose sur le serveur Windows, je reçois une liste vide:

 [] 

J’ai essayé différentes commandes et j’ai toujours une liste vide. Y a-t-il autre chose ou différent que je dois faire lorsque je me connecte au serveur Windows? Merci d’avance.

J’ai regardé le stderr et cela inclut la liste suivante:

 ['X11 forwarding request failed on channel 0\r\n', 'exec request failed on channel 0\r\n'] 

Lorsque je n’inclus pas le tag -X, je reçois seulement la deuxième erreur:

 ['exec request failed on channel 0\r\n'] 

La machine cible n’a probablement pas de commandes Linux comme installées. Installez quelque chose comme Cygwin sur la machine Windows.