network/preseem/cmd_cpe.go
2026-07-19 14:42:02 -05:00

43 lines
1 KiB
Go

package main
import (
"encoding/json"
"flag"
"fmt"
)
func cmdCPEScores(args []string) error {
fs := flag.NewFlagSet("cpe-scores", flag.ExitOnError)
jsonMode := fs.Bool("json", false, "emit raw API JSON")
if err := fs.Parse(args); err != nil {
return err
}
c, err := NewClient()
if err != nil {
return err
}
var raw []byte
if err := c.get(apiPrefix+"/cpe_radio_scores", nil, &raw); err != nil {
return err
}
if *jsonMode {
return printJSON(raw)
}
var arr []CPERadioScore
if err := json.Unmarshal(raw, &arr); err != nil {
var one CPERadioScore
if err2 := json.Unmarshal(raw, &one); err2 == nil {
arr = []CPERadioScore{one}
} else {
return fmt.Errorf("decode cpe-scores: %w (body: %s)", err, truncate(string(raw), 200))
}
}
tw := newTab()
fmt.Fprintln(tw, "NAME\tSTATUS\tAP\tSITE\tRF\tBV\tFW")
for _, s := range arr {
fmt.Fprintf(tw, "%s\t%s\t%s\t%s\t%.1f\t%.1f\t%s\n",
s.Name, s.Status, s.APName, s.APSiteName,
s.RFScore, s.BusinessValue, s.Firmware)
}
return tw.Flush()
}