Max Agapov Posted December 26, 2020 Posted December 26, 2020 Всем добра! Пытаюсь отправить запрос на смену класса обслуживания /usr/bin/curl -s --digest --user admin:passwd "http://10.0.0.1/ci" -H "Content-Type: application/xml" --data-binary ' <request id="1"> <command name="ip hotspot service-class 6"> <mac>b4:00:cb:fa:cc:aa</mac> </command> </request>' Выходит ошибка <packet> <response id="1"> <error code="7471107" ident="Command::Root" source="" critical="no">no input [http/ci].</error> </response> </packet> Документацию читал, но там не ясно как отправлять аргумент класса Версия 3.5.6 Quote
1 ndm Posted December 27, 2020 Posted December 27, 2020 17 hours ago, Max Agapov said: <request id="1"> <command name="ip hotspot service-class 6"> <mac>b4:00:cb:fa:cc:aa</mac> </command> </request> Во-первых, команда называется "ip hotspot host service-class", а не "ip hotspot service-class". Во-вторых, нужно подправить документацию. "6" — это аргумент с названием "service-class". То есть в /ci надо слать <service-class>6</service-class>. <request id="1"> <command name="ip hotspot host service-class"> <service-class>6</service-class> <mac>b4:00:cb:fa:cc:aa</mac> </command> </request> В-третьих, что более важно, интерфейс /ci будет выходить из обращения, и есть пара более свежих способов. Современный интерфейс API называется /rci. Но для удобной авторизации в нём нужно добавить прокси. Включаем прокси Делаем доменное имя в виде токена из набора случайных символов. Осторожно: мы проксируем запросы на 127.0.0.1:79, где /rci доступен без пароля, поэтому для уверенности можем добавить авторизацию. Она настраивается в командной строке. Создадим пользователя с именем "api" и паролем "---password---". (config)> ip http proxy emuxev3f-rgn3edfn-pkgc8v9n auth Http::Proxy: "emuxev3f-rgn3edfn-pkgc8v9n": enabled authentication. (config)> user api Core::Authenticator: User "api" has been added. (config-user)> tag http-proxy Core::Authenticator: User "api" tagged with "http-proxy". (config-user)> password ---password--- Core::Authenticator: Password set has been changed for user "api". (config-user)> exit Core::Configurator: Done. (config)> system configuration save Core::ConfigurationSaver: Saving configuration... Теперь возвращаемся к задаче про service-class. /rci/parse Принимает ввод команды в виде строки. (Строка должна быть в двойных кавычках согласно RFC.) curl "https://emuxev3f-rgn3edfn-pkgc8v9n.giga4.keenetic.limited/rci/parse" \ --user "api:---password---" \ --request POST \ --header "Content-Type: application/json" \ --data-ascii '"ip hotspot host b4:00:cb:fa:cc:aa service-class 6"' /rci/ip/hotspot/host/service-class Принимает объект JSON. curl "https://emuxev3f-rgn3edfn-pkgc8v9n.giga4.keenetic.limited/rci/ip/hotspot/host/service-class" \ --user "api:---password---" \ --request POST \ --header "Content-Type: application/json" \ --data-ascii '{"mac":"b4:00:cb:fa:cc:aa","service-class":6}' { "status": [ { "status": "message", "code": "19008040", "ident": "Hotspot::Manager", "message": "service class \"6\" applied to host \"b4:00:cb:fa:cc:aa\"." } ] } 1 Quote
Question
Max Agapov
Всем добра!
Пытаюсь отправить запрос на смену класса обслуживания
/usr/bin/curl -s --digest --user admin:passwd "http://10.0.0.1/ci" -H "Content-Type: application/xml" --data-binary '
<request id="1">
<command name="ip hotspot service-class 6">
<mac>b4:00:cb:fa:cc:aa</mac>
</command>
</request>'
Выходит ошибка
<packet>
<response id="1">
<error code="7471107" ident="Command::Root" source="" critical="no">no input [http/ci].</error>
</response>
</packet>
Документацию читал, но там не ясно как отправлять аргумент класса
Версия 3.5.6
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.