Conectar SFTP con CURL

Post Reply
User avatar
cmsoft
Posts: 1297
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina
Been thanked: 2 times

Conectar SFTP con CURL

Post by cmsoft »

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


#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
albeiroval
Posts: 383
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: Conectar SFTP con CURL

Post by albeiroval »

Hola, Cesar Gomez.

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

Albeiro Valencia
www.avcsistemas.com
User avatar
cmsoft
Posts: 1297
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina
Been thanked: 2 times

Re: Conectar SFTP con CURL

Post by cmsoft »

Hola!
No, no pude hacerlo conectar con SFTP.
hmpaquito
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Conectar SFTP con CURL

Post by hmpaquito »

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
User avatar
albeiroval
Posts: 383
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: Conectar SFTP con CURL

Post by albeiroval »

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
hmpaquito
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Conectar SFTP con CURL

Post by hmpaquito »

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
User avatar
albeiroval
Posts: 383
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: Conectar SFTP con CURL

Post by albeiroval »

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


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
hmpaquito
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Conectar SFTP con CURL

Post by hmpaquito »

Lo siento, no lo he usado, no tengo ejemplo funcional
User avatar
cmsoft
Posts: 1297
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina
Been thanked: 2 times

Re: Conectar SFTP con CURL

Post by cmsoft »

Me interasa este tema, si alguien se ha conectado a un SFTP y quiere compartirlo, desde ya muy agradecido.
pepe_garcia
Posts: 27
Joined: Thu Feb 20, 2014 12:40 pm

Re: Conectar SFTP con CURL

Post by pepe_garcia »

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

Post by pepe_garcia »

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
hmpaquito
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Conectar SFTP con CURL

Post by hmpaquito »

Por favor muestra el fuente, la parte del envio, tergiversando claves y direcciones electronicas
pepe_garcia
Posts: 27
Joined: Thu Feb 20, 2014 12:40 pm

Re: Conectar SFTP con CURL

Post by pepe_garcia »

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
hmpaquito
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Conectar SFTP con CURL

Post by hmpaquito »

Vale Pepe.

Pillate el programa WinSCP y metele tus parametros de conexion SFTP a ver si por ahi funciona
Post Reply