-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmain.go
More file actions
67 lines (55 loc) · 1.69 KB
/
main.go
File metadata and controls
67 lines (55 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package main
import (
"encoding/json"
"flag"
"fmt"
"os"
"github.com/mkorz/b618reboot-go/routerclient"
)
type mandatoryFlags struct {
RouterURL *string
Username *string
Password *string
FlagSet *flag.FlagSet
}
func newFlagSet(name string) mandatoryFlags {
mf := mandatoryFlags{}
mf.FlagSet = flag.NewFlagSet(name, flag.ExitOnError)
mf.RouterURL = mf.FlagSet.String("url", os.Getenv("ROUTER_URL"), "router url ip or name (http://xxx.xxx.xx.xxx)")
mf.Username = mf.FlagSet.String("username", os.Getenv("ROUTER_USERNAME"), "username for router account")
mf.Password = mf.FlagSet.String("password", os.Getenv("ROUTER_PASSWORD"), "password for router account")
return mf
}
func main() {
signalStatsCmdFlags := newFlagSet("signal-stats")
rebootCmdFlags := newFlagSet("reboot")
if len(os.Args) < 2 || os.Args[1] == "help" {
fmt.Println("one of the following commands is required: signal-stats, reboot")
os.Exit(1)
}
var client *routerclient.RouterClient
var err error
switch os.Args[1] {
case "signal-stats":
signalStatsCmdFlags.FlagSet.Parse(os.Args[2:])
client, err = routerclient.NewRouterClient(*signalStatsCmdFlags.RouterURL, *signalStatsCmdFlags.Username, *signalStatsCmdFlags.Password)
if err != nil {
panic(err)
}
err = client.Login()
stats, _ := client.GetSignalStats()
out, _ := json.Marshal(stats)
fmt.Println(string(out))
case "reboot":
rebootCmdFlags.FlagSet.Parse(os.Args[2:])
client, err = routerclient.NewRouterClient(*rebootCmdFlags.RouterURL, *rebootCmdFlags.Username, *rebootCmdFlags.Password)
if err != nil {
panic(err)
}
err = client.Login()
client.Reboot()
default:
fmt.Printf("invalid command: %q\n", os.Args[1])
os.Exit(1)
}
}