2015-10-07 5 views
0

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

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

В обоих случаях, как только я вхожу в корневой пароль ничего не получил бы казнены, я хотел бы получить удаленную команду назад, если я не вернусь к исходному пользователю. Я видел несколько предложений об использовании «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 -") 

 Смежные вопросы

  • Нет связанных вопросов^_^