Hier ist mein Code:Python subprocess sudo kehrt Fehler: ERROR: [ 'sudo: sorry, müssen Sie einen tty haben sudo n laufen']
import subprocess
HOST = 'host_name'
PORT = '111'
USER = 'user_name'
CMD = 'sudo su - ec2-user; ls'
process = subprocess.Popen(['ssh','{}@{}'.format(USER, HOST),
'-p', PORT, CMD],
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
result = process.stdout.readlines()
if not result:
print "Im an error"
err = process.stderr.readlines()
print('ERROR: {}'.format(err))
else:
print "I'm a success"
print(result)
Als ich das laufen erhalte ich folgende Ausgabe in meinem Terminal:
dredbounds-computer: documents$ python terminal_test.py
Im an error
ERROR: ['sudo: sorry, you must have a tty to run sudo\n']
ich habe mehrere Dinge ausprobiert, aber ich immer, dass Fehler immer „sudo: sorry, müssen Sie einen tty müssen sudo laufen“. Es funktioniert gut, wenn ich es manuell durch das Terminal mache, aber ich muss das automatisieren. Ich lese, dass ein Workaround sein könnte, '-t' oder '-tt' in meinem ssh-Aufruf zu verwenden, aber ich konnte das noch nicht erfolgreich im Unterprozess implementieren (Terminal hängt nur für mich). Weiß jemand, wie ich meinen Code reparieren oder umgehen kann? Idealerweise würde ich gerne ssh, dann zum sudo-Benutzer wechseln und dann eine Datei von dort ausführen (ich habe ls einfach zu Testzwecken benutzt).
Warum 'sudo su - EC2-Benutzer; ls' statt nur 'sudo -u ec2-user ls'? – miken32