Я пытаюсь использовать модуль TProcess для выполнения ssh, чтобы подключиться к одному из моих серверов и предоставить мне оболочку. Это переписывание того, что было у меня в Ruby, поскольку время выполнения для Ruby очень медленное. Когда я запускаю свою функцию Process.Execute, мне предоставляется оболочка, но она сразу же становится фоновой. Запуск pgrep ssh
показывает, что он работает, но у меня нет к нему никакого доступа, использование fg
не возвращает его. Для этого сегмента код выглядит следующим образом:
if HasOption('c', 'connect') then begin
TempFile:= GetRecord(GetOptionValue('c', 'connect'));
AProcess:= TProcess.Create(nil);
AProcess.Executable:= '/usr/bin/ssh';
AProcess.Parameters.Add('-p');
AProcess.Parameters.Add(TempFile.Port);
AProcess.Parameters.Add('-ntt');
AProcess.Parameters.Add(TempFile.Username + '@' + TempFile.Address);
AProcess.Options:= [];
AProcess.ShowWindow:= swoShow;
AProcess.InheritHandles:= False;
AProcess.Execute;
AProcess.Free;
Terminate;
Exit;
end;
TempFile
— это переменная типа TProfile
, представляющая собой запись, содержащую информацию о сервере. Система каталогизации и поиска работает нормально, но подтягивание оболочки не работает.