github.com/dim13/unifi@v0.0.0-20230308161331-9b04946f5e93/cmd/list-usws/main.go (about) 1 // Copyright (c) 2014 The unifi Authors. All rights reserved. 2 // Use of this source code is governed by ISC-style license 3 // that can be found in the LICENSE file. 4 5 // Example command list-usws 6 // List USWs of a given site 7 package main 8 9 import ( 10 "flag" 11 "fmt" 12 "log" 13 "os" 14 "strconv" 15 "strings" 16 "text/tabwriter" 17 18 "github.com/dim13/unifi" 19 ) 20 21 var ( 22 host = flag.String("host", "unifi", "Controller hostname") 23 user = flag.String("user", "admin", "Controller username") 24 pass = flag.String("pass", "unifi", "Controller password") 25 version = flag.Int("version", 5, "Controller base version") 26 port = flag.String("port", "8443", "Controller port") 27 siteid = flag.String("siteid", "default", "Sitename or description") 28 ) 29 30 func main() { 31 w := new(tabwriter.Writer) 32 w.Init(os.Stdout, 0, 8, 3, ' ', 0) 33 defer w.Flush() 34 35 flag.Parse() 36 37 u, err := unifi.Login(*user, *pass, *host, *port, *siteid, *version) 38 if err != nil { 39 log.Fatalln("Login returned error: ", err) 40 return 41 } 42 defer u.Logout() 43 44 site, err := u.Site(*siteid) 45 if err != nil { 46 log.Fatal(err) 47 } 48 49 aps, err := u.USWs(site) 50 if err != nil { 51 log.Fatalln(err) 52 return 53 } 54 55 // Output headline 56 fmt.Fprintln(w, "DeviceName\tIP\tMac\tModelName\tVersion\tStatus\tNumberOfClients\tTxBytes\tRxBytes") 57 58 for _, s := range aps { 59 p := []string{ 60 s.DeviceName(), // Serial if not specified 61 s.IP, 62 s.Mac, 63 s.ModelName(), 64 s.Version, 65 s.State.String(), 66 strconv.Itoa(s.NumSta), 67 strings.TrimSpace(unifi.Bytes(s.TxBytes).String()), 68 strings.TrimSpace(unifi.Bytes(s.RxBytes).String()), 69 } 70 fmt.Fprintln(w, strings.Join(p, "\t")) 71 } 72 }