perdida del ambito entre llamadas system()

Iniciado por tragantras, 22 Junio 2010, 21:25 PM

0 Miembros y 1 Visitante están viendo este tema.

tragantras

Bueno, despues de ese titulo tan estrambótico, procedo jaja

[aclaro que todo lo que acontinuacion expongo es en Windows como SO anfitrion]

mediante la funcion system es posible hacer llamadas al sistema, por ejemplo system("dir") devuelve el listado del directorio, y system("cd asdf") te "introduce" en la carpeta asdf, bien, pero si hago:

system("cd asdf")
system("dir")

no me lista el contenido de la carpeta "asdf", sino que me lista el de la carpeta que contenga el script php. La pregunta se ve venir, no? jajaj

Como acer para no perder el ámibito entre llamdas system?! xD Para que cuando ejecute esa sucesión de llamadas a system, se liste el contenido de asdf!

Un saludo y gracias de antemano =)
Colaboraciones:
1 2

MinusFour

Pues, si yo pongo dir y luego la dirección de la carpeta si me hace el listado correctamente.


dir c:\


me devuelve los contenidos de C:\

tragantras

jaja hombre era un ejemplo!

me refiero pq por ejemplo si quiero hacer:

ftp direccio.ftp.com


luego me pide los credenciales... "inline" :S
Colaboraciones:
1 2

winroot

dentro de cmd puedes hacer

(echo hola & cd /d c:\ & dir /b *)

no tengo ganas de codear en php, pero intenta algo como:
system("cmd /c (cd /d c:\ & dir /b *)");
igual, creo que lo mejor sería directamente escribir un script BATCH que haga todo.
saludos
Mi blog sobre programación y seguridad informática:
http://win-root.blogspot.com

MinusFour

Hmm, como quiera puedes loguearte por FTP con una sola linea no?

En todo caso, si quieres usar un cliente FTP, podrías hacer uso de las librerias que tiene php.

http://www.cristalab.com/tutoriales/subir-archivos-con-php-por-ftp-c112l/

bomba1990

te recomiendo que leas mas y preguntes menos, para haya la informacion d ecualquier comando puedes escribir [elcomando] /? y hay te dira todo lo que necesitas, por ejemplo en el cmd te da informacion de como pasar varios comandos de una sola ves, y el de ftp te explica como logeart en una sola linea. SUERTE
"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve

MinusFour

Hombre, dejalo que pregunte. No pasa nada malo con preguntar cosas así, son preguntas validas.

Falso Positivo

A que te caes de culo :)

En linux existe una variable de entorno llamada PWD que te da la ruta actual de ejecución(o ámbito como tu dices), en windows el equivalente es %CD%, prueba con setear %CD% y luego hacer el dir y me cuentas ;)

Saludos!
Don't worry, be hacked....

tragantras

Antes de nada muchas gracias por contestar y por tomarte la molestia de hacerme llegar la contestación ^^ se te agradece!

Creo que me expliqué mal, a la hora de poner el ejemplo, yo lo que quería y sigo queriendo conseguir, es realizar una especie de SHELL para entornos windows.
Con system no se consigue el mismo efecto porque son como llamadas independientes, es decir si tu haces.. no sé "ftp misitio.com", en una SHELL normal, continuarías poniendo los credenciales, pero con system, no podría, porque se pierde ese "ámbito" al que yo me refería.

En linux sería tan sencillo como devolver una shell con un netcat, pero windows de base viene muy limitado en ese sentido, a no ser que me salte algo de por medio :/


Espero haberme explicado ya correctamente, un saludo ^^
Colaboraciones:
1 2