Modify 'ectl sv status'

This commit is contained in:
EnumDev 2025-03-12 15:38:16 +02:00
parent ce34b7b21a
commit 4b37214113
3 changed files with 54 additions and 24 deletions

View File

@ -2,7 +2,4 @@ module ectl
go 1.23.4
require (
gopkg.in/yaml.v3 v3.0.1 // indirect
rsc.io/getopt v0.0.0-20170811000552-20be20937449 // indirect
)
require gopkg.in/yaml.v3 v3.0.1

View File

@ -1,5 +1,4 @@
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
rsc.io/getopt v0.0.0-20170811000552-20be20937449 h1:UukjJOsjQH0DIuyyrcod6CXHS6cdaMMuJmrt+SN1j4A=
rsc.io/getopt v0.0.0-20170811000552-20be20937449/go.mod h1:dhCdeqAxkyt5u3/sKRkUXuHaMXUu1Pt13GTQAM2xnig=

View File

@ -226,26 +226,13 @@ func main() {
log.Fatalf("Could not get service status! Error: %s\n", err)
}
var state uint64
bytes, err := os.ReadFile(path.Join(runstatedir, "esvm", flag.Args()[2], "state"))
if err != nil {
state = 0
}
state, err = strconv.ParseUint(string(bytes), 10, 8)
state := getServiceState(flag.Args()[2])
enabled := strconv.FormatBool(isServiceEnabled(flag.Args()[2]))
enabled = strings.ToUpper(enabled[:1]) + strings.ToLower(enabled[1:])
fmt.Println("Service name: " + flag.Args()[2])
switch state {
case 0:
fmt.Println("Service state: Unknown")
case 1:
fmt.Println("Service state: Unloaded")
case 2:
fmt.Println("Service state: Running")
case 3:
fmt.Println("Service state: Stopped")
case 4:
fmt.Println("Service state: Crashed")
}
fmt.Printf(" State: %s\n", state)
fmt.Printf(" Enabled: %s\n", enabled)
return
}
}
@ -254,6 +241,53 @@ func main() {
os.Exit(1)
}
func getServiceState(serviceName string) string {
if _, err := os.Stat(path.Join(runstatedir, "esvm", serviceName)); err != nil {
return ""
}
var state uint64
bytes, err := os.ReadFile(path.Join(runstatedir, "esvm", serviceName, "state"))
if err != nil {
state = 0
}
state, err = strconv.ParseUint(string(bytes), 10, 8)
switch state {
case 1:
return "Unloaded"
case 2:
return "Running"
case 3:
return "Stopped"
case 4:
return "Crashed"
case 5:
return "Completed"
default:
return "Unknown"
}
}
func isServiceEnabled(serviceName string) bool {
if _, err := os.Stat(path.Join(sysconfdir, "esvm/enabled_services")); err != nil {
return false
}
file, err := os.ReadFile(path.Join(sysconfdir, "esvm/enabled_services"))
if err != nil {
return false
}
for _, line := range strings.Split(string(file), "\n") {
if strings.TrimSpace(line) == serviceName {
return true
}
}
return false
}
func printUsage() {
fmt.Println("Available sucommands:")
fmt.Println("ectl version | Show enit version")