Найти - Пользователи
Полная версия: pexpect sudo и рекурсивное копирование директории
Начало » Python для новичков » pexpect sudo и рекурсивное копирование директории
1
kasemsot
добрый день, товарищи змееводы.

Помогите, пожалуйста, разрешить дилему, которая выносит мне мозг. Нужно написать сценарий, который создает два файла, потом изменяет у них владельца, биты доступа и переносит в директорию, заменяя существующие. Все это делается через sudo.

я нашел решение делать все через pexpect. с изменением прав доступа и владельцами проблем нет, делают так:
import pexpect
child = pexpect.spawn('sudo chown root:root file.name')
child.expect('password')
child.sendline('mypassword')
child.close()

ну и с chmod точно так же и все работает. однако когда пытаюсь выполнить копирование pexpect вроде бы отрабатывает, но ничего никуда не копирует. ошибок не возвращает. подскажите, что не так делаю.

import pexpect
child = pexpect.spawn('sudo cp /home/mydir/* /etc/')
child.expect('password')
child.sendline('mypassword')
child.close()

или альтернативу предложите. заранее большое спасибо.
adray
Альтернатива:
сделать скрипт на bash или с использованием sys.subprocess и запускать его через sudo. Хранить пароль в коде скрипта - не очень.
d1ffuz0r
не это ли изобретаете?
$python -c 'import os;help(os.chown)'
kasemsot
я понимаю, что есть много других вариантов, я не понимаю, почему в одном случае вариант с pexpect отрабатывает, а в другом не отрабатывает.
adray
В скрипте, который не работает так и написано?:
sudo cp /home/mydir/*
В home/midir/ есть директории?
kasemsot
нет. там два файла находятся, которые скрипт до этого создает.
если я выполняю вручную cp /home/mydir/* /etc/, то все отрабатывает. pexpect почему-то не хочет как нужно с cp работать
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB