Сценарии оболочки и Json

428
Tom

В основном у меня есть роутер 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" } 

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

0
Контролируете ли вы формат загружаемого файла настроек? glenn jackman 5 лет назад 0
Ага! на данный момент это типизированный json, я буду заставлять приложение выводить API, когда скрипты оболочки работают :) Tom 5 лет назад 0
Я попытался очистить грамматику в этом посте, но я совершенно не понимаю, что означает «… мой маршрутизатор открывателей…», и что это значит «Итак, я создал файл JSON, и мне нужно прочитать некоторые значения в переменную , Я использовал curl, чтобы получить файл JSON, теперь мне нужно прочитать и разбить его ». JakeGould 5 лет назад 0
Отредактировал вопрос Tom 5 лет назад 0
Подождите, вы получили утилиту анализа JSON. Так что используйте его, почему вы спрашиваете нас? glenn jackman 5 лет назад 0
Я нашел коробку с этим после того, как вопрос был опубликован, поэтому подумал, что смогу узнать мнение людей о том, подходит ли нам jshn или другой метод, и, конечно, любые примеры будут блестящими. Я ценю время каждого, но если никто не хочет комментировать, его можно закрыть / удалить Tom 5 лет назад 0

1 ответ на вопрос

3
glenn jackman

Так как вы управляете содержимым этого файла 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 5 лет назад 0
Зачем? Как вы сказали, API еще не построен. glenn jackman 5 лет назад 1
Я не строю его, я могу указать содержимое вывода, но не формат. Спасибо Tom 5 лет назад 0
Что ж, посмотрим, сможете ли вы запросить API-интерфейс с учетом http-типа Content-запроса. Если вы запрашиваете «application / json», он должен отправить вам JSON, а если вы запрашиваете «text / plain», он может отправить вам var = value text glenn jackman 5 лет назад 0

Похожие вопросы