75 lines
1.7 KiB
Go
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)
|
|
}
|
|
}
|
|
|
|
|