Сценарии оболочки и Json [закрыто]


0

В основном у меня есть роутер openwrt. Я хочу, чтобы он запускал сценарий оболочки для подключения к API, используя его MAC-адрес в качестве аутентификации и загружал файл JSON.

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

Я использовал curl для получения файла JSON, теперь мне нужен скрипт для его чтения и сохранения каждого значения в отдельной переменной.

Все, что я вижу в Интернете, это использовать jq ( https://stedolan.github.io/jq/ ) но памяти маленького маршрутизатора осталось всего 4 МБ, на маршрутизаторе установлен jshn ( https://github.com/m-labs/openwrt-milkymist/blob/master/package/jshn/example.txt ). Есть идеи, как мне написать сценарий?

{
  "mac": "8d:ff:86:7d:9c",
  "adblock": "off",
  "parental": "off",
  "vpn": "newyork1.ovpn",
  "vpnstatus": "off",
  "status": "active"
}

Заранее спасибо,


Контролируете ли вы формат загружаемого файла настроек?
glenn jackman

Ага! на данный момент это типизированный json, я буду заставлять приложение выводить API, когда скрипты оболочки работают :)
Tom

Я попытался очистить грамматику в этом посте, но я совершенно не понимаю, что означает «… мой маршрутизатор открывателей…», и что это значит «Итак, я создал файл JSON, и мне нужно прочитать некоторые значения в переменную , Я использовал curl, чтобы получить файл JSON, теперь мне нужно прочитать и разбить его ».
JakeGould

Отредактировал вопрос
Tom

Подождите, вы получили утилиту синтаксического анализа JSON. Так что используйте его, почему вы спрашиваете нас?
glenn jackman

Ответы:


3

Поскольку вы управляете содержимым этого JSON-файла и вам необходимо обрабатывать его с помощью оболочки на устройстве с малым объемом памяти, не используйте JSON: output синтаксис оболочки и ты можешь source это напрямую

mac="8d:ff:86:7d:9c"
adblock="off"
parental="off"
vpn="newyork1.ovpn"
vpnstatus="off"
status="active" 

Затем, после того как вы загрузите его, скажем, status.sh

. ./status.sh
do_something_with "$status"
do_something_else_with "$vpn" "$vpnstatus" 

Спасибо за ваш ответ, Гленн, это очень умный способ приблизиться к нему, но я верю, что API будет выводить только JSON. Спасибо
Tom

1
Зачем? Как вы сказали, API еще не построен.
glenn jackman

Я не строю его, я могу указать содержимое вывода, но не формат. Спасибо
Tom

Что ж, посмотрим, сможете ли вы запросить API-интерфейс с учетом http-типа Content-запроса. Если вы запрашиваете «application / json», он должен отправить вам JSON, а если вы запрашиваете «text / plain», он может отправить вам var = value text
glenn jackman
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.