2016-09-21 4 views
0

Ich muss einen Befehl von meinem Python-Skript als root Benutzer ausführen (nur Sudo wird nicht funktionieren), also verwende ich os.system ('sudo su ') und kann root zugreifen. Aber wieder muss ich zum Benutzer zurückkehren. Ich habe versucht os.system ('exit'), aber es kommt immer noch nicht von root Login zur Benutzeranmeldung. Ich muss den Exit manuell im Terminal eingeben, um zur Benutzeranmeldung zurückzukehren. Kann mir jemand helfen, wie man das in Python macht?Rückkehr von der Wurzel zum Benutzer mit Python os.system ('kill') funktioniert nicht

import os 
import time 
os.system('clear') #clear the terminal 
os.system('sudo eject /dev/sr0') 
time.sleep(2) 
os.system('sudo modprobe option') 
time.sleep(2) 
os.system('sudo su') 
time.sleep(5) 
os.system('echo 2001 7d0e > /sys/bus/usb-serial/drivers/option1/new_id') 
time.sleep(2) 
os.system('exit') 
+0

Sie können "command> file" 'sudo bash -c', um einen einzigen Befehl mit Ausgabe umleiten laufen als Wurzel. Dies ist leicht zu einer Funktion zu machen – slezica

+0

@slezica Ich verstehe das nicht ganz. Wenn es Ihnen nichts ausmacht, können Sie mir bitte ein Beispiel zeigen, wie Sie das oben im Python-Skript tun können? – bobdxcool

+0

links ein Beispiel unten :) – slezica

Antwort

0

Ihr echo Befehl funktioniert nicht mit sudo, da die Umleitung auf > /sys/bus/... von Ihrem eigenen Benutzer gemacht wird, und dann zu sudo echo gegeben, aber root erforderlich ist, um die Datei in dem 1. Platz zuzugreifen.

Versuchen sudo bash -c 'command > redirect' stattdessen verwenden, die Root-Rechte vor versuchen, die Umleitung erwerben:

def sudo(command): 
    return os.system("sudo bash -c '{}'".format(command)) 

sudo('echo foo > /sys/restricted/file') 
Verwandte Themen