github.com/dim13/unifi@v0.0.0-20230308161331-9b04946f5e93/cmd/list-uaps/main.go (about) 1 // Copyright (c) 2014 Dimitri Sokolyuk. 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-aps 6 // List APs 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.UAPs(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\tNumberOfUsers\tNumerOfGuests\tTxBytes\tRxBytes") 57 58 for _, a := range aps { 59 p := []string{ 60 a.DeviceName(), 61 a.IP, 62 a.Mac, 63 a.ModelName(), 64 a.Version, 65 a.State.String(), 66 strconv.Itoa(a.NumSta), 67 strconv.Itoa(a.GuestNumSta), 68 unifi.Bytes(a.TxBytes).String(), 69 unifi.Bytes(a.RxBytes).String(), 70 } 71 fmt.Fprintln(w, strings.Join(p, "\t")) 72 } 73 }