Shell scripting và Json [đã đóng]


0

Về cơ bản, tôi có một bộ định tuyến openwrt. Tôi muốn nó chạy tập lệnh shell để kết nối với API, sử dụng địa chỉ MAC của nó làm xác thực và tải xuống tệp JSON.

Vì API chưa được xây dựng nên tôi đã tạo một tệp JSON theo cách thủ công và tôi muốn tập lệnh đọc một số giá trị từ JSON và lưu trữ chúng trong các biến riêng biệt.

Tôi đã sử dụng curl để lấy tệp JSON, bây giờ tôi cần tập lệnh để đọc nó và lưu trữ từng giá trị trong một biến số vừa phải.

Tất cả những gì tôi thấy trực tuyến là sử dụng jq ( https://stedolan.github.io/jq/ ) nhưng bộ nhớ của bộ định tuyến nhỏ chỉ còn 4 MB, bộ định tuyến đã cài đặt jshn ( https://github.com/m-labs/openwrt-milkymist/blob/master/package/jshn/example.txt ). Bất kỳ ý tưởng về cách tôi nên viết kịch bản?

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

Cảm ơn trước,


Bạn có kiểm soát định dạng của tệp cài đặt bạn tải xuống không?
glenn jackman

Vâng! nó là một json gõ vào lúc này, tôi sẽ tạo một ứng dụng xuất api khi các kịch bản shell đang hoạt động :)
Tom

Tôi đã cố gắng làm sạch ngữ pháp trong bài đăng này, nhưng tôi hoàn toàn không hiểu bộ định tuyến bộ mở của mình, bộ định tuyến, bộ dữ liệu có nghĩa là gì, vì vậy tôi đã tạo một tệp JSON và tôi cần đọc một số giá trị cho một biến . Tôi đã sử dụng curl để lấy tệp JSON, bây giờ tôi cần đọc và tách nó.
JakeGould

Chỉnh sửa câu hỏi
Tom

Đợi đã, bạn đã được cung cấp một tiện ích phân tích cú pháp JSON. Vì vậy, sử dụng nó, tại sao bạn hỏi chúng tôi?
glenn jackman

Câu trả lời:


3

Vì bạn kiểm soát nội dung của tệp JSON đó và vì bạn cần xử lý nó bằng shell trên thiết bị có bộ nhớ thấp, không sử dụng JSON: output cú pháp shell và bạn có thể source nó trực tiếp

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

Sau đó, sau khi bạn được tải xuống, hãy nói, status.sh

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

Cảm ơn câu trả lời của bạn Glenn, đây là một cách rất thông minh để tiếp cận nó nhưng tôi tin rằng API sẽ chỉ xuất JSON. Cảm ơn
Tom

1
Tại sao? Như bạn đã nói, api chưa được xây dựng.
glenn jackman

Tôi không xây dựng nó, tôi có thể chỉ định nội dung đầu ra nhưng không phải là định dạng. Cảm ơn
Tom

Chà, xem bạn có thể yêu cầu api tôn trọng Kiểu nội dung của yêu cầu http không. Nếu bạn yêu cầu "application / json", nó sẽ gửi cho bạn JSON và nếu bạn yêu cầu "text / plain", nó có thể gửi cho bạn var = value text
glenn jackman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.