【问题标题】:php script to read xml data on remote unix server用于读取远程 unix 服务器上的 xml 数据的 php 脚本
【发布时间】:2012-01-02 17:58:51
【问题描述】:

我遇到了很多系统配置/注销的情况,我必须快速查看对故障排除有用的系统。

首先,我想构建一种 Web 界面(很可能是一个 php 站点),它使用支持日志中的可用信息为我提供系统配置的粗略快照。支持日志驻留在镜像服务器(称为日志服务器)上,而我将托管该站点的服务器(称为 Web 服务器)必须通过 ssh/sftp 访问它们。

我的粗略草图:

  1. Web 服务器上的 php 脚本将与日志服务器建立某种连接并转到支持日志位置。
  2. 然后它会在日志服务器上触发一个 perl 脚本,该脚本会将所有配置/日志文件中的相关内容收集到一些有用的 xml 中(可能有多个)。
  3. 这些 xml 文件会以某种方式传输到 Web 服务器,而 php 将使用它来创建 html。

我对 php 很陌生,想知道这是否可行,或者是否有其他替代/更好的方法? 如果有人可以提供更多详细信息,那就太好了。

提前致谢。

编辑: 抱歉,我错过了提到日志不是在实时机器上生成的日志,我正在处理 NAS 存储设备的维持活动,并且会有来自不同最终客户的大量支持日志,我的团队中的人会喜欢看看。 安全性在这里不是一个大问题(我可以使用纯文本身份验证来记录服务器),因为这些服务器只能通过公司的 VPN 访问。

【问题讨论】:

  • 不需要 PHP。只需让 perl 脚本执行 xml 生成->html 转换,然后按计划将该 html 推送到您的网络服务器。
  • 感谢马克的回复。正如我所提到的,收集有用的数据只是缓解故障排除过程的第一步,我希望前端 UI 以后更具交互性,所以我有点倾向于 PHP。我也不能在日志服务器本身上托管网站。

标签: php xml ssh remote-server


【解决方案1】:

是的,PHP 可以处理 XML。一个简单的方法是使用 SimpleXML:http://php.net/manual/en/book.simplexml.php

【讨论】:

    【解决方案2】:

    虽然您可以使用 expect 之类的方法来执行此操作(我认为 PHP 也有一些东西..),但我建议您分两个单独的步骤来执行此操作:

    1. 通过 Cron 运行的脚本从服务器检索数据并将其存储在本地
    2. PHP 脚本仅读取本地存储的数据,以生成报告。

    这样,您将获得以下好处:

    • 您不必担心如何让您的 php 脚本通过 ssh 连接到服务器
    • 您避免了与允许您的网络服务器用户登录到其他服务器相关的安全风险(如果您的脚本被黑客入侵,风险很高)
    • 如果与服务器的连接速度缓慢/缺失、检索日志的时间过长等,您的 php 脚本仍然能够快速显示数据——也许,以及一些解释最新更新期间出现问题的错误消息
    • 无论如何,您的 php 脚本将终止得更快,因为它只需要从本地存储中检索数据。

    更新:通过 php 的 ssh 客户端

    好的,根据您的最新评论,我了解到您需要的是一个显示文件的“前端浏览器”,而不是报告生成工具或类似工具;在这种情况下,您可以使用Expect(如前所述)连接到远程机器。

    有一个用于 PHP 的 PECL 扩展提供期望功能。查看PHP Expect manual,尤其是usage examples,了解如何使用它进行SSH 连接。

    替代方式:从 NFS/SAMBA 共享中获取文件

    另一种避免使用 SSH 的方法是通过本地安装的共​​享浏览远程计算机上的文件。 这在有趣的文件已经被 NAS 共享的情况下特别有用,但如果这意味着共享整个根文件系统或其中的大部分,我不建议这样做。

    【讨论】:

    • 我对做 cron 活动不感兴趣,抱歉我在之前的帖子中没有说清楚。
    • cron 有什么问题?无论如何,如果我正确理解了这个问题,那么您想要分析“远程服务器上的一些文件”以显示结果,我将分两步做两件事:1.检索数据并在本地存储,2.分析数据并存储结果, 3. 显示处理结果中的数据。每次加载页面时执行这三件事将花费很长时间来生成页面/在此过程中某些内容超时的高风险。这就是为什么我建议使用单独的“数据收集器”脚本,定期运行。
    • 感谢您的时间,redShadow。我在这里不需要 cron,这是完全不同的问题,因为我们必须处理大量日志(由不同 NAS 系统生成的日志)目录,其中包含数百个文件(压缩大小约为 10-100MB),所以我不是真的有兴趣在本地复制所有这些东西,而不是通过在日志服务器上使用一些脚本来生成/传输对显示有用的数据(如 xml)。我担心将文件从远程日志服务器传输到 Web 服务器有多容易?
    • 好的,现在我明白你在找什么了。查看答案更新
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 2011-10-26
    相关资源
    最近更新 更多