package main import ( "encoding/json" "fmt" "os" "manage-servers/server-actions" "manage-servers/webserver" ) func main() { servers, err := loadServers("servers.json") if err != nil { fmt.Printf("Error loading servers: %v\n", err) return } if len(os.Args) < 2 { printUsage() return } command := os.Args[1] switch command { case "list": listServers(servers) case "wake": if len(os.Args) < 3 { fmt.Println("Please specify a server name to wake.") printUsage() return } serverName := os.Args[2] serveractions.WakeServer(serverName, servers) case "wakeall": serveractions.WakeAllServers(servers) case "status": serveractions.CheckServersStatus(servers) case "shutdown": if len(os.Args) < 3 { fmt.Println("Please specify a server name to shutdown.") printUsage() return } serverName := os.Args[2] serveractions.ShutdownServer(serverName, servers) case "reboot": if len(os.Args) < 3 { fmt.Println("Please specify a server name to reboot.") printUsage() return } serverName := os.Args[2] serveractions.RebootServer(serverName, servers) case "serve": webserver.StartWebServer(servers) default: fmt.Printf("Unknown command: %s\n", command) printUsage() } } func printUsage() { fmt.Println("Usage: go run . ") fmt.Println("Commands:") fmt.Println(" list - List all configured servers") fmt.Println(" wake - Wake a specific server") fmt.Println(" wakeall - Wake all configured servers") fmt.Println(" status - Check the status of all servers") fmt.Println(" shutdown - Shutdown a specific server") fmt.Println(" reboot - Reboot a specific server") fmt.Println(" serve - Start a web server to manage servers") } func loadServers(filename string) ([]serveractions.Server, error) { file, err := os.ReadFile(filename) if err != nil { return nil, err } var servers []serveractions.Server err = json.Unmarshal(file, &servers) if err != nil { return nil, err } return servers, nil } func listServers(servers []serveractions.Server) { fmt.Println("Configured Servers:") for _, s := range servers { fmt.Printf(" - %s (%s) - %s\n", s.Name, s.IP, s.Mac) } }