0

私は最近、リモートの MikroTiks から取得したデータを Apache Web アプリに統合する作業を行いました。これを行う方法に関するパズルの断片を見つけたので、それらをすべてここにまとめました。

では、MikroTiks から php Apache サーバーへのデータ取得を自動化するにはどうすればよいでしょうか? (PEAR または PECL モジュールをインストールしない場合。)

4

1 に答える 1

0

この例は、CentOS マシンで実行されました。

MikroTik を使用すると、 RouterOS コマンドを ssh 経由で実行できます。一度に 1 つのコマンドのみが必要な場合は、次の形式で実行できます。

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

ssh コマンドは、 shell_execコマンドを使用して php で自動化できます。したがって、Apache サーバーを MikroTik に対して認証することは、残りのタスクです。

ssh-keys は、ssh 認証を自動化する最良の方法です。apache ユーザーは、独自の dsa キー ペアを持っている必要があります。これを作成するには、サーバー上にまだ存在しないと仮定します (また、apache ユーザーが実際には「apache」であると仮定します:

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

次に、Apache ユーザーとして ssh-keys を作成する必要があります。

> sudo -u apache ssh-keygen -t dsa

デフォルトのファイル名で問題ありません。 パスワードを追加しないでください。ファイルが作成されたことを再確認します。

> ls
-- id_dsa
-- id_dsa.pub

ftp を使用する MikroTik に apache の ssh キーをアップロードするために、MikroTik の方法を使用します。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 を強制するオプションを追加してみてください-2

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

STD_ERRを STD_OUT2>&1にパイプすることです。

于 2015-02-05T17:41:23.017 に答える