Conectar SFTP con CURL

Conectar SFTP con CURL

Postby cmsoft » Tue Sep 28, 2021 12:45 pm

Estimados:
Alguien ha conectado mediante CURL con un servidor SFTP para descargar / subir un archivo?
Lo hago así con FTP y funciona bien
Code: Select all  Expand view  RUN

#include "hbcurl.ch"
#include "fivewin.ch"

function Main()

  curl_global_init()
  callSFTP( "ftp.misitio.com.ar/archivos/miarchivo.jpg" )

   curl_global_cleanup()

return nil

function callSFTP( cServer )
LOCAL curlHandle, cFtpsURL := cServer, cFile, nFSize, cRet, nPort := 21 // En SFTP cambio por 22 o 122 que es el puerto que me abrieron
LOCAL curlErr
cFile := "C:\misdescargas\DOWNLOAD.JPG"

curlHandle:=curl_easy_init()
IF EMPTY(curlHandle)
  MsgStop("Error al iniciar cURL.","Error")  
  RETURN nil
ENDIF
curl_easy_reset( curlHandle )

curl_easy_setopt(curlHandle, HB_CURLOPT_URL, cftpsURL)
curl_easy_setopt(curlHandle, HB_CURLOPT_USERPWD, "usuario:password" )
curl_easy_setopt(curlHandle, HB_CURLOPT_PORT, nPort)

curl_easy_setopt(curlHandle, HB_CURLOPT_FOLLOWLOCATION, .T. )
curl_easy_setopt(curlHandle, HB_CURLOPT_SSL_VERIFYPEER, .F. )
curl_easy_setopt(curlHandle, HB_CURLOPT_SSL_VERIFYHOST, .F. )


curl_easy_setopt(curlHandle, HB_CURLOPT_DOWNLOAD, 1)
curl_easy_setopt(curlHandle, HB_CURLOPT_PROTOCOLS, HB_CURLPROTO_FTP )  // En SFTP cambio por  HB_CURLPROTO_SFTP
curl_easy_setopt(curlHandle, HB_CURLOPT_DL_FILE_SETUP, cFile)


/* Do everything */
curlErr := curl_easy_perform(curlHandle)
 
/* Report any errors */

cRet:=curl_easy_strerror(curlErr)
MsgInfo(cRet)

//Close
curl_global_cleanup( curlHandle )
RETURN nil
 


Pero si cambio el protocolo para un servidor SFTP no me esta funcionando. Siempre me da como respuesta "Unsupported Protocol"
Alguien lo ha hecho con SFTP?

Gracias de antemano
User avatar
cmsoft
 
Posts: 1291
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Conectar SFTP con CURL

Postby albeiroval » Tue Feb 22, 2022 1:15 pm

Hola, Cesar Gomez.

Pudiste hacer trabajar CURL con un servidor SFTP ?
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 379
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: Conectar SFTP con CURL

Postby cmsoft » Tue Feb 22, 2022 3:33 pm

Hola!
No, no pude hacerlo conectar con SFTP.
User avatar
cmsoft
 
Posts: 1291
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Conectar SFTP con CURL

Postby hmpaquito » Tue Feb 22, 2022 3:40 pm

Aunque no lo he usado, creo que el uso de pSftp.exe puede ser lo más rapido de implementar. Luego lo que más control aporta será usar la libreria CUrl.
En este hilo aparecen usos de ambos:
viewtopic.php?f=3&t=40326&hilit=sftp&sid=6f12b5de4a5f32b751ec7cf4502e4cab#p240837
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Conectar SFTP con CURL

Postby albeiroval » Tue Feb 22, 2022 4:56 pm

Hola,
Cesar, gracias, lamentable que no se pueda usar curl para SFTP.
Hmpaquito, probare usando pSftp.exe, con respecto al uso de curl de harbour tal como lo dice Cesar, Siempre me da como respuesta "Protocolo no compatible".
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 379
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: Conectar SFTP con CURL

Postby hmpaquito » Tue Feb 22, 2022 6:21 pm

albeiroval wrote:Hola,
Cesar, gracias, lamentable que no se pueda usar curl para SFTP.
Hmpaquito, probare usando pSftp.exe, con respecto al uso de curl de harbour tal como lo dice Cesar, Siempre me da como respuesta "Protocolo no compatible".



Si se puede. En el hilo que puse, además de la solucion psftp.exe, el maestro Navarro aporta una solucion para conexion por programa. El enlace más directo es este: viewtopic.php?f=3&t=40326&hilit=sftp&start=15#p240852

Aquí un ejemplo para FTP y con un pequeño cambio, para SFTP: https://groups.google.com/g/harbour-use ... JY7zJoAQAJ
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Conectar SFTP con CURL

Postby albeiroval » Wed Feb 23, 2022 3:20 am

hmpaquito,

Este es el codigo que uso, y siempre sale el error "Unsoported protocol".
Uso las siguientes librerias en la compilacion con BorlandC : hbcurls.lib hbcurl.lib libcurl.lib
No se cual version de la libcurl.dll se debe usar para SSH (SFTP), yo uso la siguiente version de dll : libcurl/7.51.0 WinSSL WinIDN

Code: Select all  Expand view  RUN

curl_global_init()

    if !Empty( curl := curl_easy_init() )
       
     curl_easy_setopt( curl, HB_CURLOPT_FTPPORT, 22 )
     curl_easy_setopt( curl, HB_CURLOPT_URL, cUrlDel )
     curl_easy_setopt( curl, HB_CURLOPT_DL_BUFF_SETUP )
     curl_easy_setopt( curl, HB_CURLOPT_USERPWD, _FTPUSER + ":" + _FTPPASS )
     curl_easy_setopt( curl, HB_CURLOPT_USE_SSL, 0 )
     curl_easy_setopt( curl, HB_CURLOPT_PROTOCOLS, HB_CURLPROTO_SFTP )
     curl_easy_setopt( curl, HB_CURLOPT_POSTQUOTE, { "DELE " + cPathFile } )
     curl_easy_setopt( curl, HB_CURLOPT_VERBOSE, .F. )
     
     if ( nResult := curl_easy_perform( curl ) ) == CURLE_OK
         ? "Delete file :", nResult
     else
         ? "Error CURL curl_easy_perform", curl_easy_strerror(nResult), nResult
     endif   

     curl_easy_reset( curl )
     
     curl_easy_cleanup( curl )
     
  endif
       
    curl_global_cleanup()
 


Si tienes un ejemplo funcional con SFTP, podrias ponerlo, por favor
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 379
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: Conectar SFTP con CURL

Postby hmpaquito » Wed Feb 23, 2022 8:06 am

Lo siento, no lo he usado, no tengo ejemplo funcional
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Conectar SFTP con CURL

Postby cmsoft » Wed Feb 23, 2022 1:14 pm

Me interasa este tema, si alguien se ha conectado a un SFTP y quiere compartirlo, desde ya muy agradecido.
User avatar
cmsoft
 
Posts: 1291
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Conectar SFTP con CURL

Postby pepe_garcia » Thu Mar 10, 2022 8:33 am

Buenos días,
Estoy probando ejemplos de SFTP con CURL y me da los siguientes fallos. Se ve que me falta algo y no se que es. Si alguien me puede ayudar. Gracias

Turbo Incremental Link 5.69 Copyright (c) 1997-2005 Borland
Error: Unresolved external '_HB_FUN_CURL_GLOBAL_INIT' referenced from C:\PRO_WIN\1_PRG\2_FTP.OBJ
Error: Unresolved external '_HB_FUN_CURL_EASY_INIT' referenced from C:\PRO_WIN\1_PRG\2_FTP.OBJ
Error: Unresolved external '_HB_FUN_CURL_EASY_SETOPT' referenced from C:\PRO_WIN\1_PRG\2_FTP.OBJ
Error: Unresolved external '_HB_FUN_CURL_EASY_PERFORM' referenced from C:\PRO_WIN\1_PRG\2_FTP.OBJ
Error: Unresolved external '_HB_FUN_CURL_EASY_DL_BUFF_GET' referenced from C:\PRO_WIN\1_PRG\2_FTP.OBJ
Error: Unresolved external '_HB_FUN_CURL_GLOBAL_CLEANUP' referenced from C:\PRO_WIN\1_PRG\2_FTP.OBJ
* Linking errors *

Jose Garcia
pepe_garcia
 
Posts: 27
Joined: Thu Feb 20, 2014 12:40 pm


Re: Conectar SFTP con CURL

Postby pepe_garcia » Thu Mar 10, 2022 10:12 am

Muchas gracias,

Ya lo he hecho y ahora me sale una ventana de infirmacion que me dice "protocolo no soportado". Estoy intentando acceder a un SFTP de ionos.

gRACIAS
pepe_garcia
 
Posts: 27
Joined: Thu Feb 20, 2014 12:40 pm

Re: Conectar SFTP con CURL

Postby hmpaquito » Thu Mar 10, 2022 10:44 am

Por favor muestra el fuente, la parte del envio, tergiversando claves y direcciones electronicas
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Conectar SFTP con CURL

Postby pepe_garcia » Thu Mar 10, 2022 10:56 am

Aqui lo tienes. Solo estoy haciendo pruebas hasta que consiga enlacar para liarme con el resto. Gracias


#include "FiveWin.ch"
#include "hbcurl2.ch"

static oWnd, oTimer, oReader, oTdif, oFTP, oInternet, nDis

//----------------------------------------------------------------------------//

function Main()


local fm:="test" , curl, cul


If ! Empty( curl := curl_easy_init() )
hb_default( @cul, "sftp://usuario:contraseña@direccion_hasta_fichero" )
curl_easy_setopt( curl, HB_CURLOPT_URL, cul )
curl_easy_setopt( curl, HB_CURLOPT_UPLOAD)
curl_easy_setopt( curl, HB_CURLOPT_PROTOCOLS, HB_CURLPROTO_SFTP )
curl_easy_setopt( curl, HB_CURLOPT_UL_FILE_SETUP, "C:\1\TEST.TXT" ) // fichero que va a salvar y donde.
curl_easy_setopt( curl, HB_CURLOPT_INFILESIZE, len(fm) )
curl_easy_perform( curl )
curl_easy_reset( curl )
curl_easy_cleanup( curl )
Endif
curl_global_cleanup()


return nil
pepe_garcia
 
Posts: 27
Joined: Thu Feb 20, 2014 12:40 pm

Re: Conectar SFTP con CURL

Postby hmpaquito » Thu Mar 10, 2022 11:02 am

Vale Pepe.

Pillate el programa WinSCP y metele tus parametros de conexion SFTP a ver si por ahi funciona
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Lailton and 46 guests