Новичок в 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 в качестве своей основной (или единственной) машины.