2009-06-02 19 views
7

¿Cuál es el mejor cliente SFTP scriptable gratuito para Windows?¿Cuál es el mejor cliente SFTP scriptable gratuito para Windows?

He visto WinSCP y FileZilla. WinSCP parece bastante buggy (click here), y FileZilla no parece muy scriptable.

¿Alguna sugerencia?

Básicamente lo que quiero hacer es: desde una tarea programada, iniciar sesión en un servidor remoto, extraer todos los archivos y luego eliminarlos del servidor remoto.

+0

¿Realmente probó WinSCP con su configuración? – lothar

+0

Sí, lo probé, ese error que mencioné es el resultado de que lo intenté. – Chris

+3

He solucionado [ese error] (http://winscp.net/tracker/show_bug.cgi?id=433) en WinSCP unos días después de que me lo preguntó (¿qué hace más de 6 años ahora?). –

Respuesta

5

Puede utilizar el cliente de SCP que viene con pscp masilla. Puede usar pscp en la línea de comando como scp en una línea de comandos de Linux.

+0

Acabo de pasar media hora dando una oportunidad. Me quedé atrapado en el mensaje de la huella dactilar clave, no pude encontrar ninguna forma de hacer desaparecer ese aviso en el script. – Chris

+0

ese aviso solo debería aparecer la primera vez que se conecta a esta máquina – Janusz

+0

En realidad, lo solucioné canalizándolo en un archivo de texto de una sola línea con 'n' como único contenido. ¡Todo funciona! – Chris

4

Cygwin. Puede combinar el poder de la línea de comando sftp con la potencia de BASH scripting. ¡Todo eso, en Windows!

+1

Cygwin es una instalación bastante pesada, ¿no? Esperaba una solución one-exe, algo así como winscp portable exe. Ayudaría a suavizar las cosas con los infra chicos. – Chris

+0

Sí. Es una instalación pesada de hecho. He resuelto problemas básicos de scripting con WinSCP. Pero no sé si será útil para scripts muy complejos. No lo he probado. –

+0

@Chris sí - Me niego a usar Cygwin porque es muy pesado. Hay muchas herramientas similares a Unix que se han portado a Windows: forman parte de la colección [GnuWin32] (http://gnuwin32.sourceforge.net/) por lo que estoy muy agradecido. –

0

No es gratuito, pero consulte edtFTPnet/PRO para obtener un motor de script completo que admita SFTP en Windows.

Aquí es un script de ejemplo:

# Sample SFTP script 
set remotehost=edtmobile 
set user=javaftp 
set password=javaftp 
set protocol=sftp 
set localdir=D:\work\tmp 

# connect to the server 
open 

# change dir 
cd remote/test 

# put the local file test.txt to the server as mytest.txt 
put test.txt mytest.txt 

# disconnect 
close 
0

Nota a los demás: Para crear la tarea programada, basta con abrir un editor de texto y escribir el comando pscp. A continuación, guarde el archivo como un archivo .bat. Los capítulos 5 y 6 de la documentación contienen todo lo que siempre quisieras saber sobre el funcionamiento de pscp.

Tenga en cuenta que pscp es bastante particular sobre tener una fuente y un objetivo. Si no los proporciona, pscp simplemente volverá al mensaje de uso de forma predeterminada.

He aquí un ejemplo:

c:\pscp.exe -pw [your password] -batch -sftp [email protected]:/* c:\yourlocation 

En este ejemplo pscp.exe está sentado en la raíz del directorio c XX. -batch deshabilita las solicitudes interactivas para que no interrumpan la tarea automatizada. -sftp fuerza el protocolo sftp, porque en la pregunta se especifica sftp. El comodín:/* devolverá todo en la fuente, y c: \ yourlocation especifica dónde termina en su máquina.

Para programar esto como una tarea automatizada, simplemente abra Tareas programadas. En XP, esto es en Herramientas del sistema. Luego, dirija la tarea al archivo .bat que ha creado, asígnele un tiempo para ejecutarlo y listo.

1

Sé que esto es una pregunta muy antigua, pero echar un vistazo a http://redpark.posterous.com/lftp-for-windows

De cygwin que estoy usando sólo 3 archivos: bash.exe, ssh.exe y cygssp-0.dll. Colóquelos en el mismo directorio que el puerto de redpark de lftp de Windows y vaya a crear scripts.

ejemplo de comandos:

D:\lftp>bash 
bash-4.1# export PATH=. 
bash-4.1# lftp sftp://user:[email protected] 
lftp [email protected]:~> put -c cx160sd.flv 
194749860 bytes transferred in 112 seconds (1.67M/s) 
lftp [email protected]:/> exit 
bash-4.1# exit 
exit 

D:\lftp> 

Es ninguna solución exe solo, pero las subidas resultó ser dos veces tan rápido como los archivos subidos por pscp.exe

Editar: nuevo URL ahora posterious se ha detenido: http://envelopepushing.wordpress.com/2010/08/24/lftp-for-windows/

+0

mantengo algunas compilaciones de Windows en http://nwgat.ninja/lftp-for-windows/ si alguien las necesita – wiak

3

Putty scp ya se ha mencionado.

Quiero mencionar putty psftp.exe que podría ser nuevo.

utilizar la siguiente línea de comandos:

psftp.exe -l -b -pw

Esto sesión en el servidor FTP y ejecutar el archivo -con-ftp-cmds contra ella.

docs completo aquí: FTP

http://the.earth.li/~sgtatham/putty/0.52/htmldoc/Chapter6.html

+0

+1 esto es en realidad lo que el OP dijo que hizo en sus comentarios. –

0

fiebre; gratis, viene en versiones portátiles y tiene una API de scripting completa (compatible con el lenguaje LUA).

0

Si trabajas con powershell puedes usar algo como netcmdlets (www.netcmdlets.com). No es un cliente per se, sino un conjunto de bibliotecas (cmdlets) para las comunicaciones por Internet. Hay una edición personal gratuita también. Es fácil configurar las tareas de programación para llamar al script de PowerShell y tiene la ventaja de ser completamente flexible/extensible a través del código.

Cuestiones relacionadas