Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизПодскажите компонент для delphi для работы с SSH Найти похожие ветки
← →
Wadimka (2012-08-26 01:20) [0]Подскажите компонент для delphi для работы с SSH, ессно халявный
← →
Сергей М. © (2012-08-27 09:29) [1]Обязательно компонент ?
А просто библиотека классов и функций Synapse не спасет ОРД ?
← →
Rouse_ © (2012-08-27 10:24) [2]WinInet
http://msdn.microsoft.com/en-us/library/windows/desktop/aa385331%28v=vs.85%29.aspx
← →
DVM © (2012-08-27 10:39) [3]
> Сергей М. © (27.08.12 09:29) [1]
> Synapse
Там кажется не было SSH.
> Rouse_ © (27.08.12 10:24) [2]
WinInet это же только HTTP и FTP
← →
Сергей М. © (2012-08-27 10:51) [4]
> DVM © (27.08.12 10:39) [3]
Клиент там есть точно.
← →
Rouse_ © (2012-08-27 10:57) [5]
> WinInet это же только HTTP и FTP
http://support.microsoft.com/kb/168151
← →
DVM © (2012-08-27 11:10) [6]
> Rouse_ © (27.08.12 10:57) [5]
Ты SSL и SSH не путаешь часом?
← →
DVM © (2012-08-27 11:20) [7]
> Сергей М. © (27.08.12 10:51) [4]
>
> > DVM © (27.08.12 10:39) [3]
>
>
> Клиент там есть точно.
Че то я не нахожу ни в исходниках ни в списке возможностей:
http://www.ararat.cz/synapse/doku.php/features
Поддержка SSL есть и модули есть, но это же не SSH клиент.
← →
Сергей М. © (2012-08-27 11:37) [8]Юнит прямо так и называется - sshclient.pas.
И в нем объявлен и реализован класс TSSHClient.
← →
Rouse_ © (2012-08-27 11:40) [9]
> Ты SSL и SSH не путаешь часом?
Да, нюанс, поддерживается FTP over SSL, FTP over SSH не робит
← →
DVM © (2012-08-27 12:18) [10]
> Сергей М. © (27.08.12 11:37) [8]
> Юнит прямо так и называется - sshclient.pas.
Может это твой юнит или чей что еще или он раньше был, сейчас его нет:
http://synalist.svn.sourceforge.net/viewvc/synalist/trunk/
← →
Сергей М. © (2012-08-27 12:36) [11]
> DVM © (27.08.12 12:18) [10]
Точно, ты прав - не ихний ..
Я уж и забыл откуда он у меня взялся ..
Ноги растут отсюда:
http://leonardorame.blogspot.com/2010/01/synapse-based-ssh-client.html
← →
AV © (2012-08-27 15:47) [12]мне так хватило
http://delphimaster.net/view/15-1341989915/
← →
avil (2012-08-28 19:31) [13]Бесплатные в неком. целях cryptlib компоненты. В примере с synaps"сом, судя по всему, используются именно они. Путь не пугают названия юнитов, у них действительно SSH описаны в юнитах с SSL.
Из популярных платных есть еще chilkat (для дельфей ActiveX) и blackbox.
← →
Wadimka (2012-08-29 16:06) [14]to AV
Все работает отлично, если код написан в основной форме, то есть в unit1
от на отрез отказывается работать в потоке!
Вылетает ошибка сразу при запуске, что Networking subsystem not available
← →
AV © (2012-08-29 18:43) [15]
> Wadimka (29.08.12 16:06) [14]
А так это ошибка скорее всего :)
зы
Код показывайте
← →
Wadimka (2012-08-29 19:50) [16]вот код, делал по этому
http://delphimaster.net/view/15-1341989915/
в одном проекте, на форме в основном работает, а в потоке нет, DLL возвращает эту ошибку.
Я для пробы сделал 2 отдельных проекта, в одном только через форму, во втором через поток, при вызове, где в функции SSH_Client
метод result.Activate;
в файле DelphiCrypt для cryptlib этот метод вызывает:
procedure TCryptSession.Activate;
begin
SetAttribute(CRYPT_SESSINFO_ACTIVE, 1);
end;
и все, вот тут из потока вылетает, в основной программе работает.
Может что-то нужно в потоке прописать в процедуре запуска?
← →
Wadimka (2012-08-29 20:03) [17]а ну это твой, я понял, щя выложу код потока
← →
Wadimka (2012-08-29 20:17) [18]
unit th_SSH_unit;
interface
uses Classes, sysutils, rxStrUtils, windows, func, variable, cryptlib, DelphiCryptlib;
CONST
LEN_BUFFER=8191;
type
TTH_SSHClass = class(TThread)
//Thread: array of TThread;
private
pStoped:boolean;
pIPToConnect:String;
pLogin:String;
pPass:String;
pTimeOut:integer;
pResultStatus:boolean;
pTH_IDinDim:integer;
pErrorNum:integer;
pSendFirstCommandIslogin:AnsiString;
pCreateNotRun:boolean;
pRetOtvetFirstCommandIslogin:String;
pErrorText:String;
pSSH: TCryptSession;
pData: array[0..LEN_BUFFER] of AnsiChar;
pLenData: Integer;
pBytePushed: Integer;
pBytePoped: Integer;
{ Private declarations }
protected
procedure Execute; override;
function AddToBuffer(AddStr:String):integer;
procedure ClearBuffer;
function SSH_Client(Server, Userid, Pass: string): TCryptSession;
public
property Stoped:boolean read pStoped write pStoped;
property IPToConnect:String read pIPToConnect write pIPToConnect;
property TimeOut:integer read pTimeOut write pTimeOut;
property ResultStatus:boolean read pResultStatus write pResultStatus;
property TH_IDinDim:integer read pTH_IDinDim write pTH_IDinDim;
property ErrorNum:integer read pErrorNum write pErrorNum;
property ErrorText:String read pErrorText write pErrorText;
property SendFirstCommandIslogin:AnsiString read pSendFirstCommandIslogin write pSendFirstCommandIslogin;
property RetOtvetFirstCommandIslogin:AnsiString read pRetOtvetFirstCommandIslogin write pRetOtvetFirstCommandIslogin;
property pLogin:String read pLogin write pLogin;
property pPass:String read pPass write pPass;
property CreateNotRun:boolean read pCreateNotRun write pCreateNotRun;
end;
implementation
uses main;
//=============
function TTH_SSHClass.SSH_Client(Server, Userid, Pass: string): TCryptSession;
begin
result := TCryptSession.Create(CRYPT_SESSION_SSH);
with result do begin
ServerName := Server; { set hostname or IP address }
UserName := Userid; { set user identification }
Password := Pass; { set password }
end;
try
result.Activate; { establish SSH connection to server }
except
{ on E: ECryptError do
begin
pErrorText:=E.Message;
//mmo1.Lines.Add(E.Message);
FreeAndNil(result);
end;
}
end;
end;
procedure TTH_SSHClass.Execute;
begin
pStoped:=false;
ResultStatus:=false;
cryptInit;
try
pSSH := SSH_Client(pIPToConnect, pLogin, pPass); // eia auoa
//ViewMessage("MY="+pSSH.ErrorText);
if pSSH.ErrorText="WSAETIMEDOUT: Function timed out before completion" then begin
pErrorNum:=3; //=====
pErrorText:=pSSH.ErrorText;
end else begin
//======
pSSH.FlushData;
Sleep(50);
PLenData := 255;
ClearBuffer;
pBytePoped := pSSH.PopData(addr(pData), pLenData);
pRetOtvetFirstCommandIslogin:=pData+"~~~~";
ClearBuffer;
if pSendFirstCommandIslogin<>"" then begin
pLenData := AddToBuffer(pSendFirstCommandIsBrutted+#13);
pSSH.PushData(Addr(pData), pLenData, pBytePushed);
pSSH.FlushData;
Sleep(50);
pLenData := LEN_BUFFER;
ClearBuffer;
pBytePoped := pSSH.PopData(addr(pData), pLenData);
pRetOtvetFirstCommandIslogin:=pRetOtvetFirstCommandIslogin+pData+"~~~~";
end;
FreeAndNil(pSSH);
end;
finnaly
CryptEnd;
end;
pStoped:=true;
end;
function TTH_SSHClass.AddToBuffer(AddStr:String):integer;
var
i:integer;
begin
for i:=1 to Length(AddStr) do begin
pData[i-1]:=AddStr[i];
end;
result:=Length(AddStr);
end;
procedure TTH_SSHClass.ClearBuffer;
var
i:integer;
begin
for i:=0 to LEN_BUFFER do pData[i]:=#0;
end;
end.
Запуск:TH_SSHClass:=TTH_SSHClass.create(true);
TH_SSHClass.IPToConnect:="127.0.0.1";
TH_SSHClass.Login="ssh";
TH_SSHClass.passw="123";
TH_SSHClass.freeonterminate:=false;
поток работает не в цикле, просто запустил отработал выход
← →
AV © (2012-08-30 09:10) [19]
> в файле DelphiCrypt для cryptlib этот метод вызывает:
>
> procedure TCryptSession.Activate;
> begin
> SetAttribute(CRYPT_SESSINFO_ACTIVE, 1);
> end;
>
посмотри какую API дергает, почитай, что там на msdn про нее пишут.
Честно сказать, сегодня не охота уже разбираться :)
← →
Wadimka (2012-08-30 19:31) [20]она сразу в DLL обращается
← →
Wadimka (2012-08-31 05:45) [21]AV ну что не смотрел там че да как?
← →
Wadimka (2012-09-01 04:36) [22]ребят помажите плиз!
← →
AV © (2012-09-03 17:11) [23]
> AV ну что не смотрел там че да как?
Смотрел..
Не пойму. То работает, то нет.
Дальше не стал копать. Не охота, да и не пойму зачем это нужно?
← →
DVM © (2012-09-05 14:07) [24]вот, кстати, недавно наткнулся:
https://bitbucket.org/ZeljkoMarjanovic/libssh2-delphi
← →
Wadimka (2012-09-07 21:40) [25]>>Не пойму. То работает, то нет.
Так бывало, что и работает?
какие условия, менял что-нить для работы?
← →
Wadimka (2012-09-07 21:53) [26]>>DVM
СПС сейчас попробую
← →
Wadimka (2012-09-07 23:27) [27]>>DVM
Что-то я вообще не догоню, как с ней (libssh2) работать, или я *нутый или водки сеня перепил
← →
DVM © (2012-09-07 23:48) [28]А что тебе от ssh надо то? Telnet через защищенное соединение?
← →
kilkennycat © (2012-09-08 01:15) [29]
> или я *нутый или водки сеня перепил
не парься. и то и другое.
← →
AV © (2012-09-08 01:54) [30]
> Так бывало, что и работает?
> какие условия, менял что-нить для работы?
нет
практически 1:1 как ты привел, иногда инициируется и работает правильно
← →
Wadimka (2012-09-09 06:15) [31]>>DVM
>>Telnet через защищенное соединение?
да, все верно
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.063 c