2016-09-21 12 views
0

Мне нужно запустить команду из моего скрипта python в качестве пользователя root (просто sudo wont work), поэтому я использую os.system ('sudo su '), и я могу получить доступ root. Но снова мне нужно вернуться к пользователю. Я попробовал os.system ('exit'), но он все равно не выходит из корневого входа в систему для входа пользователя в систему. Мне нужно вручную ввести exit в терминал, чтобы вернуться к логину пользователя. Может ли кто-нибудь помочь мне в том, как это сделать в python?Возврат от root к пользователю с помощью python os.system ('kill') не работает

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

Вы можете использовать «команду> файл» 'Sudo Баш -сов' запустить одну команду с выходом в переадресовать корень. Это легко сделать в функции – slezica

+0

@slezica Я не совсем понимаю это. Если вы не возражаете, можете ли вы показать мне пример того, как это сделать в сценарии python выше? – bobdxcool

+0

оставил пример ниже :) – slezica

ответ

0

Ваша команда echo не работает с sudo, поскольку перенаправление > /sys/bus/... производится вашим собственным пользователем, а затем к sudo echo, но корень необходим для доступа к файлу в 1-ом месте.

Попробуйте использовать sudo bash -c 'command > redirect' вместо этого, который приобретет права суперпользователя перед тем пытается перенаправлять:

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^