code stolen from project timeserver-monitoring
This commit is contained in:
74
snippets/test01.go
Normal file
74
snippets/test01.go
Normal file
@ -0,0 +1,74 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user