Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: tragantras en 22 Junio 2010, 21:25 pm



Título: perdida del ambito entre llamadas system()
Publicado por: tragantras en 22 Junio 2010, 21:25 pm
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 =)


Título: Re: perdida del ambito entre llamadas system()
Publicado por: MinusFour en 22 Junio 2010, 22:12 pm
Pues, si yo pongo dir y luego la dirección de la carpeta si me hace el listado correctamente.

Código:
dir c:\

me devuelve los contenidos de C:\


Título: Re: perdida del ambito entre llamadas system()
Publicado por: tragantras en 23 Junio 2010, 00:53 am
jaja hombre era un ejemplo!

me refiero pq por ejemplo si quiero hacer:

ftp direccio.ftp.com


luego me pide los credenciales... "inline" :S


Título: Re: perdida del ambito entre llamadas system()
Publicado por: winroot en 23 Junio 2010, 02:37 am
dentro de cmd puedes hacer
Código:
(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


Título: Re: perdida del ambito entre llamadas system()
Publicado por: MinusFour en 23 Junio 2010, 03:08 am
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/


Título: Re: perdida del ambito entre llamadas system()
Publicado por: bomba1990 en 23 Junio 2010, 04:07 am
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


Título: Re: perdida del ambito entre llamadas system()
Publicado por: MinusFour en 23 Junio 2010, 04:22 am
Hombre, dejalo que pregunte. No pasa nada malo con preguntar cosas así, son preguntas validas.


Título: Re: perdida del ambito entre llamadas system()
Publicado por: Falso Positivo en 29 Junio 2010, 12:18 pm
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!


Título: Re: perdida del ambito entre llamadas system()
Publicado por: tragantras en 30 Junio 2010, 01:12 am
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 ^^