package toolbox

import "github.com/vmware/govmomi/guest/toolbox"

Index

Examples

Types

type Client

type Client struct {
	ProcessManager *guest.ProcessManager
	FileManager    *guest.FileManager
	Authentication types.BaseGuestAuthentication
	GuestFamily    types.VirtualMachineGuestOsFamily
}

Client attempts to expose guest.OperationsManager as idiomatic Go interfaces

func NewClient

NewClient initializes a Client's ProcessManager, FileManager and GuestFamily

func (*Client) Download

func (c *Client) Download(ctx context.Context, src string) (io.ReadCloser, int64, error)

Download initiates a file transfer from the guest

func (*Client) Run

func (c *Client) Run(ctx context.Context, cmd *exec.Cmd) error

Run implements exec.Cmd.Run over vmx guest RPC against standard vmware-tools or toolbox.

Example

Code:play 

package main

import (
	"context"
	"fmt"
	"os"
	"os/exec"

	"github.com/vmware/govmomi/find"
	"github.com/vmware/govmomi/guest/toolbox"
	"github.com/vmware/govmomi/simulator"
	"github.com/vmware/govmomi/test"
	"github.com/vmware/govmomi/vim25"
	"github.com/vmware/govmomi/vim25/types"
)

func main() {
	simulator.Run(func(ctx context.Context, c *vim25.Client) error {
		if !test.HasDocker() {
			fmt.Println("Linux")
			return nil
		}
		vm, err := find.NewFinder(c).VirtualMachine(ctx, "DC0_H0_VM0")
		if err != nil {
			return err
		}
		err = simulator.RunContainer(ctx, c, vm, "nginx")
		if err != nil {
			return err
		}

		tools, err := toolbox.NewClient(ctx, c, vm, &types.NamePasswordAuthentication{
			Username: "user",
			Password: "pass",
		})

		cmd := &exec.Cmd{
			Path:   "uname",
			Stdout: os.Stdout,
			Stderr: os.Stderr,
		}

		return tools.Run(ctx, cmd)
	})
}

Output:

Linux

func (*Client) Upload

func (c *Client) Upload(ctx context.Context, src io.Reader, dst string, p soap.Upload, attr types.BaseGuestFileAttributes, force bool) error

Upload transfers a file to the guest

Source Files

client.go

Version
v0.48.1 (latest)
Published
Feb 11, 2025
Platform
linux/amd64
Imports
17 packages
Last checked
2 months ago

Tools for package owners.