feat: Initial commit of the server management tool
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
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 . <command>")
|
||||
fmt.Println("Commands:")
|
||||
fmt.Println(" list - List all configured servers")
|
||||
fmt.Println(" wake <server_name> - Wake a specific server")
|
||||
fmt.Println(" wakeall - Wake all configured servers")
|
||||
fmt.Println(" status - Check the status of all servers")
|
||||
fmt.Println(" shutdown <server_name> - Shutdown a specific server")
|
||||
fmt.Println(" reboot <server_name> - 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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user