Этот пример был выполнен на машине 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.