2015-02-05 6 views
0

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

Итак, как автоматизировать извлечение данных из 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. Чтобы создать это, предполагая, что это еще не существует на сервере (также предполагая, что пользователь апачский на самом деле «Апач»:

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

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

.
> sudo -u apache ssh-keygen -t dsa 

имя файла по умолчанию является штраф. Don't add a password. Дважды проверьте, что файлы были созданы.

> ls 
-- id_dsa 
-- id_dsa.pub 

Мы будем теперь использовать метод MikroTik для загрузки ключа SSH сервера Apache на 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 может автоматически подключаться к 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.