Page 1 of 1

Archivo via FTP

PostPosted: Fri Jun 10, 2011 3:14 pm
by MarioG
Estimados;
Tengo un archivo de texto alojado en sitio.
El que lo recupero y leo correctamente. Aunque lo que no encuentro, y necesito, es la manera de saber el numero total de lineas de tal archivo.
No encuentro ninguna función/metodo que me devuelva tal valor. De que manera podría hacerlo?
Aclaro que la idea no es bajarlo y luego desde ahí leer el nro de lineas, que si lo podría hacer con la función de xHarbour: FLineCount( <cFileName> ); aunque si no existe otra manera quizás sea el camino

desde ya muchas gracias

Re: Archivo via FTP

PostPosted: Fri Jun 10, 2011 8:12 pm
by JmGarcia
El comando wc (word count) de unix/linux con la clausula -l cuenta numero de líneas.
Si rediriges la salida asi: wc -l archivo > salida.txt tendras el resultado en el fichero de salida.txt.

Para ejecutar un comando remoto en una máquina unix/linux utiliza el objeto COMM RemoteShell.
Code: Select all  Expand view
oRemoteShell:=CreateObject("WScript.Shell")
oRemoteShell:Run("cmd /C rsh Equipo -l NombreDeUsuario -n wc -l archivo > salida.txt & exit",0,.F.)
oRemoteShell:=nil

El fichero de salida.txt se queda en el PC desde el que ejecutas el RemoteShell. Si en vez de poner ">" pones ">>" el fichero se queda en el servidor.

La segunda línea del código que te pongo la puedes modificar según donde quieras la salida.

En el PC desde el que ejecutas la RemoreShell (c:\tmp\salida.txt):
Code: Select all  Expand view
oRemoteShell:Run("cmd /C rsh Equipo -l NombreDeUsuario -n wc -l archivo > c:\tmp\salida.txt & exit",0,.F.)

O en el servidor, pero tendras que traerte por FTP el fichero (/home/tmp/salida.txt):
Code: Select all  Expand view
oRemoteShell:Run("cmd /C rsh Equipo -l NombreDeUsuario -n wc -l archivo >> /home/tmp/salida.txt & exit",0,.F.)


NOTAS:
cmd /C Ejecuta el comando especificado mediante el parámetro cadena y, después, se detiene.
rsh Ejecuta comandos en equipos remotos que ejecutan en el servicio RSH o un equivalente.
Sintaxis: rsh [Equipo] [-l NombreDeUsuario] [-n] [Comando]
Equipo Dirección IP del equipo remoto.
NombreDeUsuario Nombre de usuario, no hace falta password.
& exit salida de "consola" del ordenador remoto.

Según la documentación del MSDN http://msdn.microsoft.com/en-us/library/d5fk67ky(VS.85).aspx esto es lo que dice sobre el método RUN del RemoteShell:
object:Run(strCommand, [intWindowStyle], [bWaitOnReturn])
strCommand: String value indicating the command line you want to run. You must include any parameters you want to pass to the executable file.
intWindowStyle: Optional. Integer value indicating the appearance of the program's window. Note that not all programs make use of this information. Value 0= Hides the window and activates another window.
bWaitOnReturn: Optional. Boolean value indicating whether the script should wait for the program to finish executing before continuing to the next statement in your script. If set to true, script execution halts until the program finishes, and Run returns any error code returned by the program. If set to false (the default), the Run method returns immediately after starting the program, automatically returning 0 (not to be interpreted as an error code).

Re: Archivo via FTP

PostPosted: Sat Jun 11, 2011 12:06 am
by MarioG
JM muchas gracias
Nunca utilice este tipo de comandos, pero con tu precisa esplicación seguramente todo va a salir bien o, habrá mas consultas :-)

Saludos

Re: Archivo via FTP

PostPosted: Tue Jun 14, 2011 10:26 pm
by MarioG
jm; creo que necesito ayuda
Esto es lo que yo interpreto que tendría hacer
Code: Select all  Expand view

      oRemoteShell:=CreateObject("WScript.Shell")
      oRemoteShell:Run("cmd /C rsh 31.170.160.105 -l a3466084 -n wc -l /home/a3466084/public_html/Descargas/versiones.dat > \mgideas\sigeco\temp\versiones.dat & exit",0,.F.)
      oRemoteShell:=nil
 


Pero el archivo creado es de tamaño 0, seguramente algo no estoy haciendo bien
Amplio con los datos del sitio
Image
Image

que esta mal?

Re: Archivo via FTP

PostPosted: Sat Jun 18, 2011 9:01 pm
by JmGarcia
Deberia de funcionar.
Especifica la letra del disco en el fichero de salida.
En vez de \mgideas\sigeco\temp\versiones.dat
pon c:\mgideas\sigeco\temp\versiones.dat

Y por ultimo ¿ has probado el comando wc en la máquina 31.170.160.105 ?
El servidor remoto tiene que admitir RemoteShell.

Y una última prueba: abre una consola de MS-DOS y ejecuta
rsh 31.170.160.105 -l a3466084 -n wc -l /home/a3466084/public_html/Descargas/versiones.dat
deberia de "salir" el resultado.

RSH es un comando del S.O. del PC. En Windows-XP me funciona.

Algunos enlaces:
http://es.wikipedia.org/wiki/Rsh
http://en.wikipedia.org/wiki/Remote_Shell

Re: Archivo via FTP

PostPosted: Tue Jun 21, 2011 8:00 pm
by MarioG
jm; gracias por responder

Ejecutandolo desde XP, obtengo esto en modo consola
hice un ping que respode correctamente (en mi ignorancia sobre el tema)
Image

Como verás el IP es diferente del que figura en la página que me brinda los datos del FTP, por lo que lo cambié por el nombre (luego probé con el IP respuesta del ping); en ambos casos la respuesta es la misma.
Quizás no adminta RemoteShell

saludos

Re: Archivo via FTP

PostPosted: Thu Jun 23, 2011 10:13 am
by JmGarcia
MarioG wrote:Quizás no adminta RemoteShell

Pues va a ser que no lo admite.
Yo uso el RemoteSehll desde Windows-XP y contra máquinas SUN con S.O. Solaris 10, y funciona.