ssh с использованием python без ключей RSA

Новичок в Stackoverflow, так что сначала привет.

Я работаю над небольшим проектом для моей школы, который должен быть пользовательским графическим интерфейсом (написанным на python в качестве учебного задания для меня, так как я никогда не использовал python) для программы Unison с открытым исходным кодом. попытка разрешить учащимся и персоналу синхронизировать папку дома и в школе, запустив эту программу с минимальным вводом данных (если хотите, с защитой от идиотов).Предполагается, что интерфейс должен состоять только из школьного имени пользователя и пароля и gui-оболочка должна просто отправить имя пользователя и пароль в Unison и синхронизировать их.

Проблема в том, что Unison, в свою очередь, запускает SSh и запрашивает пароль, но метод python subprocess.communicate(input) не позволяет ssh получить пароль. понял, что ssh будет принимать ввод только с терминала, и я не могу понять, как меня обмануть т. Я читал кое-что об использовании псевдотерминала, но я все еще в тупике. Ключи RSA были бы идеальным решением, но их создание и последующее размещение на удаленном сервере по-прежнему требует от меня входа в систему с паролем хотя бы один раз, и для этого потребуется решение вышеперечисленного или терминал, который не является идиотским.

def startSync(self):
    '''
    '''
    userName = self.userNameIn.get()
    userPass = self.userPassIn.get()
    localDir = "/Users/localuser/syncFolder/"
    remoteDir = " ssh://schoolServer/remotesyncFolder" #for testing purposes, I set this to my own home machine which logs into my own account if I don't provide me@myserver.net
    unisonExecRemotePath = " -servercmd /Users/RemoteMe/unison" #unison is the unix executable responsible for launching unison on the remote system
    silenceCmdPrompts = " -silent" #keeps unison from displaying directory differences and asking if its okay to sync
    executionString = "./unison" + localDir + remoteDir + unisonExecRemotePath + silenceCmdPrompts

   mainProcess = subprocess.Popen(executionString,shell = True, stdin = subprocess.PIPE)
   mainProcess.communicate(userPass)

Строки выполнения отлично работают в этом терминале, если я вставлю их туда. И любые общие советы по Python также будут оценены, если вы так склонны.

Спасибо!

Руководство пользователя Unison: http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html

Изменить: я также должен отметить, что, хотя я В настоящее время я разрабатываю под OSX и Linux, в конечном итоге мне придется сделать эти окна совместимыми, поскольку большинство учеников моей школы используют Windows в качестве своей основной (или единственной) машины.

5
задан Jtgrenz 11 May 2012 в 16:49
поделиться