Я пытаюсь выполнить ssh на нескольких машинах, после чего пытаюсь выполнить одну команду, отличающуюся для каждой отдельной машины, и получить полученный результат.Это аутентификация на основе ключей, следовательно, это ssh без пароля.Внедрили его с помощью pexpect, теперь пытаясь решить проблемы с фабрикой:
- Несмотря на то, что модель Кольца доверия была установлена, при написании кода ниже он ожидает пароль:
env.user = 'xyz'
env.hosts = ['10.162.53.53']
run ('ls')
[xyz@10.162.53.53] run: ls
[xyz@10.162.53.53] Пароль для входа в систему для 'xyz':
Как обрабатывать крайние случаи, такие как предупреждения и отказ в разрешении в матрице
Как реализовать ssh без паролей в матрице для нескольких машин.
for host_user in users:
child = spawn('ssh -l %s %s' % (host_user, host_name))
COMMAND_PROMPT = '[$\#]'
try:
i = child.expect([TIMEOUT,
EOF,
'Permission denied ',
'[Pp]assword: ',
'[Yy]es/[Nn]o',
COMMAND_PROMPT])
except:
print("Exception was thrown")
log.error(str(child))
child.close(force=True)
if i == 0:
log.error("ERROR: Timeout Occured !")
log.info(str(child.before) + ' ' + str(child.after))
child.close(force=True)
if i == 1:
log.error("ERROR: reached EOF!")
log.info(str(child.before) + ' ' + str(child.after))
child.close(force=True)
if i == 2:
log.error('Permission denied')
child.close(force=True)
if i == 3:
log.error('Requesting password')
child.close(force=True)
if i == 4:
log.info('RSA key permission')
child.sendline('yes')
child.sendline('command')
child.expect('command_output_pattern')