Php 如何从MikroTik路由器自动检索apache数据?

Php 如何从MikroTik路由器自动检索apache数据?,php,apache,authentication,ssh-keys,mikrotik,Php,Apache,Authentication,Ssh Keys,Mikrotik,我最近的任务是将从远程MikroTiks提取的数据集成到apache web应用程序中。我找到了一些关于如何做到这一点的拼图,我把它们都带到了这里 那么,如何实现从MikroTiks到php apache服务器的数据检索的自动化呢?(未安装PEAR或PECL模块。)此示例在CentOS机器上执行 MikroTik允许。如果一次只需要一个命令,可以按以下形式执行: > ssh {user}@{mikrotik ip} '{mikrotik command}' ssh命令可以通过命令在php

我最近的任务是将从远程MikroTiks提取的数据集成到apache web应用程序中。我找到了一些关于如何做到这一点的拼图,我把它们都带到了这里


那么,如何实现从MikroTiks到php apache服务器的数据检索的自动化呢?(未安装PEAR或PECL模块。)

此示例在CentOS机器上执行

MikroTik允许。如果一次只需要一个命令,可以按以下形式执行:

> ssh {user}@{mikrotik ip} '{mikrotik command}'
ssh命令可以通过命令在php中自动执行。因此,向MikroTik验证apache服务器是剩下的任务

ssh密钥是自动化ssh身份验证的最佳方式。apache用户需要有自己的dsa密钥对。要创建它,假设它在服务器上不存在(也假设apache用户实际上是“apache”:

现在我们需要以apache用户的身份创建ssh密钥

> sudo -u apache ssh-keygen -t dsa
默认文件名很好。请仔细检查文件是否已创建

> ls
-- id_dsa
-- id_dsa.pub
现在,我们将使用MikroTik的方法将apache的ssh密钥上载到MikroTik,MikroTik使用ftp。如果apache服务器上未安装ftp,则只需将id_dsa.pub文件上载到MikroTik,您可以使用第三方计算机上载该文件

> cd /var/www/.ssh
> ftp {mikrotik ip}
name: {admin}
Password: {password}
ftp> put id_dsa.pub
ftp> exit
您将需要在上一个ftp步骤中进行身份验证。如果成功,您将收到返回
226 ASCII transfer complete
消息。要完成对MikroTik的ssh密钥导入,请执行以下操作:

> ssh {admin}@{mikrotik ip}
您可能希望添加一个用户以供ssh使用

[admin@mikrotik]>/user add
name: {read-ssh}
group: {read}
现在导入ssh密钥文件

[admin@mikrotik]> /user ssh-keys import public-key-file=id_dsa.pub
user: {read-ssh}
[admin@mikrotik]> /quit
现在我们可以测试apache是否可以自动连接到MikroTik

sudo -u apache ssh {read-ssh}@{mikrotik ip} 'log print'
如果这样做有效,您就可以使用php从MikroTik检索数据了。如果ssh命令挂起,您可能会在这里

2>&1
将被禁用

sudo -u apache ssh {read-ssh}@{mikrotik ip} 'log print'
$ret = shell_exec ( "ssh {$read-ssh}@{$mikrotikIP} '/ip dhcp-server lease print' 2>&1");