Используя следующий код, я не могу получить Fabric для обнаружения приглашения с истекшим паролем при входе в систему. Сеанс не истекает, а параметр abort_on_prompts не запускается. Как я могу настроить Fabric для обнаружения этого состояния?Как обнаружить истекший пароль с использованием Python Fabric?
from fabric.api import env, run, execute
from fabric import network
from fabric.context_managers import settings
def host_type():
with settings(abort_on_prompts=True):
print ("Using abort mode %(abort_on_prompts)s" % env)
result = run('uname -s')
return result
if __name__ == '__main__':
print ("Fabric v%(version)s" % env)
env.user = 'myuser'
env.password = 'user67user'
env.hosts = ['10.254.254.143']
host_types = execute(host_type)
При выполнении данного сценария результатов в подвешенных сценариях, как показано ниже:
Fabric v1.11.1.post1 [10.254.254.143] Executing task 'host_type' Using abort mode True [10.254.254.143] run: uname -s [10.254.254.143] out: WARNING: Your password has expired. [10.254.254.143] out: You must change your password now and login again! [10.254.254.143] out: Changing password for myuser. [10.254.254.143] out: (current) UNIX password:
Спасибо, это хорошее начало в правильном направлении. Впоследствии я узнал о подсказках для другой задачи, которую я создавал для смены пароля. FYI, этот пример не будет работать так же, как в двух вариантах Linux, с которыми я тестировал. Код Fabric использует функцию _endwith для сопоставления, поэтому вам нужно включить конечное пространство, например «Пароль UNIX: Поскольку я не буду знать новый пароль и определенно не хочу случайно установить его, m с помощью подсказок для отправки неверного пароля, что приводит к сбою операции с кодом выхода 10. – scottwed
Продолжение: 'с настройками (подсказки = {'UNIX password:': 'BOGUS'}): host_types = выполнить (host_type) ' – scottwed