Python pexpect ssh_key как строка вместо пути к файлу
Можно ли передать 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 ответ
К сожалению, я не думаю, что есть такой вариант с 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