Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 20, 2012 19:12:18

kasemsot
Зарегистрирован: 2012-11-15
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

pexpect sudo и рекурсивное копирование директории

добрый день, товарищи змееводы.

Помогите, пожалуйста, разрешить дилему, которая выносит мне мозг. Нужно написать сценарий, который создает два файла, потом изменяет у них владельца, биты доступа и переносит в директорию, заменяя существующие. Все это делается через 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()

или альтернативу предложите. заранее большое спасибо.

Офлайн

#2 Ноя. 20, 2012 20:31:15

adray
Зарегистрирован: 2012-09-15
Сообщения: 123
Репутация: +  18  -
Профиль   Отправить e-mail  

pexpect sudo и рекурсивное копирование директории

Альтернатива:
сделать скрипт на bash или с использованием sys.subprocess и запускать его через sudo. Хранить пароль в коде скрипта - не очень.

Офлайн

#3 Ноя. 20, 2012 20:36:14

d1ffuz0r
От: Moscow
Зарегистрирован: 2011-03-25
Сообщения: 127
Репутация: +  5  -
Профиль   Отправить e-mail  

pexpect sudo и рекурсивное копирование директории

не это ли изобретаете?

$python -c 'import os;help(os.chown)'

Офлайн

#4 Ноя. 20, 2012 20:59:45

kasemsot
Зарегистрирован: 2012-11-15
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

pexpect sudo и рекурсивное копирование директории

я понимаю, что есть много других вариантов, я не понимаю, почему в одном случае вариант с pexpect отрабатывает, а в другом не отрабатывает.

Офлайн

#5 Ноя. 20, 2012 21:35:46

adray
Зарегистрирован: 2012-09-15
Сообщения: 123
Репутация: +  18  -
Профиль   Отправить e-mail  

pexpect sudo и рекурсивное копирование директории

В скрипте, который не работает так и написано?:

sudo cp /home/mydir/*
В home/midir/ есть директории?

Отредактировано adray (Ноя. 20, 2012 21:36:15)

Офлайн

#6 Ноя. 21, 2012 09:14:14

kasemsot
Зарегистрирован: 2012-11-15
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

pexpect sudo и рекурсивное копирование директории

нет. там два файла находятся, которые скрипт до этого создает.
если я выполняю вручную cp /home/mydir/* /etc/, то все отрабатывает. pexpect почему-то не хочет как нужно с cp работать

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version