我正在 Windows XP 上工作。我可以通过调用自动执行 ssh 会话的 TCL 脚本,通过浏览器成功运行 system() 命令。我还从脚本返回一个值。但是我的问题是脚本将整个 ssh 会话转储到浏览器中。
我的 php 脚本如下所示:
$lastline=system('"C:\tcl\bin\tclsh.exe" \path to file\filename.tcl '.$username.' '.$pass,$val);
文件名.tcl:
spawn plink -ssh $user@$host
expect "password:"
send "$pass\r"
expect "\prompt:/->"
set $return_value [string compare /..string../ $expect_out(buffer)]
/...some code...this runs fine/
exit $return_value
一切运行良好,我正确返回 $return_value 但 php 文件在浏览器中打印整个 ssh 会话的执行结果,如下所示:
使用用户名“admin”。[电子邮件受保护] /cdn-cgi/l/email-protection密码: === /*一些文字*/ === \提示:/->.../一些文字/
我想阻止 system() 函数在我的浏览器中打印此内容
我已经使用了 shell_exec() 函数,但它返回整个 ssh 会话结果(我已在 tcl 脚本中解析并获得了返回到 php 脚本的精确值)
有没有一种方法可以在不使用 shell_exec() 而是使用 system() 的情况下做到这一点
提前致谢
The 系统文档() https://www.php.net/manual/en/function.system.php具体说:
执行外部程序并显示输出
该页面上列出了替代方案。如果你使用执行函数 https://www.php.net/manual/en/function.exec.php相反,它只会执行命令而不显示任何输出。
Example:
<?php
echo "Hello, ";
system("ls -l");
echo "world!\n";
?>
将显示输出system
:
$ php -q foo.php
Hello, total 1
-rw-r--r-- 1 bar domain users 59 Jul 15 16:10 foo.php
world!
使用时exec
将不会显示任何输出:
<?php
echo "Hello, ";
exec("ls -l");
echo "world!\n";
?>
$ php -q foo.php
Hello, world!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)