2011-07-15 22 views
17

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 guión. sin embargo, mi problema es que el script volca toda la sesión ssh en el navegador.cómo ocultar la salida del sistema()

mi script php se parece a:

$ = lastline sistema ('C: \ tcl \ bin \ tclsh.exe "\ ruta al archivo \ filename.tcl' $ nombre de usuario ''... $ pase, $ val);

filename.tcl:

desove -ssh plink usuario @ $ $ host
esperan "assword:"
Enviar "$ pase \ r"
espera "\ prompt:/- >"
conjunto $ valor_devuelto [cadena de comparar /..string../ $ expect_out (tampón)]
/...some código ... esto funciona muy bien/
salida $ valor_devuelto

todo funciona bien y me sale $ valor_devuelto espalda correctamente, pero se imprime el archivo php el resultado de la ejecución de toda la sesión ssh en mi navegador que se parece a:

El uso de nombre de usuario "admin". contraseña [email protected]'s: ===/* texto */=== \ prompt:/-> .../texto/

quiero evitar que el sistema() función de impresión 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 lo que pueda hacer esto sin usar shell_exec() pero utilizando el sistema() en lugar

gracias de antemano

Respuesta

24

El documentation for system() dice específicamente:

Ejecutar un programa externo y mostrar la salida

En esa página se ofrecen como alternativa en la lista. Si usa the exec function 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 de 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! 
+1

gracias csl ... funciona ... antes estaba usando las funciones ob_start() y ob_end_clean() antes y después del comando system() para obtener el deseado resultados ... gracias por la entrada .... – user806168

3

use ob_start(); before y ob_clean(); después de llamar a que

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

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

sry por faltar a que en mis ques , pero incluso cuando es ese resultado $ almacena el valor de $ return_value que estoy pasando de vuelta f rom el script tcl. sin embargo, la salida sigue volcando la sesión ssh en mi navegador – user806168

+0

Edité mi respuesta. prueba este – genesis

Cuestiones relacionadas