github.com/vmware/govmomi@v0.51.0/cli/vcsa/access/shell/set.go (about)

     1  // © Broadcom. All Rights Reserved.
     2  // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
     3  // SPDX-License-Identifier: Apache-2.0
     4  
     5  package shell
     6  
     7  import (
     8  	"context"
     9  	"flag"
    10  
    11  	"github.com/vmware/govmomi/cli"
    12  	"github.com/vmware/govmomi/cli/flags"
    13  	"github.com/vmware/govmomi/vapi/appliance/access/shell"
    14  )
    15  
    16  type set struct {
    17  	*flags.ClientFlag
    18  	enabled bool
    19  	timeout int
    20  }
    21  
    22  func init() {
    23  	cli.Register("vcsa.access.shell.set", &set{})
    24  }
    25  
    26  func (cmd *set) Register(ctx context.Context, f *flag.FlagSet) {
    27  	cmd.ClientFlag, ctx = flags.NewClientFlag(ctx)
    28  	cmd.ClientFlag.Register(ctx, f)
    29  
    30  	f.BoolVar(&cmd.enabled,
    31  		"enabled",
    32  		false,
    33  		"Enable BASH, that is, access to BASH from within the controlled CLI.")
    34  	f.IntVar(&cmd.timeout,
    35  		"timeout",
    36  		0,
    37  		"The timeout (in seconds) specifies how long you enable the Shell access. The maximum timeout is 86400 seconds(1 day).")
    38  }
    39  
    40  func (cmd *set) Process(ctx context.Context) error {
    41  	if err := cmd.ClientFlag.Process(ctx); err != nil {
    42  		return err
    43  	}
    44  
    45  	return nil
    46  }
    47  
    48  func (cmd *set) Description() string {
    49  	return `Set enabled state of BASH, that is, access to BASH from within the controlled CLI.
    50  
    51  Note: This command requires vCenter 7.0.2 or higher.
    52  
    53  Examples:
    54  # Enable Shell
    55  govc vcsa.access.shell.set -enabled=true -timeout=240
    56  
    57  # Disable Shell
    58  govc vcsa.access.shell.set -enabled=false`
    59  }
    60  
    61  func (cmd *set) Run(ctx context.Context, f *flag.FlagSet) error {
    62  	c, err := cmd.RestClient()
    63  	if err != nil {
    64  		return err
    65  	}
    66  
    67  	m := shell.NewManager(c)
    68  
    69  	input := shell.Access{
    70  		Enabled: cmd.enabled,
    71  		Timeout: cmd.timeout,
    72  	}
    73  	if err = m.Set(ctx, input); err != nil {
    74  		return err
    75  	}
    76  
    77  	return nil
    78  }