Ms-Dos - Ayuda con PSFTP

 
Vista:

Ayuda con PSFTP

Publicado por amparitohijo (94 intervenciones) el 21/10/2008 16:21:11
Buenas a todos.

Tengo un problemilla con el programa PSFTP. Es el siguiente:

Tengo un script que me busca los archivos en una ubicación y me genera el archivo scriptConexion.ftp conteniendo lo siguiente:

cd data
put archivo01.zip
!move /y D:RXarchivo01.zip D:TXarchivo01.zip
put archivo01.LOG
!move /y D:RXarchivo01.LOG D:TXarchivo01.LOG
close
quit

Luego invoco el psftp desde un batch con los siguientes argumentos:
psftp.exe 192.168.0.101 -l usuario -pw contraseña -b scriptConexion.ftp

El caso es que no hace nada. Es mas, el resto del batch no continúa (por un errorlevel=1). Si lo ejecuto desde una ventana de MSDos y pongo los comandos a mano (en lugar de poner ' -b scriptConexion.ftp ') funciona a la perfección.

La última prueba que hice fue cambiando la sentencia PUT por MPUT, y esa la hace, pero cuando invoco el símbolo de sistema (con admiración '!') se cierra la ventana de msdos.

¿Alguien sabe si estoy haciendo algo mal? Yo siempre había utilizado el cliente FTP por defecto en Windows, y nunca el PSFTP. ¿Utilizan una nomenclatura diferente? Socorroo!!!

Cualquier sugerencia será bienvenida. Gracias por vuestro interés y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con PSFTP

Publicado por Armando Nava (194 intervenciones) el 23/10/2008 16:36:35
Usa la opcion -be

No he podido bajar el sftp para probarlo, pero aqui hay un enlace sobre como usar el sftp espero te sirva.

http://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter6.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con PSFTP

Publicado por amparitohijo (94 intervenciones) el 23/10/2008 18:03:33
Hola Armando
Lo he probado y sigue sin funcionar. El problema es más delicado de lo que a simple vista parece...

El script de conexion lo genero desde el mismo script inicial. Cuando está generado queda algo parecido a esto:

cd data
mput ips_20081022.zip
!move /y ips_20081022.zip D:IX_PROD xips_20081022.zip
mput ips_20081022.LOG
!move /y ips_20081022..LOG D:ix_prod xips_20081022..LOG
quit

El caso es que los mput funcionan, pero los comandos que empiezan por admiración no los ejecuta Windows. Tampoco da ningun error... No se lo que puede estar pasando...

Si alguien sabe qué está pasando, que me oriente en buscar una solución.
Gracias a todos por adelantado y un saludo.

Mejor os paso el script para que lo veais (el FOR /F ese demencial lo único que hace es, si existen los archivos LOG y ZIP en la carpeta, generar en el script las cuatro líneas mput y !move):

@echo off
ECHO ====== INICIO DE BATCH ====== >> D:ix_prodix_prod.log
(DATE /T & TIME /T) >> D:ix_prodix_prod.log
if exist D:ix_prod emp_ix o_fin_ix.txt (echo El proceso ya esta en ejecucion>>D:ix_prodix_prod.log & goto Fin2) else (goto linea1)
:Linea1
ECHO Archivo de control. No borrar > D:ix_prod emp_ix o_fin_ix.txt
SET LOG=D:ix_prodix_prod.log
SET LISTA1=D:ix_prod emp_ixlista1.tmp
SET RTEMP=D:ix_prod emp_ix
SET CON1=D:ix_prod emp_ixix_prod.ftp
SET ERROR1=D:ix_prod emp_ixerror1.tmp
SET ERROR2=D:ix_prod emp_ixerror2.tmp
D:
cd D:ix_prodRX
dir /A:-d /B IPS*.* >>%lista1% || GOTO Error1
ECHO cd data>>%CON1%
::
FOR /F "TOKENS=1,2 DELIMS=. " %%i in (%LISTA1%) do ((echo.>%RTEMP%\%%i.%%j.tmp) & ((dir %RTEMP%\%%i.zip.tmp && dir %RTEMP%\%%i.log.tmp) && (echo mput %%i.zip >> %CON1% & echo !move /y %%i.zip D:IX_PROD x\%%i.zip >>%CON1% & echo mput %%i.LOG >> %CON1% & echo !move /y %%i.LOG D:ix_prod x\%%i.LOG >> %CON1% )))
::
ECHO quit >>%CON1%
cd d:ix_prodRX
psftp.exe 192.xxx.xxx.xxx -l NombreUsuario -PaSsWoRd -b %CON1% >>%LOG%
IF %ERRORLEVEL%==0 (GOTO Fin) ELSE (GOTO Error2)
:Error1
(DATE /T & TIME /T) >>%ERROR1%
ECHO No se ha encontrado ningun archivo IPS*.* en D:IX_PRODRX >>%ERROR1%
ECHO Revise el log adjunto>>%ERROR1%
dir /A:-d IPS*.* >> %ERROR1%
ECHO ==================>>%ERROR1%
ECHO. >>%ERROR1%
copy %ERROR1%+%LOG% D:IX_PRODERRORES_IXERROR_ix.TXT
GOTO FIN
:Error2
(DATE /T & TIME /T) >>%ERROR2%
ECHO Se ha producido un error en la conexion con el servidor 192.xxx.xxx.xxx>>%ERROR2%
ECHO Revise el log adjunto>>%ERROR2%
ECHO ==================>>%ERROR2%
ECHO. >>%ERROR2%
copy %ERROR2%+%LOG% D:IX_PRODERRORES_IXERROR_ix.TXT
:Fin
DEL /q D:ix_prod emp_ix*.*
del /Q D:ix_prod emp_ix o_fin_ix.txt
:Fin2
exit
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con PSFTP

Publicado por Armando Nava  (194 intervenciones) el 23/10/2008 23:10:01
Saludos

Tendras una dirección de donde bajar el PSFTP, o el archivo de instalación para probarlo. [email protected]

Yo hago tranasferencias de como indicon a continuación. Te puedo decir que esta fallando la manera en que te conectas al servidor, no se esta dejando logear, el ftp te loguea automáticamente por lo que se debe especificar que no lo haga y utilice el archivo que quieres, como no he manejado el PSFTP solo estoy haciendo analogias entre el funcionamiento de ambos programas. Supongo que hace falta algun modificador que te permita ejecutar los comandos de tu archivo.

ECHO OPEN 10.10.10.1 > lista.lst
ECHO USER XXXXX YYYYYY >> lista.lst
ECHO asc >> lista.lst
ECHO cd /usr/bin >> lista.lst
ECHO lcd D:ANL >> lista.lst
ECHO mput datos*.txt >> lista.lst
ECHO bye >> lista.lst
ECHO pause >> lista.lst

ftp -niv < lista.lst

del lista.lst
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con PSFTP

Publicado por Armando Nava  (194 intervenciones) el 24/10/2008 00:22:17
Saludos

VIendo tu bat

Si estas usando mput, entonces deberias estar usando comodines * ó ?, para que se justifique el uso del MPUT, de lo contrario si es un solo archivo solo debes usar PUT, ya que por default el sistema te preguntará si lo quieres tranferir:
ftp> mput cmd_FILE.txt
mput cmd_FILE.txt? n

Y se quedará ahí a menos que especifiques que no te pregunte mediante PROMPT OFF

Encontre una version del PSFTP, no se si cumpla con lo que quieres, pero ya la probe y me pude conectar y hacer un GET sin problemas.

http://www.softpedia.com/get/Network-Tools/Telnet-SSH-Clients/Tunnelier.shtml

sftpc USUARIO@IP_HOST -pw=PASSWORD -cmdfile=FILE.txt

FILE.txt contiene los clasicos comandos del ftp en mi caso:

cd /usr/bin/archivos
get archivo.txt

Antes te genera la llave y te pide si quieres aceptarla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con PSFTP

Publicado por amparitohijo (94 intervenciones) el 24/10/2008 10:08:36
Hola y gracias a todos.
Con respecto a lo de loguearse, el script funciona, y se conecta correctamente. Efectivamente tengo que cambiar mput por PUT a secas, pero ese no es el problema.
El problema es a la hora de mandar comandos a Windows desde el FTP. Esto es, al utilizar la admiración. Todo funciona menos eso. Es decir:

psftp.exe 192.xxx.xxx.xxx -l NombreUsuario -PaSsWoRd -b %CON1% -->Se conecta sin problemas.

[Contenido de %CON1%]
cd data --> funciona
mput ips_20081022.zip --> funciona
!move /y ips_20081022.zip D:IX_PROD xips_20081022.zip --> NO funciona
mput ips_20081022.LOG --> funciona
!move /y ips_20081022..LOG D:ix_prod xips_20081022..LOG --> NO funciona
quit --> funciona

Tras esto, sale de la sesión, pero los comandos marcados con admiración no los realiza. Utilizando FTP, cuando escribes un comando de windows antecedido de una admiración, desde el ftp hace una especie de shell y lo ejecuta en Windows. Esto es muy util para no tener que desconectarse para, por ejemplo, renombrar un archivo local antes de descargar uno con un nombre igual desde el ftp.

Con PSFTP funciona perfectamente cuando no lo incluyes en un script de conexión.

Tambien he probado a conectarme de la siguiente manera, y tampoco:
psftp.exe <%CON1%

[Contenido de %CON1%]
open 192.xxx.xxx.xxx
NombreUsuario
PaSsWoRd
cd data
mput ips_20081022.zip
!move /y ips_20081022.zip D:IX_PROD xips_20081022.zip
mput ips_20081022.LOG
!move /y ips_20081022..LOG D:ix_prod xips_20081022..LOG
quit

¿Puede ser algo del mapa de caracteres que genera un ECHO?¿Puede no reconocer el caracter ! que genera msdos como un signo propio? La verdad, estoy bastante perdido. El caso es que no me puedo conectar a traves de FTP normal. Ahí si que funciona... Espero vuestras ideas. Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con PSFTP

Publicado por Armando Nava  (194 intervenciones) el 24/10/2008 14:44:37
Saludos

Ya te entendí, intenta ejecutar comados más simples una vez conectado al servidor.
---------------------------
!DIR por ejemplo.
---------------------------
Desde esa misma conexión ejecuta

---------------------------
sftp> help
---------------------------
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con PSFTP

Publicado por amparitohijo (94 intervenciones) el 24/10/2008 15:11:13
Hola de nuevo, Armando
Lo he hecho, y tampoco funciona.
Si abro una sesión manual (sin script de conexión) sí que funcionan todos los comandos, pero si ejecuto lo mismo desde un script, no funciona.

Al poner help me aparece la lista de comandos:

psftp> help
! run a local command
bye finish your SFTP session
cd change your remote working directory
chmod change file permissions and modes
close finish your SFTP session but do not quit PSFTP
del delete files on the remote server
dir list remote files
exit finish your SFTP session
get download a file from the server to your local machine
help give help
lcd change local working directory
lpwd print local working directory
ls list remote files
mget download multiple files at once
mkdir create directories on the remote server
mput upload multiple files at once
mv move or rename file(s) on the remote server
open connect to a host
put upload a file from your local machine to the server
pwd print your remote working directory
quit finish your SFTP session
reget continue downloading files
ren move or rename file(s) on the remote server
reput continue uploading files
rm delete files on the remote server
rmdir remove directories on the remote server

Y esta es la prueba de que en una sesión no automatizada sí que funciona:

psftp> !dir C:pruebas
El volumen de la unidad C es System
El número de serie del volumen es: 6819-8E9E

Directorio de C:pruebas

08/10/2008 17:02 <DIR> .
08/10/2008 17:02 <DIR> ..
08/10/2008 16:39 6 1.1
08/10/2008 16:59 27 2.2
08/10/2008 16:39 0 ARCH.$$$
08/10/2008 16:37 24 ARCH.BAK
08/10/2008 16:38 22 ARCH.TXT
08/10/2008 16:37 12 scr.scr
08/10/2008 16:30 0 script.cmd
7 archivos 91 bytes
2 dirs 45.887.279.104 bytes libres
psftp>

No se a que se puede deber. Si alguien tiene alguna pista más, lo agradezco.
Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con PSFTP

Publicado por Armando Nava  (194 intervenciones) el 24/10/2008 15:27:31
Saludos

Ya te entendí, intenta ejecutar comados más simples una vez conectado al servidor.
---------------------------
!DIR por ejemplo.
---------------------------

Desde esa misma conexión ejecuta

---------------------------
sftp> help
---------------------------
ó
--------------------------
sftp> ?
--------------------------

En los casos en que quieres traer o enviar archivos, puedes renombrarlos en el mismo comando.

GET archivo.txt otro.txt
PUT myarchivo.txt aplicar.txt
--------------------------------------
sftp> get sinv.txt este.txt
Press [Esc] to cancel the transfer.

remote /xp/sinv.txt
-> local D:ANLArmandoputtyeste.txt
Downloaded 33930 bytes, 0 seconds
sftp> put este.txt otro.txt
Press [Esc] to cancel the transfer.

local D:ANLArmandoputtyeste.txt
-> remote //xp/otro.txt
Uploaded 33930 bytes, 0 seconds
sftp>
--------------------------------------
Esta es un ejemplo de la salida, las rutas estan modificadas por obvias razones.

He estado haciendo pruebas con este programa y no he tenido problemas, como te comentaba en el post anterior.

http://www.softpedia.com/get/Network-Tools/Telnet-SSH-Clients/Tunnelier.shtml
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar