В этой статье описаны примеры использования 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 {
}