Я использую pexpect для отправки этой команды:
fmsadmin list files -s
С помощью этой интерактивной программы
[('username \\(.+\\):', 'userName\n'), ('password:', 'invalidPW\n'),
('username \\(.+\\):', 'userName\n'), ('password:', 'validPW\n')]
Как это:
run( cmd, events=program, timeout=20)
Что заканчивается 4 парами имени пользователя и пароля вместо 2:
username (userName): userName
password:
fmsadmin: Permission denied, please try again.
username (userName): userName
password:
fmsadmin: Permission denied, please try again.
username (userName): userName
password:
fmsadmin: Permission denied, please try again.
username (userName): userName
password:
fmsadmin: Permission denied.
Error: 9 (Access denied)
Что-то не так со структурой интерактивной программы? Может быть, есть другой таймер, чтобы дождаться появления фраз? Почему я получаю 4 пары, когда я программирую только 2 пары. Кстати, для меня каждая из этих небольших программ для имени пользователя и для пароля является отдельными функциями. Когда я делаю версию этой функциональности для 1 пары, она работает. ИОВ:
Это работает:
[('username \\(.+\\):', 'userName\n'), ('password:', 'validPW\n')]
Для интерактивной программы прямо выше я делаю:
[iUserName(), iPassword()]
Интерактивная программа вверху создается следующим образом:
[iUserName(), invPassword(), iUserName(), iPassword()]
Я включаю их только для того, чтобы показать, что согласованные программы генерируются кодом. Я считаю, что выходные примеры - это то, на что мы должны смотреть.