Façon la plus simple pour exécuter un script expect de Python

Je suis en train de charger mon installation de Python pour exécuter une Attendre script "myexpect.sh":

#!/usr/bin/expect
spawn ssh usr@myip
expect "password:"
send "mypassword\n";
send "./mycommand1\r"
send "./mycommand2\r"
interact

Je suis sur Windows, afin de ré-écrire les lignes dans le fait de s'Attendre script en Python ne sont pas une option. Toutes les suggestions? Est-il rien qui puisse l'exécuter de la manière "./myexpect.sh" fait à partir d'un shell bash?


J'ai eu quelques succès avec les sous-processus de commande:

subprocess.call("myexpect.sh",  shell=True)

Je reçois l'erreur:

myexpect.sh n'est pas une application Win32 valide.

Comment puis-je contourner ce problème?

  • ...demandez-vous comment faire pour exécuter un script bash sur Windows sans bash? Je n'ai même pas voir où Python vient ici. En outre, vous devriez probablement donner .txt extensions de vos scripts shell (.sh si quoi que ce soit)
  • dans un sens, oui: je voudrais automatiser l'exécution de ce script, à partir d'un .py fichier - quand je lance le .py fichier, le fait de s'attendre script sera appelé et exécuté en tant que partie de la séquence de l' .py fichier.
  • Il semble que vous n'êtes pas à la recherche d'un python solution à tous les (autres que le fait qu'il est contrôlé à partir de Python). Vous voulez simplement un programme sous Windows qui sera en mesure de lire le script expect et de l'exécuter, à droite?
  • Je suis à la recherche d'un python de la solution - la myexpect.sh fonctionne très bien si je l'exécuter à partir d'un terminal cygwin, mais ce n'est pas mon objectif final. Ce que je voudrais faire est de mon script python pour exécuter mon .sh script à chaque fois que je lance mon .py fichier, donc je n'ai pas pour l'exécuter à partir d'un terminal en main avant que je lance mon .py fichier.
  • Mais il semble que votre question n'a pas vraiment de Python-spécifiques; vous êtes juste dire le système d'exploitation d'exécuter un fichier comme un programme, et une solution qui permettra à l'OS pour exécuter ce fichier (le plus souvent par le biais d'un port Windows de s'Attendre) serait de travailler avec toutes les langues, pas seulement en Python. Ou serait également la lecture du script et de l'interpréter par vous-même en Python serait-il acceptable?
  • La meilleure solution est quelque chose comme pexpect fonctionnalité, où je peux écrire le Attendez lignes à droite dans mon .py code. Il n'y a pas de pexpect bibliothèque pour windows (bien que winpexpect peut se révéler fructueuse), et sous-processus est un nœud gordien à mon niveau de python expertise. J'espérais qu'il me manquait quelque chose d'évident comme "exécuter myexpect.sh" mais je ne pense pas que c'est simple.
  • Ouais, il n'y a pas un programme pour l'exécution s'attendre à des scripts emballés avec Windows, et il n'a pas vraiment l'air comme il y a un compatible Windows paquet Python pour le faire.
  • il semble que vous voulez ce: subprocess.call(r"c:\path\to\cygwin\expect.exe", "myexpect.sh"]). Votre script peut être mis en œuvre à l'aide de fabric

InformationsquelleAutor gortron | 2012-06-22