我最近的任務是將從遠程MikroTiks提取的數據集成到apache web應用程序中。我發現瞭如何做到這一點的難題,我把它們全部帶到了這裏。如何自動從MikroTik路由器的Apache數據檢索?
那麼如何自動從MikroTiks到php apache服務器的數據檢索? (不安裝PEAR或PECL模塊。)
我最近的任務是將從遠程MikroTiks提取的數據集成到apache web應用程序中。我發現瞭如何做到這一點的難題,我把它們全部帶到了這裏。如何自動從MikroTik路由器的Apache數據檢索?
那麼如何自動從MikroTiks到php apache服務器的數據檢索? (不安裝PEAR或PECL模塊。)
本例在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>&1
是pipe STD_ERR to STD_OUT。