Select Git revision
vmCreds2csv.go
vmCreds2csv.go 2.05 KiB
package cmdVM
import (
"os"
"fmt"
"strconv"
u "nexus-client/utils"
)
const (
separator = ";"
)
type Creds2csv struct {
Name string
}
func (cmd *Creds2csv)GetName() string {
return cmd.Name
}
func (cmd *Creds2csv)GetDesc() []string {
return []string{
"Creates a CSV file with the credentials required to attach to running VMs.",
"The written CSV file contains 4 columns: VM ID;VM name;port;password",
"Requires VM_LIST VM access capability or VM_LIST_ANY user capability."}
}
func (cmd *Creds2csv)PrintUsage() {
for _, desc := range cmd.GetDesc() {
u.PrintlnErr(desc)
}
u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――")
u.PrintlnErr("USAGE: ",cmd.GetName()," [ID ...] [regex ...] csvfile")
u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――")
printRegexUsageDetails()
}
func (cmd *Creds2csv)Run(args []string) int {
argc := len(args)
if argc < 2 {
cmd.PrintUsage()
return 1
}
csvFile := args[argc-1]
vms, err := getFilteredVMs("/vms/attach", args[:argc-1])
if err != nil {
u.PrintlnErr("Error: "+err.Error())
return 1
}
if len(vms) == 0 {
u.PrintlnErr("Error: VM(s) not found.")
return 1
}
// Create file
f, err := os.Create(csvFile)
if err != nil {
u.PrintlnErr("Error: "+err.Error())
return 1
}
defer f.Close()
for _, vm := range vms {
_, err := fmt.Fprintln(f, vm.ID.String()+separator+vm.Name+separator+strconv.Itoa(vm.Port)+separator+vm.Pwd)
if err != nil {
u.PrintlnErr("Error: "+err.Error())
return 1
}
}
u.Println(csvFile+" written successfully.")
return 0
}