Question

Je suis en train de créer un Serveur Telnet à l'aide de Python sur Ubuntu 12.04.Afin d'être en mesure d'exécuter des commandes en tant qu'utilisateur différent, j'ai besoin d'utiliser la su commande, puis demande le mot de passe.Maintenant, je sais que le message est envoyé pour le flux STDERR, mais je n'ai aucune idée de qui stream je suis censé envoyer le mot de passe.Si j'essaie de l'envoyer via STDIN, j'obtiens l'erreur: su: must be run from a terminal.Comment dois-je procéder?

Était-ce utile?

La solution

Si vous voulez vraiment utiliser le système de su au programme, vous aurez besoin de créer un terminal paire, voir man 7 pty, en python, c'est pty.openpty appelez qui vous renvoie une paire de descripteurs de fichiers, un pour vous et un pour la ligue.Ensuite, vous avez à la fourchette, dans le processus de l'enfant changement stdin/out/err esclave fd et exec su.Dans le processus parent vous envoyer et recevoir des données vers de maître fd.Le noyau Linux se connecte ensemble.

Sinon, vous pouvez peut-être imiter su au lieu de cela?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top