Faire de python entrer le mot de passe lors de l'exécution d'un script csh
Je suis en train d'écrire un script python qui exécute un script csh dans Solaris 10. Le csh script invite l'utilisateur à entrer le mot de passe root (qui, je le sais), mais je ne suis pas sûr de savoir comment faire le script python répondre à l'invite de commandes avec le mot de passe. Est-ce possible? Voici ce que j'utilise pour exécuter le script csh:
import commands
commands.getoutput('server stop')
- J'avais laissé de côté conduite, la nouvelle version fonctionne...
- Première fois pour voir les commandes en cours d'utilisation. BTW, vous pouvez l'utiliser le getpass module de saisir un mot de passe en ligne de commande sans l'afficher.
- Obligatoire lien
- Obligatoire réplique à la "csh bashing" lien
Vous devez vous connecter pour publier un commentaire.
Ont un look à la pexpect module. Il est conçu pour traiter avec des programmes interactifs, qui semble être votre cas.
Oh, et n'oubliez pas que le codage de la racine du mot de passe dans un shell ou un script python est potentiellement une faille de sécurité 😀
Utilisation sous-processus. Appel Popen() pour créer vos processus et de l'utilisation de communiquer() pour envoyer le texte. Désolé, j'ai oublié d'inclure le TUYAU..
Vous feriez mieux de le faire éviter le mot de passe et essayer un régime comme sudo et sudoers. Pexpect, mentionné ailleurs, ne fait pas partie de la bibliothèque standard.
A fait le tour! Pexpect règles!
Ajouter
input=
dansproc.communicate()
le faire fonctionner, pour les gars qui aiment utiliser la lib standard.Devrait être en mesure de passer en tant que paramètre. quelque chose comme:
Cela semble mieux fonctionner:
Mais pas à 100% encore. Même si "mot de passe" est le bon mot de passe, je suis toujours su: Désolé de retour de la csh script lorsqu'il essaie de passer en root avec su.
Pour éviter d'avoir à répondre à la question de Mot de passe dans le script python, je vais juste vous exécutez le script en tant que root. Cette question est toujours sans réponse, mais je pense que je vais le faire de cette façon pour l'instant.