Shell-Scripting und Json

499
Tom

Grundsätzlich habe ich einen Openwrt-Router. Ich möchte, dass ein Shell-Skript ausgeführt wird, um eine Verbindung zu einer API herzustellen, seine MAC-Adresse als Authentifizierung zu verwenden und eine JSON-Datei herunterzuladen.

Da die API noch nicht erstellt ist, habe ich manuell eine JSON-Datei erstellt, und das Skript soll einige Werte aus dem JSON lesen und in separaten Variablen speichern.

Ich habe curl verwendet, um die JSON-Datei zu erhalten. Jetzt brauche ich das Skript, um sie zu lesen und jeden Wert in einer separaten Variable zu speichern.

Ich sehe nur online jq ( https://stedolan.github.io/jq/ ), aber der Speicher des kleinen Routers ist nur noch 4 MB groß, der Router hat jshn installiert ( https://github.com/m- labs / openwrt-milkymist / blob / master / package / jshn / example.txt ). Irgendwelche Ideen, wie ich das Skript schreiben sollte?

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

Danke im Voraus,

0
Kontrollieren Sie das Format der Einstellungsdatei, die Sie herunterladen? glenn jackman vor 5 Jahren 0
Ja! Es ist im Moment ein typisiertes Json. Ich werde eine API-API erstellen, wenn die Shell-Skripte funktionieren :) Tom vor 5 Jahren 0
Ich habe versucht, die Grammatik in diesem Beitrag aufzuräumen, aber ich verstehe absolut nicht, was "... mein Opener-Router ..." bedeutet, oder was dies bedeutet "Ich habe also eine JSON-Datei erstellt, und ich muss einige Werte in eine Variable einlesen . Ich habe curl verwendet, um die JSON-Datei zu erhalten. Jetzt muss ich sie lesen und aufteilen. “ JakeGould vor 5 Jahren 0
Frage bearbeitet Tom vor 5 Jahren 0
Warten Sie, Sie haben ein JSON-Parsing-Programm erhalten. Verwenden Sie es also, warum fragen Sie uns? glenn jackman vor 5 Jahren 0
Ich fand, dass die Box diese hatte, nachdem die Frage veröffentlicht wurde, also dachte ich, ich würde die Meinung der Leute darüber einholen, ob wir die Jshn oder eine andere Methode haben, und natürlich wären alle Beispiele genial. Ich schätze die Zeit aller, aber wenn niemand sonst etwas kommentieren möchte, kann sie geschlossen / gelöscht werden Tom vor 5 Jahren 0

1 Antwort auf die Frage

3
glenn jackman

Da Sie den Inhalt dieser JSON-Datei steuern und auf einem Low-Memory-Gerät mit Shell verarbeiten müssen, verwenden Sie keine JSON: Output- Shell-Syntax, und Sie können sourcedies direkt tun

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

Dann, nachdem Sie es heruntergeladen haben, sagen Sie, status.sh

. ./status.sh do_something_with "$status" do_something_else_with "$vpn" "$vpnstatus"  
Vielen Dank für Ihre Antwort Glenn, es ist eine sehr clevere Methode, aber ich glaube, dass die API nur JSON ausgeben wird. Vielen Dank Tom vor 5 Jahren 0
Warum? Wie Sie gesagt haben, ist das API noch nicht gebaut. glenn jackman vor 5 Jahren 1
Ich baue es nicht, ich kann den Ausgabeinhalt angeben, aber nicht das Format. Vielen Dank Tom vor 5 Jahren 0
Sehen Sie nach, ob Sie die API für den Inhaltstyp der HTTP-Anforderung anfordern können. Wenn Sie "application / json" anfordern, sollte es Ihnen JSON senden, und wenn Sie "text / plain" anfordern, kann es Ihnen var = value text senden glenn jackman vor 5 Jahren 0