如何使用PHP和远程ssh从文本文件中获取信息


How to get information from text file using PHP and remote ssh?

我遇到了这个问题,PHP 使用远程 ssh 执行 bash 脚本并在日志上执行 grep 时性能非常差。在网络浏览器中,我在 40 秒后收到输出。直接在我的本地机器上执行 bash 脚本(远程机器上的 ssh + grep)需要 8 秒。我知道我无法绕过这一点,所以我想出了:

创建PHP脚本,它将保存到本地计算机上的文本文件中,我需要的所有"变量"。我们称之为"参数.txt"。然后其他bash脚本"reader.sh"将读取这个"参数.txt"文件,执行远程ssh和grep的所有魔力,然后将输出保存到"output.txt"。后台脚本将每 2 秒运行一次 reader.sh

这是个好主意吗?

如果你真的需要使用PHP而不是SSH,你可以使用类似 http://phpseclib.sourceforge.net/的东西。他们有一个很好的ssh实现,我有时用它来部署应用程序和配置Linux服务器(puppet取代了它)。您的代码将更简洁且易于维护。

另一种选择是,如果您正在从Linux读取日志(消息,apache,syslog等),则可以选择使用Rsyslog(http://www.rsyslog.com/)将其集中在服务器上并在本地处理。这对您的计算机来说更便宜,并且更易于部署。

以下是您快速完成的方法。我最近发布了一个项目,允许PHP获取真正的Bash shell并与之交互,甚至通过SSH。在这里获取:https://github.com/merlinthemagic/MTS

下载后,您只需使用以下代码:

$shell = 'MTS'Factories::getDevices()->getRemoteHost('ip_address')->getShellBySsh('username', 'secretPassword');
//execute the grep command
$return1  = $shell->exeCmd("cat /full/path/to/logfile | grep '"someExpression'"");
echo $return1; //contains all the return that matched the grep expression