Cómo copiar archivos desde Linux al servidor de Windows usando c

Tengo que crear un progtwig en C que se ejecutará en el servidor Linux. Tomará información de la base de datos Oracle, creará un archivo local y luego copiará ese archivo al servidor de Windows. Sé cómo crear un archivo local en el servidor Linux. Pero, ¿cuál es la forma de copiarlo al servidor de Windows desde C?

Monte Windows Share primero y luego cree el archivo en el directorio montado.

Depende del tipo de conectividad entre las dos máquinas y del nivel de seguridad que debe alcanzar.

El escenario más simple sería con las dos máquinas en la misma LAN y sin seguridad particular. En este caso la posible solución sería:

  • Samba : comparta un directorio en la máquina Win, instale / configure Samba en el cuadro de Linux. El progtwig C verá el disco compartido como un disco local en una ruta específica (por ejemplo, / win / share).

  • NFS : Alternativamente, puede exportar un directorio en Linux usando NFS e instalar / configurar un producto NFS en la máquina Win. Veo esto como una segunda opción, si Samba no se puede usar por ningún motivo (por ejemplo, seguridad / autenticación).

  • ftp : necesitará un servidor ftp en la máquina con Windows. También será más difícil copiar el archivo a través de un progtwig en C. Si no me equivoco, el cliente ftp en Linux es interactivo y se supone que no debe utilizarse en un script (o mediante otro progtwig), pero debe verificarlo.

  • http : necesitará un servidor http en la máquina con Windows y una página que permita la carga (IIS más alguna página asp, debería ser suficiente) y use libcurl para dialogar.

Un escenario más complicado cuando la seguridad es una conclusión, requeriría el uso de scp o sftp over y la conexión SSL. También el libcurl con https podría proporcionar una solución lo suficientemente buena.

Mi consejo es: pruebe Samba primero y vea si satisface sus necesidades, todas las demás opciones requerirán más trabajo para usted como progtwigdor.

¿Quizás podrías simplemente usar smbclient? No es necesario configurar ningún servidor ni nada, solo tiene un disco compartido de algún tipo en el servidor.

smbclient //myserver/my_directory  -U [domain/] 

Luego puede simplemente ‘poner’ y ‘obtener’ los archivos que desee entre el directorio actual en la caja de Linux y su servidor de Windows.

 put my_file_to_copy.dat 

Eso es todo.

Sí, simplemente monte el cuadro de ventanas utilizando el sistema de archivos de red que desee (por ejemplo, Samba) y copie el archivo en ese directorio utilizando primitivas de E / S normales.

marca

O utilizar FTP. Hay muchas bibliotecas FTP que puedes vincular a tu código C de Linux.

La máquina de Windows debería proporcionar un medio para aceptar este comportamiento primero (FTP viene a la mente). Puede desarrollar una aplicación para ejecutar en Windows Machine para aceptar el archivo, pero más fácil es usar uno de los ya desarrollados.

Filezilla es un ejemplo.

Para la pregunta real, cómo cargar el archivo, cualquier cliente ftp haría el truco.

¿Qué hay de usar SMTP y enviarlo por correo?