package wifi import ( "log" "os/exec" "strings" ) const ( CMD_NMCLI = "/usr/bin/nmcli" ) type wifi struct { essid string password string } func New(essid string, password string) *wifi { w := wifi{ essid: essid, password: password, } return &w } func (w *wifi) ApplyConfig() { // Cleanup existing WiFi connections nmcliOut, err := exec.Command(CMD_NMCLI, "-t", "connection", "show").Output() if err != nil { log.Fatalf("Error running %s : %s", CMD_NMCLI, err) } connections := strings.Split(strings.Trim(string(nmcliOut), "\n"), "\n") for _, connection := range connections { details := strings.Split(connection, ":") if details[2] != "802-11-wireless" { continue } err := exec.Command(CMD_NMCLI, "connection", "del", details[1]).Run() if err != nil { log.Fatalf("Error running %s : %s", CMD_NMCLI, err) } } // Create new WiFi connection with network manager err = exec.Command(CMD_NMCLI, "d", "wifi", "connect", w.essid, "password", w.password).Run() if err != nil { log.Fatalf("Error running %s : %s", CMD_NMCLI, err) } }