shell_exec retval passthru net es2 ejemplos php system

php - retval - como ocultar la salida del sistema()



system php ejemplos (3)

En general, si desea evitar que salga algo al navegador, puede usar ob_start () antes de que su sistema () llame y luego ob_end_clean (). Ver http://php.net/manual/en/function.ob-start.php

Estoy trabajando en Windows XP. Puedo ejecutar con éxito un comando system () a través de mi navegador llamando a un script TCL que automatiza una sesión ssh. También devuelvo un valor del script. Sin embargo, mi problema es que el script descarga toda la sesión ssh en el navegador.

mi script php se ve como

$ lastline = sistema (''"C: / tcl / bin / tclsh.exe" / ruta al archivo / filename.tcl''. $ username. ''''. $ pass, $ val);

nombredearchivo.tcl:

spawn plink -ssh $ usuario @ $ host
espera "assword:"
enviar "$ pass / r"
esperar "/ prompt: / ->"
set $ return_value [string compare /..string../ $ expect_out (buffer)]
/..algo código ... esto funciona bien /
salir $ return_value

todo funciona bien y recupero $ return_value correctamente, pero el archivo php imprime el resultado de la ejecución de toda la sesión ssh en mi navegador, que se parece a lo siguiente:

Usando el nombre de usuario "admin". Contraseña de [email protected]: === / * texto * / === / prompt: / -> ... / algo de texto /

Quiero evitar que la función system () imprima esto en mi navegador
He utilizado la función shell_exec () pero devuelve el resultado completo de la sesión ssh (que he analizado en el script tcl y obtuve un valor preciso para volver al script php) ¿hay alguna manera de hacerlo sin usar shell_exec () pero usando system () en su lugar

gracias por adelantado


La documentación para system () dice específicamente:

Ejecuta un programa externo y visualiza la salida.

En esa página se enumeran alternativas. Si utiliza la función exec en su lugar, solo ejecutará los comandos sin mostrar ningún resultado.

Ejemplo:

<?php echo "Hello, "; system("ls -l"); echo "world!/n"; ?>

mostrará la salida del system :

$ php -q foo.php Hello, total 1 -rw-r--r-- 1 bar domain users 59 Jul 15 16:10 foo.php world!

durante el uso de exec no mostrará ninguna salida:

<?php echo "Hello, "; exec("ls -l"); echo "world!/n"; ?> $ php -q foo.php Hello, world!


utilizar ob_start (); antes y ob_clean (); después de llamarlo

http://sandbox.phpcode.eu/g/850a3.php

<?php ob_start(); echo ''<pre>''; $last_line = system(''ls''); ob_clean(); echo ''nothing returned!''; ?>