Fabric - не может запускать команды после переключения пользователя

Я был недавно представлен к ткани и пытаюсь приблизиться к следующему:

  1. получить доступ к удаленному хосту
  2. су корень
  3. выполнить команду, например сменить пароль для нескольких пользователей
  4. сделанный! Обратите внимание, что я не могу использовать 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 -")
Другие вопросы по тегам