Форум сайта python.su
0
добрый день, товарищи змееводы.
Помогите, пожалуйста, разрешить дилему, которая выносит мне мозг. Нужно написать сценарий, который создает два файла, потом изменяет у них владельца, биты доступа и переносит в директорию, заменяя существующие. Все это делается через sudo.
я нашел решение делать все через pexpect. с изменением прав доступа и владельцами проблем нет, делают так:
import pexpect child = pexpect.spawn('sudo chown root:root file.name') child.expect('password') child.sendline('mypassword') child.close()
import pexpect child = pexpect.spawn('sudo cp /home/mydir/* /etc/') child.expect('password') child.sendline('mypassword') child.close()
Офлайн
18
Альтернатива:
сделать скрипт на bash или с использованием sys.subprocess и запускать его через sudo. Хранить пароль в коде скрипта - не очень.
Офлайн
5
не это ли изобретаете?
$python -c 'import os;help(os.chown)'
Офлайн
0
я понимаю, что есть много других вариантов, я не понимаю, почему в одном случае вариант с pexpect отрабатывает, а в другом не отрабатывает.
Офлайн
18
В скрипте, который не работает так и написано?:
sudo cp /home/mydir/*
Отредактировано adray (Ноя. 20, 2012 21:36:15)
Офлайн
0
нет. там два файла находятся, которые скрипт до этого создает.
если я выполняю вручную cp /home/mydir/* /etc/, то все отрабатывает. pexpect почему-то не хочет как нужно с cp работать 
Офлайн