Как очистить local-address и remote-address в MikroTik PPP Secret с помощью Laravel API

Вопрос или проблема

Я использую пакет evilfreelancer/routeros-api-php для взаимодействия с маршрутизатором MikroTik через API. После создания PPP-секретного пользователя со статическим IP я хочу очистить или удалить значения полей local-address и remote-address.

Вот что я пробовал:

  1. Установка local-address и remote-address в null:
$query->equal('local-address', null);
$query->equal('remote-address', null);
  1. Установка их в пустую строку:
$query->equal('local-address', '');
$query->equal('remote-address', '');

Оба подхода приводят к ошибке:

array (
    'after' => array (
        'message' => 'invalid value for argument address',
    ),
)

Кажется, что null и “” не являются допустимыми значениями для этих полей. В терминале MikroTik я могу очистить их, установив local-address и remote-address в 0.0.0.0, но я ищу способ сделать это через API.

Кто-нибудь успешно очистил эти поля с использованием laravel? Есть ли способ “удалить” эти значения через API, или установка на 0.0.0.0 является единственным обходным решением?

Ответ или решение

Чтобы очистить поля local-address и remote-address в PPP Secret на маршрутизаторе MikroTik с использованием Laravel API, вам, вероятно, придется использовать предоставленный интерфейс API и его возможности. Исходя из вашего описания, вы столкнулись с проблемой, когда попытка сбросить эти поля приводит к ошибке. Ниже приведены шаги, которые помогут вам решить эту задачу.

Шаг 1: Обзор проблемы

Вы используете пакет evilfreelancer/routeros-api-php для взаимодействия с маршрутизатором MikroTik. Вы уже попытались установить значения null и пустую строку ("") для полей local-address и remote-address, но получили ошибку, указывающую на недопустимые значения. Как вы заметили, в терминале MikroTik возможно установить эти поля в 0.0.0.0, и это может быть вашим наиболее целесообразным выходом.

Шаг 2: Настройка API-запроса

Для корректной работы с API MikroTik и правильной очистки значений, вы должны отправить запрос на изменение секретов PPP следующим образом:

use RouterOS\Client;
use RouterOS\Query;

$client = new Client([
    'host'     => 'Ваш_IP_маршрутизатора',
    'username' => 'Ваш_пользователь',
    'password' => 'Ваш_пароль',
]);

// Создаем запрос к PPP Secret
$secretId = 'ID_вашего_PPSecret'; // Укажите ID секрета, который необходимо изменить

$query = new Query('/ppp/secret/set');
$query->equal('id', $secretId);
$query->equal('local-address', '0.0.0.0'); // Устанавливаем значение
$query->equal('remote-address', '0.0.0.0'); // Устанавливаем значение

try {
    $response = $client->query($query)->read();
    print_r($response);
} catch (Exception $e) {
    echo 'Ошибка: ' . $e->getMessage();
}

Шаг 3: Проверка изменения

После выполнения запроса вам следует проверить изменения, чтобы убедиться, что поля действительно очищены. Вы можете использовать следующий код для получения информации о PPPSecrets:

$query = new Query('/ppp/secret/print');
$response = $client->query($query)->read();

foreach ($response as $secret) {
    if ($secret['.id'] == $secretId) {
        echo 'Local Address: ' . $secret['local-address'] . PHP_EOL;
        echo 'Remote Address: ' . $secret['remote-address'] . PHP_EOL;
    }
}

Заключение

Используя этот подход, вы сможете очистить значения local-address и remote-address, установив их в 0.0.0.0, что является общепринятым способом их сброса. Это позволит избежать ошибок, возникающих при попытке установить эти поля в null или в пустую строку. Убедитесь, что вы тестируете вашу настройку в безопасной среде перед применением изменений в продакшене.

Пожалуйста, дайте знать, если у вас есть дополнительные вопросы или если вам требуется дальнейшая помощь.

Оцените материал
Добавить комментарий

Капча загружается...