Page 1 of 1
Conectar SFTP con CURL
Posted: Tue Sep 28, 2021 12:45 pm
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
Re: Conectar SFTP con CURL
Posted: Tue Feb 22, 2022 1:15 pm
by albeiroval
Hola, Cesar Gomez.
Pudiste hacer trabajar CURL con un servidor SFTP ?
Re: Conectar SFTP con CURL
Posted: Tue Feb 22, 2022 3:33 pm
by cmsoft
Hola!
No, no pude hacerlo conectar con SFTP.
Re: Conectar SFTP con CURL
Posted: Tue Feb 22, 2022 3:40 pm
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
Re: Conectar SFTP con CURL
Posted: Tue Feb 22, 2022 4:56 pm
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".
Re: Conectar SFTP con CURL
Posted: Tue Feb 22, 2022 6:21 pm
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#p240852Aquí un ejemplo para FTP y con un pequeño cambio, para SFTP:
https://groups.google.com/g/harbour-use ... JY7zJoAQAJ
Re: Conectar SFTP con CURL
Posted: Wed Feb 23, 2022 3:20 am
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
Re: Conectar SFTP con CURL
Posted: Wed Feb 23, 2022 8:06 am
by hmpaquito
Lo siento, no lo he usado, no tengo ejemplo funcional
Re: Conectar SFTP con CURL
Posted: Wed Feb 23, 2022 1:14 pm
by cmsoft
Me interasa este tema, si alguien se ha conectado a un SFTP y quiere compartirlo, desde ya muy agradecido.
Re: Conectar SFTP con CURL
Posted: Thu Mar 10, 2022 8:33 am
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
Re: Conectar SFTP con CURL
Posted: Thu Mar 10, 2022 8:37 am
by hmpaquito
Re: Conectar SFTP con CURL
Posted: Thu Mar 10, 2022 10:12 am
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
Re: Conectar SFTP con CURL
Posted: Thu Mar 10, 2022 10:44 am
by hmpaquito
Por favor muestra el fuente, la parte del envio, tergiversando claves y direcciones electronicas
Re: Conectar SFTP con CURL
Posted: Thu Mar 10, 2022 10:56 am
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
Re: Conectar SFTP con CURL
Posted: Thu Mar 10, 2022 11:02 am
by hmpaquito
Vale Pepe.
Pillate el programa WinSCP y metele tus parametros de conexion SFTP a ver si por ahi funciona