75 lines
1.7 KiB
Go

package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
// Struktur für die JSON-Daten
type NTPResponse struct {
History []struct {
Timestamp int `json:"ts"`
Step int `json:"step"`
Score float64 `json:"score"`
MonitorID int `json:"monitor_id"`
} `json:"history"`
Monitors []struct {
ID int `json:"id"`
Name string `json:"name"`
Type string `json:"type"`
Ts string `json:"ts"`
Score float64 `json:"score"`
Status string `json:"status"`
} `json:"monitors"`
Server struct {
IP string `json:"ip"`
} `json:"server"`
}
func main() {
// URL für die API-Abfrage
url := "https://www.ntppool.org/scores/93.241.86.156/json?limit=1&monitor=24"
// HTTP-GET-Anfrage senden
resp, err := http.Get(url)
if err != nil {
fmt.Println("Fehler beim Abrufen der URL:", err)
return
}
defer resp.Body.Close()
// Antwort lesen
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Fehler beim Lesen der Antwort:", err)
return
}
// JSON-Daten in Struct einlesen
var data NTPResponse
err = json.Unmarshal(body, &data)
if err != nil {
fmt.Println("Fehler beim Parsen des JSON:", err)
return
}
// Ausgabe der eingelesenen Daten
fmt.Println("NTP Server IP:", data.Server.IP)
if len(data.History) > 0 {
fmt.Println("Letzte Messung:")
fmt.Printf(" Zeitstempel: %d\n", data.History[0].Timestamp)
fmt.Printf(" Score: %.2f\n", data.History[0].Score)
fmt.Printf(" Monitor ID: %d\n", data.History[0].MonitorID)
}
if len(data.Monitors) > 0 {
fmt.Println("Monitor Info:")
fmt.Printf(" Name: %s\n", data.Monitors[0].Name)
fmt.Printf(" Score: %.2f\n", data.Monitors[0].Score)
fmt.Printf(" Status: %s\n", data.Monitors[0].Status)
}
}