Fabric - не может запускать команды после переключения пользователя
Я был недавно представлен к ткани и пытаюсь приблизиться к следующему:
- получить доступ к удаленному хосту
- су корень
- выполнить команду, например сменить пароль для нескольких пользователей
- сделанный! Обратите внимание, что я не могу использовать sudo и не могу напрямую подключиться к удаленному хосту с помощью root. Команды, которые мне нужно выполнить, могут быть выполнены, только если я явно переключу пользователя на root.
Мне удалось приблизиться к основной концепции получения доступа к удаленному хосту и поиграть с некоторыми командами, используя фабрику, но проблема, с которой я столкнулся, заключается в том, что, как только я переключаюсь на root "su root", я не могу выполнить остальные команды, пока не выйду из системы.,
пример того, что я пытаюсь подойти:
def mytask():
with settings(user="root"):
run('whoami')
run('echo "TEST using root user"')
run('echo "ITS WORKING!!!"')
или что-то вроде этого
def mytask():
run ('su root')
run ('passwd testUser')
В обоих случаях после ввода пароля root ничего не будет выполнено, я получу удаленную командную строку, если не вернусь к исходному пользователю. Я видел несколько предложений об использовании "fexpect" для подсказок, но не уверен, что это изменит.
Я занимаюсь разработкой в среде Linux.
1 ответ
Вы должны использовать команду запуска fexpect и fexpect
from ilogue import fexpect
prompt = ['Password', 'mypassword'] # ('prompt', 'answer') Case sensitive
def test():
with fexpect.expecting(prompt):
fexpect.local("su -")