2015-02-05 41 views
0

我最近的任務是將從遠程MikroTiks提取的數據集成到apache web應用程序中。我發現瞭如何做到這一點的難題,我把它們全部帶到了這裏。如何自動從MikroTik路由器的Apache數據檢索?

那麼如何自動從MikroTiks到php apache服務器的數據檢索? (不安裝PEAR或PECL模塊。)

回答

0

本例在CentOS機器上執行。

MikroTik允許RouterOS commands to be executed via ssh。如果需要在同一時間只有一個命令時,它可以以這種形式被執行:

> ssh {user}@{mikrotik ip} '{mikrotik command}' 

SSH命令可以在PHP經由shell_exec命令自動化。因此認證apache服務器到MikroTik是剩下的任務。

ssh-keys是自動執行ssh身份驗證的最佳方式。 apache用戶需要擁有自己的dsa密鑰對。要創建此,假設它不會在服務器上(也假設apache用戶已經存在實際上是「阿帕奇」:

> mkdir /var/www/.ssh 
> chmod 740 /var/www/.ssh 
> chown apache:apache /var/www/.ssh 
> cd /var/www/.ssh/ 

現在,我們需要創建一個SSH密鑰作爲Apache用戶

> sudo -u apache ssh-keygen -t dsa 

默認的文件名是罰款。Don't add a password。請仔細確認文件被創建。

> ls 
-- id_dsa 
-- id_dsa.pub 

現在我們將使用的MikroTik的方法上傳Apache的SSH密鑰對MikroT ik,它使用ftp。如果ftp沒有安裝在apache服務器上,你需要將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消息。要完成SSH密鑰進口的MikroTik:

> ssh {admin}@{mikrotik ip} 

你可能會希望增加對SSH使用的用戶。

[[email protected]]>/user add 
name: {read-ssh} 
group: {read} 

現在導入ssh密鑰文件。

[[email protected]]> /user ssh-keys import public-key-file=id_dsa.pub 
user: {read-ssh} 
[[email protected]]> /quit 

現在我們可以測試apache可以autmagically連接到MikroTik。

sudo -u apache ssh {read-ssh}@{mikrotik ip} 'log print' 

如果這項工作正常,您就可以使用php從MikroTik中檢索數據。如果ssh命令掛在這裏,你可能會try adding the -2 option to force protocol version 2

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

2>&1pipe STD_ERR to STD_OUT