怎样在网页中显示ssh2_exec得到的结果?

蜜莉恩 2013-07-02 08:12:30
前几天发过个帖子关于php 的ssh2功能,我的目的是想要通过php代码连接远程服务器,运行某条指令然后返回结果,然后在网页中显示结果。
现在的问题是结果可以正确返回,但网页显示不了
我的代码如下,文件名是demo.php:
$name = "myserver.com";
function get_host_list($name)
{
$connection = ssh2_connect($name,22);
ssh2_auth_password($connection, 'root','changeme');
$sftp = ssh2_sftp($connection);

$stream = ssh2_exec($connection, 'python file.py');
stream_set_blocking($stream, true);
// Return the result and delete the files
$host_list = stream_get_contents($stream);

return $host_list;
}
echo get_host_list($name);


如果在shell中运行代码
php demo.php,结果可以正确显示。
但如果我在浏览器中打开此文件
www.path/to/the/file.demo.php
则不显示任何东西。。

为什么shell中可以显示结果但网页中就现实不了呢??
个人猜测是不是因为当网页已经load了,但结果还没返回过来,所以没有东西可以显示?

请大虾帮忙解决,急~ 谢谢
...全文
275 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ImN1 2013-07-02
  • 打赏
  • 举报
回复
…… 源代码里面有木有? 试一下写入一个txt作为输出检查
kalipusi 2013-07-02
  • 打赏
  • 举报
回复
这是乌龙了么
蜜莉恩 2013-07-02
  • 打赏
  • 举报
回复
引用 1 楼 snmr_com 的回复:
http://bbs.csdn.net/topics/390500308 这帖子说的和你类似,路径问题?
哎。。哥们,你再多看一眼就会发现那个帖子也是我发的。。 那个帖子的问题已经解决了,结果返回无误,但只能通过shell编译php文件来输出,却不能通过网页输出,这是现在的问题。。
ImN1 2013-07-02
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/390500308 这帖子说的和你类似,路径问题?
一、程序的组成 1.1 本程序分为server端 server的daemon端,也即是ChildGuard.py,默认监听在8888端口。 运行时,会申请管理员身份运行,如果没有管理员权限,也可以运行。 其用到了MyTTS.py模块,该模块主要负责调用百度的api接口,文字转语音,然后播放它,以及语音转文字(暂未用)。 百度的API还不错,比讯飞的免费调用次数给的多些,请自行申请对应的相关APP_ID、API_KEY、SECRET_KEY信息 由于wav的pcm格式转mp3用的是pydub的AudioSegment,这个是调用的ffmpeg来实现,要先下载ffmpeg,并把它放在PATH能够得着的地方。 下载地址:http://ffmpeg.org/download.html 监听pc麦克风用的是pyaudio模块,默认在windows上,直接pip装不上,建议直接下载对应的windows版本下载到本地。 再pip install PyAudio*.whl来进行安装 Server端目前有个问题,就是必须在前台运行,不能后台(比如计划任务调用,比如windows服务调用)。 如果后台运行的话,相关的msg接口,相关的获得前台进程接口,都有问题(这个是windows安全性的限制), 目前还在研究偷explorer.exe的token,然后用它token运行ChildGuard.py,但各种坑,还在趟 (OpenProcess,OpenProcessToken,DuplicateTokenEx,CreateProcessWithTokenW) 1.2 本程序的client端 客户端部分,有几个: 1.2.1 ChildControl.py控制部分 这个我是放在家里的树莓派3B上运行,它负责死循环,每30s检查一下孩子pc的状态: ①获得当前运行的是什么程序,程序的标题是什么 ②如果当前的前台程序在黑名单,那么kill它 ③检查360浏览器的标题,含有相关关键字,kill它 ④检查腾讯视频是否存在,kill它 ⑤每30s抓拍一次电脑屏幕,以及摄像头抓拍一次 ⑥每30s抓一端10s的麦克风录音 1.2.2 rpc_cmd.py的命令行cli部分 这个可以放在我的电脑上运行,或者放在树莓派上运行类似这样: pi@raspberrypi:/var/www/html$ ./rpc_cmd.py checking host=stanleypc,port=8888 http://stanleypc:8888>help func=s.help() ['now', 'md5sum', 'wf', 'rf', 'my_exec', 'killProcess', 'getProcess', 'getActiveProcName', 'cpu_usage', 'mem_usage', 'dimm_info', 'msg', 'msgImm', 'get_path', 'tts', 'net_info', 'is_admin', 'GetSystemPowerStatus', 'uptime', 'create_time', 'username', 'disk_c_usage', 'disk_io_counters', 'net_io_counters', 'snapScreen', 'snapCam', 'snapMerge', 'snapAudio', 'll', 'exit', 'help', 'version'] http://stanleypc:8888>version func=s.version() v0.8.6.20200410 http://stanleypc:8888>tts(别玩游戏啦,快做作业!) tts这个用得多,主要是会在它屏幕上显示一个对话框,上面有你发过去的文字,然后会在他电脑上,语音播报一下这段文字 1.2.3 update_childguard.py更新程序 这个会把我电脑里面最新的ChildGuard.py程序,去覆盖当前孩子pc上的。 但如何热更新,目前还摸索。 现在只能是update_childguard.py完了后, 用ssh进孩子的电脑,netstat -ano|findstr 8888查看是哪个pid占8888端口, 然后taskkill /f /pid 把ChildGuard.py进程杀掉 然后teamviewer连进孩子的电脑,再图像界面下,启动ChildGuard.py(前面ssh里面起的话,算后台起,API资源受限) 1.2.4 rpc_trans_file.py批量文件传送 这个会把我电脑to_trans/目录下的所有文件,都发到孩子pc上去 二、程序当前支持的功能: now:取得当前孩子pc的时间 md5sum:给定文件名,返回对应的md5值(用于校验文件比对) wf: 写data给到指定文件 rf: 读文件内容 my_exec : 执行指定的dos命令,返回标准输出的内容,和错误输出的内容 'killProcess', 给定pid,杀进程 'getProcess', 不加参数,返回所有进程信息;加pid返回pid进程信息;加caption信息,返回caption的进程信息 'getActiveProcName', 返回当前前台的进程信息 'cpu_usage', 返回当前cpu利用率 'mem_usage', 返回当前内存利用率 'dimm_info',返回当前物理内存条情况 'msg', 发指定的文本消息给孩子的电脑屏幕,并等待孩子点“确定” 'msgImm',发指定的文本消息给孩子的电脑屏幕,不等孩子点,直接返回 'get_path',获得当孩子pc上ChildGuard.py运行所在目录 'tts',发指定的文本消息给孩子的电脑屏幕,并语音播报给消息内容 'net_info',返回孩子pc上的网络信息内容 'is_admin', 判断ChildGuard.py是否是以管理员模式运行的 'GetSystemPowerStatus',判断电池电量等信息,方便今后的其他应急程序准备 'uptime', 获得电脑的运行时间 'create_time',获得ChildGuard.py的运行时间 'username', 获得当前ChildGuard.py是以哪个用户运行的 'disk_c_usage', 获得c盘的利用率 'disk_io_counters', 获得当前磁盘的io情况,建议间隔运行2次,取差值÷间隔时间,获得io流量 'net_io_counters', 获得网络io情况 'snapScreen',抓电脑屏幕 'snapCam', 抓摄像头拍照 'snapMerge', 抓电脑屏幕并抓摄像头拍照,然后把两者拼接到一个图片上 'snapAudio',抓电脑的麦克风录音一段指定时长(默认10s) 'll',类似linux的ls -l的输出信息 三、待完善支持功能 1、热更新 2、获得微信访问指定网址的内容。 目前GetForegroundWindow获得窗口句柄 再GetWindowText用窗口句柄获得标题, 用GetWindowThreadProcessId获得pid 用WMI接口用pid获得命令行信息 基本能覆盖各个浏览器标题内容,满足了大部分需求。 但如果用微信打开的网页链接,或者小程序之类的,这个标题text或者页面内容获得不到。 各位有什么思路,能把这个信息捕获到么? 3、黑名单的开启时间段 比如设置成晚上或者周末,可以使用黑名单的程序 4、防被杀 目前孩子只9岁,还找不到隐藏dos窗口的程序,将来可能就会了。 要考虑病毒方式双进程互动 5、目前用的是xmlrpc.server.SimpleXMLRPCServer,还没有身份验证机制,这个端口映射放公网的话,有些不太安全 ……
计算机网络基础 单项选择题 1、 发送给一组特定主机的消息属于哪种类型?(3 分) A.静态 B.单播 C.动态 D.组播 E.广播 参考答案:D 2、 TCP/IP模型的哪一层最接近最终用户?(3 分) A.应用层 B.互联网层 C.网络接入层 D.传输层 参考答案:A 3、 SSH与Telnet有何不同?(3 分) A.SSH通过网络实现连接,而Telnet用于带外访问 B.SSH通过加密消息和使用用户身份验证提供远程会话安全。Telnet被认为是不安全的 ,它以明文形式发送消息 C.SSH需要使用PuTTY终端仿真程序。使用Telnet时,必须使用Tera Term连接设备 D.SSH必须通过有效网络连接配置,而Telnet用于通过控制台连接连接设备 参考答案:B 4、 BYOD如何改变企业实施网络的方式?(3 分) A.BYOD需要组织购买笔记本电脑而非台式电脑 B.每位BYOD用户负责其自己的网络安全,因此减少了对组织安全策略的需求 C.BYOD设备比组织购买的设备更昂贵 D.BYOD在用户访问网络资源的地点和方式方面提供灵活性 参考答案:D 5、 下列有关客户端-服务器网络的陈述哪项是正确的(3 分) A.该网络包含专用服务器。 B.每台设备都可以充当服务器和客户端。 C.工作站使用SAMBA或Gnutella访问网络资源。 D.每台对等设备通过访问索引服务器获取存储在被视为混合网络系统的另一对等设备 的资源位置。 参考答案:A 6、 在数据通信行业,开放标准为什么重要?(3 分) A.它们是设备获取Internet访问所必需的。 B.它们消除了安全漏洞的威胁 C.它们实现了来自不同供应商的软件和硬件之间的互操作性 D.它们鼓励网络组织开发专有软件来维护其竞争优势 参考答案:C 7、 哪项陈述描述了融合网络的特征?(3 分) A.将语音、视频和数据传输给各种设备的单个网络。 B.网络服务通过各种不同的网络平台传输 C.网络为每个网络服务建立不同的通信通道 D.网络为语音、视频和数据使用不同的技术 参考答案:A 8、 哪种类型的流量通过网络时最可能拥有最高优先级?(3 分) A.FTP B.即时消息 C.语音 D.SNMP 参考答案:C 9、 物理地址在OSI模型的哪一层进行封装?(3 分) A.物理层 B.数据链路层 C.网络层 D.传输层 参考答案:B 10、Windows 7计算机上的一个特定网站似乎没有响应。技术人员可以使用什么命令来显示网页的任 何缓存DNS条目?(3 分) A.ipconfig /all B.arp -a C.ipconfig /displaydns D.nslookup 参考答案:C 11、管理员想要将路由器配置文件备份到与路由器连接的USB驱动器上。管理员应当使用 哪个命令来验证路由器是否识别了USB驱动器?(3 分) A.pwd B.cd USB C.dir flash0: D.show file systems 参考答案:D 12、一位员工希望以尽可能最安全的方式远程访问公司网络。 下列哪种网络特征将允许员工获得对公司网络的安全远程访问?(3 分) A.ACL B.IPS C.VPN D.BYOD 参考答案:C 13、小型公司只有一台路由器作为其ISP的出口点。如果路由器自身或其与ISP的连接发 生故障,应该采用哪种解决方案来维持连接?(3 分) A.激活与ISP连接的另一个路由器接口,以便流量由此通过。 B.使用第二台路由器连接到另一个ISP。 C.从另一个ISP购买第二个成本最低链路来连接到该路由器。 D.在与内部网络连接的路由器上增加更多接口。 参考答案:B 14、下列哪种方法被认为是缓解蠕虫攻击的最有效方法?(3 分) A.每30天更改一次系统密码。 B.确保所有系统都有最新的病毒定义。 C.确保在网络配置AAA。 D.从操作系统供应商处下载安全更新,并为所有存在漏洞的系统应用补丁。 参考答案:D 15、下列哪种协议可用于将邮件从电子邮件服务器传输到电子邮件客户端?(3 分) A.SMTP B.POP3 C.SNMP D.HTTP 参考答案:B 16、主机地址2001:DB8:BC15:A:12AB::1/64的前缀是什么?(3 分) A.2001:DB8:BC15 B. 2001:DB8:BC15:A C.2001:DB8:BC15:A:1 D.A. 2001:DB8:BC15:A:12 参考答案:B 17、在路由器的特权EXEC模式发出cd nvram:命令,然后发出dir命令有什么作用?(3 分) A.清除NVRAM的内容 B.将所有新文件指向NVRAM C.列出NVRAM的内容 D.复制NVRAM的目录 参考答案:C 18、下列有关Cisco IOS pin

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧