Projekte

GWN API mit cURL / Bash Script nutzen

Ich wollte die API meines Grandstream GWN Managers nutzen um die Anwesenheit der Mobiltelefone auszulesen.

Ein bisschen musste ich basteln und testen, aber folgende Beispiele funktionieren (wobei ich es noch nicht hinbekommen habe den Filter (mit den verschachtelten Klammer im JSON-Aufruf) zu nutzen)...

Details zu einem Client (MAC-Adresse) abrufen:

appid="<hier App ID der API einfügen>"
secret="<hier das secret der API einfügen>"
clientmac="00:11:22:AA:BB:CC"
tokendata="grant_type=client_credentials&client_id=${appid}&client_secret=${secret}"
token=$(curl -s -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "${tokendata}" "https://<hostname oder IP des GWN Managers>:8443/oauth/token" | jq -r '.access_token')
timestamp=$(date +%s)
body='{"clientId":"'${clientmac}'","networkId":1}'
bodysha256=($(echo -n $body | sha256sum))
signature=($(echo -n "&appID=${appid}&secretKey=${secret}&timestamp=${timestamp}000&${bodysha256}&" | sha256sum))
url="https://<hostname oder IP des GWN Managers>:8443/oapi/v1.0.0/client/info?appID=${appid}&timestamp=${timestamp}000&signature=${signature}"
apiret=$(curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ${token}" -d $body "$url")
echo $apiret

Übersicht Clients mit Filter auf eine MAC-Adresse:

appid="<hier App ID der API einfügen>"
secret="<hier das secret der API einfügen>"
clientmac="00:11:22:AA:BB:CC"
tokendata="grant_type=client_credentials&client_id=${appid}&client_secret=${secret}"
token=$(curl -s -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "${tokendata}" "https://<hostname oder IP des GWN Managers>:8443/oauth/token" | jq -r '.access_token')
timestamp=$(date +%s)
body='{"search":"'${clientmac}'","networkId":1}'
bodysha256=($(echo -n $body | sha256sum))
signature=($(echo -n "&appID=${appid}&secretKey=${secret}&timestamp=${timestamp}000&${bodysha256}&" | sha256sum))
url="https://<hostname oder IP des GWN Managers>:8443/oapi/v1.0.0/client/list?appID=${GWNAppID}&timestamp=${timestamp}000&signature=${signature}"
apiret=$(curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ${token}" -d $body "$url")
echo $apiret

 

Copyright © Matthias Kind
(If not marked separately, all content on this site is CC-BY)