Как автоматизировать Apache-поиск данных с маршрутизатора MikroTik?

Недавно у меня была задача интегрировать данные, извлеченные из удаленного MikroTiks, в веб-приложение apache. Я нашел кусочки головоломки о том, как это сделать, и я собрал их всех здесь.

Так как же автоматизировать извлечение данных из MikroTiks на сервер php apache? (Без установки модулей PEAR или PECL.)

0

Решение

Этот пример был выполнен на машине CentOS.

MikroTik позволяет Команды RouterOS, которые будут выполняться через ssh. Если одновременно требуется только одна команда, она может быть выполнена в такой форме:

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

Команды SSH могут быть автоматизированы в PHP через shell_exec команда. Таким образом, аутентификация сервера 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/

Теперь нам нужно создать ssh-ключи как пользователь apache.

> sudo -u apache ssh-keygen -t dsa

Имя файла по умолчанию в порядке. Не добавлять пароль. Дважды проверьте, что файлы были созданы.

> ls
-- id_dsa
-- id_dsa.pub

Теперь мы будем использовать метод MikroTik для загрузки ключа Apache ssh в 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 сообщение. Чтобы завершить импорт ssh-ключа в MikroTik:

> 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");

2>&1 это к труба STD_ERR к STD_OUT.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]