Ist es möglich, mit einem Sub -Subprozess mit subprozess.popen zu kommunizieren?

StackOverflow https://stackoverflow.com/questions/250700

  •  05-07-2019
  •  | 
  •  

Frage

Ich versuche ein Python -Skript zu schreiben, das unsere Software verpackt. Dieses Skript muss unser Produkt erstellen und es verpacken. Derzeit haben wir andere Skripte, die jedes Stück einzeln ausführen, die CSH- und Perl -Skripte enthalten. Ein solches Skript wird ausgeführt wie:

sudo mod args

wo Mod ein Perl -Skript ist; Also würde ich in Python tun

proc = Popen(['sudo', 'mod', '-p', '-c', 'noresource', '-u', 'dtt', '-Q'], stderr=PIPE, stdout=PIPE, stdin=PIPE)

Das Problem ist, dass dieses Mod -Skript einige beantwortete Fragen benötigt. Dafür dachte ich, dass das Traditionelle

(stdout, stderr) = proc.communicate(input='y')

würde funktionieren. Ich glaube nicht, dass es funktioniert, weil der Prozess, den Popen kontrolliert, sudo ist, nicht das Mod -Skript, das die Frage stellt. Gibt es eine Möglichkeit, mit dem Mod -Skript zu kommunizieren und es trotzdem durch sudo auszuführen?

War es hilfreich?

Lösung

Ich würde mich für Pexpect entscheiden.

import pexpect
child = pexpect.spawn ('sudo mod -p -c noresource -u dtt -Q')
child.expect ('First question:')
child.sendline ('Y')
child.expect ('Second question:')
child.sendline ('Yup')

Andere Tipps

Ich denke, Sie sollten das entfernen sudo in deiner Popen Rufen Sie an und verlangen Sie den Benutzer von dein Skript zum Typ sudo.

Dies macht außerdem explizit die Notwendigkeit erhöhter Privilegien in Ihrem Skript, anstatt es im Inneren zu verstecken Popen.

Am einfachsten wäre das Ausführen des Steuerungsskripts (das Python -Skript) über das Steuerungsskript sudo. Können Sie das tun oder ist das keine Option?

Wir brauchen weitere Informationen.

  1. Fragt Sudo Sie nach einem Passwort?
  2. Welche Art von Schnittstelle hat das Mod -Skript zum Stellen von Fragen?

Weil diese Art von Dingen nicht als normal über dem Rohr gehandhabt werden.

Eine Lösung für beide könnte sein Pexect, was eher Experte darin ist, lustige Skripte zu bearbeiten, die nach Passwörtern fragen, und verschiedene andere Eingabeprobleme.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top