Python pexpect ssh_key как строка вместо пути к файлу - PullRequest
0 голосов
/ 11 февраля 2019

Можно ли передать ssh_key в виде строки вместо файла при соединении с учетными данными ssh?

Мой код: (Это нормально работает с ssh_key в качестве пути к файлу)

self.status = self.ssh.login(self.config['hostname'], 
self.config['username'],
ssh_key='/home/martha/lab/martha.pem')
self.disconnect()
return  {"status":self.status}

И следующее не работает

 self.status = self.ssh.login(self.config['hostname'], 
    self.config['username'],
    ssh_key='-----ssh key content-----')
    self.disconnect()
    return  {"status":self.status}

Возможно ли это, любой видпомощь ценится?

1 Ответ

0 голосов
/ 11 февраля 2019

К сожалению, я не думаю, что есть такая опция с pexpect.Обойти это легко, хотя:

import os
ssh_temp_file = '/tmp/ssh-key.tmp' #Maybe use a dynamic filename using the process number
with open(ssh_temp_file,'w') as fd: 
    fd.write('ssh-key content')

self.status = self.ssh.login(...)
os.remove(ssh_temp_file)

Я бы обернул его в функцию.

def ssh_with_string(self,ssh_key,*ssh_args,**ssh_kwargs):
    ssh_kwargs['ssh_key'] = '/tmp/ssh-key.'+str(os.getpid())+'.tmp'
    with open(ssh_kwargs['ssh_key'],'w') as fd: 
        fd.write(ssh_key)

    self.status = self.ssh.login(*ssh_args,**ssh_kwargs)
    os.remove(ssh_kwargs['ssh_key'])
    return self.status
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...