Skip to content
Snippets Groups Projects
Select Git revision
  • 28bd8ec8a225bdc9e81ad3966329960ccacbb239
  • main default protected
  • jw_sonar
  • v6.0.0 protected
  • bedran_exercise-list
  • ask-user-to-delete-exercises-on-duplicates
  • update-dependencies
  • jw_sonar_backup
  • add_route_assignments
  • 6.0.0-dev
  • 5.0.1
  • 5.0.0
  • 4.1.0
  • 4.0.0
  • 3.5.3
  • 3.5.2
  • 3.5.1
  • 3.5.0
  • 3.4.2
  • 3.4.1
  • 3.4.0
  • 3.3.0
  • 3.2.0
  • 3.1.3
  • 3.1.2
  • 3.1.1
  • 3.1.0
  • 3.0.1
  • 3.0.0
29 results

ExerciceRoutes.ts

Blame
  • vmCreds2csv.go 2.09 KiB
    package cmdVM
    
    import (
        "os"
        "fmt"
        u "nexus-client/utils"
        g "nexus-client/globals"
    )
    
    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 3 columns: VM ID;VM name;password",
            "If not the VM's owner: requires VM_ATTACH VM access capability or VM_ATTACH_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]
    
        credsList, err := getFilteredVMCredentials("/vms/attach", args[:argc-1])
        if err != nil {
            u.PrintlnErr("Error: "+err.Error())
            return 1
        }
    
        if len(credsList) == 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 _, creds := range credsList {
            sep := string(g.CsvFieldSeparator)
            _, err := fmt.Fprintln(f, creds.ID.String()+sep+creds.Name+sep+creds.Pwd)
            if err != nil {
                u.PrintlnErr("Error: "+err.Error())
                return 1
            }
        }
    
        u.Println(csvFile+" written successfully.")
        return 0
    }