Реализация ssh без пароля с помощью аутентификации на основе ключей на нескольких удаленных компьютерах с использованием фабрики - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь выполнить ssh на нескольких машинах, после чего пытаюсь выполнить одну команду, отличающуюся для каждой отдельной машины, и получить полученный результат.Это аутентификация на основе ключей, следовательно, это ssh без пароля.Внедрили его с помощью pexpect, теперь пытаясь решить проблемы с фабрикой:

  1. Несмотря на то, что модель Кольца доверия была установлена, при написании кода ниже он ожидает пароль:

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')

...