Перейти к содержимому

Сценарии оболочки и 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" } 

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

575 просмотров
Tom спросил 7 лет назад
T 4

1 ответ

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 · 7 лет назад · 0

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

glenn jackman · 7 лет назад · 1

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

Tom · 7 лет назад · 0

Что ж, посмотрим, сможете ли вы запросить API-интерфейс с учетом http-типа Content-запроса. Если вы запрашиваете «application / json», он должен отправить вам JSON, а если вы запрашиваете «text / plain», он может отправить вам var = value text

glenn jackman · 7 лет назад · 0
glenn jackman ответил 7 лет назад
G 15 551