Управление настройками роутера LT7x через HTTP-запросы

Управление настройками роутера LT7x через HTTP-запросы

В этой статье описаны примеры использования JSON-RPC API для удаленного управления роутером LT71 на примере изменения параметров точки доступа WiFi. Для выполнения команд используется Windows PowerShell.

С дополнительной информацией по использованию JSON-RPC API можно ознакомиться здесь:
HowTo: Using the JSON-RPC API
Managing OpenWrt remotely with cURL


Получение токена аутентификации

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

В атрибуте "params" необходимо указать логин/пароль для авторизации в устройстве. По умолчанию - root/root.

В атрибуте -Uri следует указать локальный IP-адрес роутера. По умолчанию - 192.168.88.1

$body = @{ id = 1; method = "login"; params = @("root", "root") } | ConvertTo-Json
$authResponse = Invoke-RestMethod -Uri "http://192.168.88.1/cgi-bin/luci/rpc/auth" -Method Post -Body $body -ContentType "application/json"
$authToken = $authResponse.result
Write-Host "Token: $authToken"

В ответ мы получим токен авторизации для API запросов, который автоматически запишется в переменную $authToken

Изменение SSID Wi-Fi

Пример команды для изменения имени Wi-Fi сети (SSID).

$body = @{ id = 1; method = "set"; params = @("wireless", "default_radio0", "ssid", "NEWSSID") } | ConvertTo-Json
$uri = "http://192.168.88.1/cgi-bin/luci/rpc/uci?auth=$authToken"
$response = Invoke-RestMethod -Uri $uri -Method Post -Body $body -ContentType "application/json"
Write-Host "Response: $($response | ConvertTo-Json)"

Изменение пароля Wi-Fi

Пример команды для изменения пароля Wi-Fi сети.

$body = @{ id = 1; method = "set"; params = @("wireless", "default_radio0", "key", "NEWPASS123") } | ConvertTo-Json
$uri = "http://192.168.88.1/cgi-bin/luci/rpc/uci?auth=$authToken"
$response = Invoke-RestMethod -Uri $uri -Method Post -Body $body -ContentType "application/json"
Write-Host "Response: $($response | ConvertTo-Json)"

Применение изменений

После внесения изменений в конфигурацию, их необходимо применить.

$body = @{ id = 1; method = "commit"; params = @("wireless") } | ConvertTo-Json
$uri = "http://192.168.88.1/cgi-bin/luci/rpc/uci?auth=$authToken"
$response = Invoke-RestMethod -Uri $uri -Method Post -Body $body -ContentType "application/json"
Write-Host "Response: $($response | ConvertTo-Json)"

В ответ на каждый запрос мы должны получать сообщения следующего содержания, где результат будет true. Если значение result отличается, значит в запросе была допущена ошибка или роутер не принял команду:

Соответственно, далее можем сравнить параметры до:

и после:


Дополнительные команды для получения информации

Полная информация о модеме

Для получения подробной информации о состоянии модема выполните следующую команду:

$body = @{ id = 1; method = "exec"; params = @("simman2_cli -a core") } | ConvertTo-Json -Compress
$uri = "http://192.168.88.1/cgi-bin/luci/rpc/sys?auth=$authToken"
try {
    $response = Invoke-RestMethod -Uri $uri -Method Post -Body $body -ContentType "application/json"
    Write-Host $response.result
} catch {
}

Информация об устройстве (температура, напряжение)

Для получения данных о температуре и напряжении устройства используйте команду:

$body = @{ id = 1; method = "exec"; params = @("ubus call info info") } | ConvertTo-Json -Compress
$uri = "http://192.168.88.1/cgi-bin/luci/rpc/sys?auth=$authToken"
try {
    $response = Invoke-RestMethod -Uri $uri -Method Post -Body $body -ContentType "application/json"
    Write-Host $response.result
} catch {
}