[quote=lmikle]Это, например:
http://leonardorame.blogspot.com/201...sh-client.html
По этому примеру подключение по SSH происходит к оборудованию, но, например, если имя администратора "admin", то на оборудование идет попытка связи с именем "a d m" и естественно не пускают. Если сделать имя администратора просто "A", то все равно не пускает, видимо и пароль подставляется с такими же ошибками, если указать пустой пароль то тоже соединения нет. Работу программы проследил, нигде не нашел, что бы какое-то действие производилось с этими данными - они несколько раз переприсваиваются другим переменным и уходят в вызываемую библиотеку.
Так же не понятно зачем этому synapse клиенту столько различных файлов.
У меня есть другой вариант на базе DelphiCryptlib и cryptlib, которые вызывают функции из файла cl32.dll, более того, все даже работает, можно подключиться к устройству, отправить команду и получить ответ. Только проблема в том, что ответ программа ждет время, указанное в константах этих модулей, и если данные задержатся, то будут обрезаны. Кроме всего иногда данные приходят с мусором, или приходят совсем другие, как будто в буфере где-то затерялись. То есть для практического применения не годится.
Код:
cryptInit;
SSH := SSH_Client('192.168.0.1', 'admin', '12345');
if SSH = nil then
Exit;
Form1.Memo1.Lines.Add('Ok create SSH');
SleepX(100);
SSH.FlushData; // из доки понял, что обязателен вызов перед использованием PopData
SleepX(100);
LenData := 10000;
BytePoped := SSH.PopData(addr(Data), LenData);
Form1.Memo1.Lines.Add(Data); // тут приветствие читаем
Form1.Memo1.Lines.Add(IntToStr(BytePoped));
Form1.Memo1.Lines.Add('------ОТПРАВЛЯЕМ КОМАНДУ--------');
Data := '/export compact'#13#10;
LenData := 20;
SSH.PushData(addr(Data), LenData, BytePushed);
Form1.Memo1.Lines.Add(IntToStr(BytePushed));
SleepX(1000);
Form1.Memo1.Lines.Add('------ПОЛУЧАЕМ ОТВЕТ--------');
SSH.FlushData;
Form1.Memo1.Lines.Add('------БЕРЕМ ДАННЫЕ--------');
SleepX(500);
LenData := 10000;
BytePoped := SSH.PopData(addr(Data), LenData);
Form1.Memo1.Lines.Add(Data);
Form1.Memo1.Lines.Add(IntToStr(BytePoped));
FreeAndNil(SSH); // закругляемся
cryptEnd;