Documentation ¶
Index ¶
- Variables
- func NewClientWithDial(dial func(network, addr string) (net.Conn, error)) *clientRequest
- func NewClientWithProxyFunc(proxyfunc func(req *http.Request) (*url.URL, error)) *clientRequest
- func NewDeleteShellRequest(uri, shellID string, params *Parameters) *soap.SoapMessage
- func NewExecuteCommandRequest(uri, shellID, command string, arguments []string, params *Parameters) *soap.SoapMessage
- func NewGetOutputRequest(uri, shellID, commandID, streams string, params *Parameters) *soap.SoapMessage
- func NewOpenShellRequest(uri string, params *Parameters) *soap.SoapMessage
- func NewSendInputRequest(uri, shellID, commandID string, input []byte, eof bool, params *Parameters) *soap.SoapMessage
- func NewSignalRequest(uri string, shellID string, commandID string, params *Parameters) *soap.SoapMessage
- func ParseExecuteCommandResponse(response string) (commandId string, err error)
- func ParseOpenShellResponse(response string) (string, error)
- func ParseSlurpOutputErrResponse(response string, stdout, stderr io.Writer) (bool, int, error)
- func ParseSlurpOutputResponse(response string, stream io.Writer, streamType string) (bool, int, error)
- func Powershell(psCmd string) string
- type Client
- func (c *Client) CreateShell() (*Shell, error)
- func (c *Client) NewShell(id string) *Shell
- func (c *Client) Run(command string, stdout io.Writer, stderr io.Writer) (int, error)deprecated
- func (c *Client) RunCmdWithContext(ctx context.Context, command string) (string, string, int, error)
- func (c *Client) RunPSWithContext(ctx context.Context, command string) (string, string, int, error)
- func (c *Client) RunPSWithContextWithString(ctx context.Context, command string, stdin string) (string, string, int, error)
- func (c *Client) RunPSWithString(command string, stdin string) (string, string, int, error)deprecated
- func (c *Client) RunWithContext(ctx context.Context, command string, stdout io.Writer, stderr io.Writer) (int, error)
- func (c *Client) RunWithContextWithInput(ctx context.Context, command string, stdout, stderr io.Writer, stdin io.Reader) (int, error)
- func (c *Client) RunWithContextWithString(ctx context.Context, command string, stdin string) (string, string, int, error)
- func (c *Client) RunWithInput(command string, stdout, stderr io.Writer, stdin io.Reader) (int, error)deprecated
- func (c *Client) RunWithString(command string, stdin string) (string, string, int, error)deprecated
- type ClientAuthRequest
- type ClientKerberos
- type ClientNTLM
- type Command
- type Encryption
- func (e *Encryption) ParseEncryptedResponse(response *http.Response) ([]byte, error)
- func (e *Encryption) Post(client *Client, message *soap.SoapMessage) (string, error)
- func (e *Encryption) PrepareEncryptedRequest(client *Client, endpoint string, message []byte) (string, error)
- func (e *Encryption) PrepareRequest(client *Client, endpoint string) error
- func (e *Encryption) Transport(endpoint *Endpoint) error
- type Endpoint
- type ExecuteCommandError
- type Parameters
- type Settings
- type Shell
- type Transporter
Constants ¶
This section is empty.
Variables ¶
var DefaultParameters = NewParameters("PT60S", "en-US", 153600)
DefaultParameters return constant config of type Parameters
Functions ¶
func NewClientWithDial ¶
NewClientWithDial NewClientWithDial
func NewClientWithProxyFunc ¶
NewClientWithProxyFunc NewClientWithProxyFunc
func NewDeleteShellRequest ¶
func NewDeleteShellRequest(uri, shellID string, params *Parameters) *soap.SoapMessage
NewDeleteShellRequest ...
func NewExecuteCommandRequest ¶
func NewExecuteCommandRequest(uri, shellID, command string, arguments []string, params *Parameters) *soap.SoapMessage
NewExecuteCommandRequest exec command on specific shellID
func NewGetOutputRequest ¶
func NewGetOutputRequest(uri, shellID, commandID, streams string, params *Parameters) *soap.SoapMessage
NewGetOutputRequest NewGetOutputRequest
func NewOpenShellRequest ¶
func NewOpenShellRequest(uri string, params *Parameters) *soap.SoapMessage
NewOpenShellRequest makes a new soap request
func NewSendInputRequest ¶
func NewSendInputRequest(uri, shellID, commandID string, input []byte, eof bool, params *Parameters) *soap.SoapMessage
NewSendInputRequest NewSendInputRequest
func NewSignalRequest ¶
func NewSignalRequest(uri string, shellID string, commandID string, params *Parameters) *soap.SoapMessage
NewSignalRequest NewSignalRequest
func ParseExecuteCommandResponse ¶
ParseExecuteCommandResponse ParseExecuteCommandResponse
func ParseOpenShellResponse ¶
ParseOpenShellResponse ParseOpenShellResponse
func ParseSlurpOutputErrResponse ¶
ParseSlurpOutputErrResponse ParseSlurpOutputErrResponse
func ParseSlurpOutputResponse ¶
func ParseSlurpOutputResponse(response string, stream io.Writer, streamType string) (bool, int, error)
ParseSlurpOutputResponse ParseSlurpOutputResponse
func Powershell ¶
Powershell wraps a PowerShell script and prepares it for execution by the winrm client
Types ¶
type Client ¶
type Client struct { Parameters // contains filtered or unexported fields }
Client struct
func NewClient ¶
NewClient will create a new remote client on url, connecting with user and password This function doesn't connect (connection happens only when CreateShell is called)
func NewClientWithParameters ¶
func NewClientWithParameters(endpoint *Endpoint, user, password string, params *Parameters) (*Client, error)
NewClientWithParameters will create a new remote client on url, connecting with user and password This function doesn't connect (connection happens only when CreateShell is called)
func (*Client) CreateShell ¶
CreateShell will create a WinRM Shell, which is the prealable for running commands.
func (*Client) Run
deprecated
func (*Client) RunCmdWithContext ¶
func (c *Client) RunCmdWithContext(ctx context.Context, command string) (string, string, int, error)
RunCmdWithContext will run command on the the remote host, returning the process stdout and stderr as strings If the context is canceled, the remote command is canceled.
func (*Client) RunPSWithContext ¶
RunPSWithContext will basically wrap your code to execute commands in powershell.exe. runs commands in cmd.exe
func (*Client) RunPSWithContextWithString ¶
func (c *Client) RunPSWithContextWithString(ctx context.Context, command string, stdin string) (string, string, int, error)
RunPSWithContextWithString will basically wrap your code to execute commands in powershell.exe. Default RunWithString runs commands in cmd.exe
func (*Client) RunPSWithString
deprecated
func (*Client) RunWithContext ¶
func (c *Client) RunWithContext(ctx context.Context, command string, stdout io.Writer, stderr io.Writer) (int, error)
RunWithContext will run command on the the remote host, writing the process stdout and stderr to the given writers. Note with this method it isn't possible to inject stdin. If the context is canceled, the remote command is canceled.
func (*Client) RunWithContextWithInput ¶
func (c *Client) RunWithContextWithInput(ctx context.Context, command string, stdout, stderr io.Writer, stdin io.Reader) (int, error)
RunWithContextWithInput will run command on the the remote host, writing the process stdout and stderr to the given writers, and injecting the process stdin with the stdin reader. If the context is canceled, the command on the remote machine is canceled. Warning stdin (not stdout/stderr) are bufferized, which means reading only one byte in stdin will send a winrm http packet to the remote host. If stdin is a pipe, it might be better for performance reasons to buffer it. If stdin is nil, this is equivalent to c.RunWithContext()
func (*Client) RunWithContextWithString ¶
func (c *Client) RunWithContextWithString(ctx context.Context, command string, stdin string) (string, string, int, error)
RunWithContextWithString will run command on the the remote host, returning the process stdout and stderr as strings, and using the input stdin string as the process input If the context is canceled, the remote command is canceled.
func (*Client) RunWithInput
deprecated
func (c *Client) RunWithInput(command string, stdout, stderr io.Writer, stdin io.Reader) (int, error)
RunWithInput will run command on the the remote host, writing the process stdout and stderr to the given writers, and injecting the process stdin with the stdin reader. Warning stdin (not stdout/stderr) are bufferized, which means reading only one byte in stdin will send a winrm http packet to the remote host. If stdin is a pipe, it might be better for performance reasons to buffer it. If stdin is nil, this is equivalent to c.Run()
Deprecated: use RunWithContextWithInput()
func (*Client) RunWithString
deprecated
type ClientAuthRequest ¶
type ClientAuthRequest struct {
// contains filtered or unexported fields
}
ClientAuthRequest ClientAuthRequest
func NewClientAuthRequestWithDial ¶
func NewClientAuthRequestWithDial(dial func(network, addr string) (net.Conn, error)) *ClientAuthRequest
NewClientAuthRequestWithDial NewClientAuthRequestWithDial
func (ClientAuthRequest) Post ¶
func (c ClientAuthRequest) Post(client *Client, request *soap.SoapMessage) (string, error)
Post Post
func (*ClientAuthRequest) Transport ¶
func (c *ClientAuthRequest) Transport(endpoint *Endpoint) error
Transport Transport
type ClientKerberos ¶
type ClientKerberos struct { Username string Password string Realm string Hostname string Port int Proto string SPN string KrbConf string KrbCCache string // contains filtered or unexported fields }
func NewClientKerberos ¶
func NewClientKerberos(settings *Settings) *ClientKerberos
func (*ClientKerberos) Post ¶
func (c *ClientKerberos) Post(clt *Client, request *soap.SoapMessage) (string, error)
func (*ClientKerberos) Transport ¶
func (c *ClientKerberos) Transport(endpoint *Endpoint) error
type ClientNTLM ¶
type ClientNTLM struct {
// contains filtered or unexported fields
}
ClientNTLM provides a transport via NTLMv2
func NewClientNTLMWithDial ¶
func NewClientNTLMWithDial(dial func(network, addr string) (net.Conn, error)) *ClientNTLM
NewClientNTLMWithDial NewClientNTLMWithDial
func NewClientNTLMWithProxyFunc ¶
NewClientNTLMWithProxyFunc NewClientNTLMWithProxyFunc
func (ClientNTLM) Post ¶
func (c ClientNTLM) Post(client *Client, request *soap.SoapMessage) (string, error)
Post make post to the winrm soap service (forwarded to clientRequest implementation)
func (*ClientNTLM) Transport ¶
func (c *ClientNTLM) Transport(endpoint *Endpoint) error
Transport creates the wrapped NTLM transport
type Command ¶
type Command struct { Stdin *commandWriter Stdout *commandReader Stderr *commandReader // contains filtered or unexported fields }
Command represents a given command running on a Shell. This structure allows to get access to the various stdout, stderr and stdin pipes.
type Encryption ¶
type Encryption struct {
// contains filtered or unexported fields
}
func NewEncryption ¶
func NewEncryption(protocol string) (*Encryption, error)
Encrypted Message Types When using Encryption, there are three options available
Negotiate/SPNEGO
Kerberos
CredSSP
protocol: The protocol string used for the particular auth protocol
The auth protocol used, will determine the wrapping and unwrapping method plus the protocol string to use. Currently only NTLM is supported
based on the python code from https://pypi.org/project/pywinrm/
see https://github.com/diyan/pywinrm/blob/master/winrm/encryption.py
uses the most excellent NTLM library from https://github.com/bodgit/ntlmssp
func (*Encryption) ParseEncryptedResponse ¶
func (e *Encryption) ParseEncryptedResponse(response *http.Response) ([]byte, error)
Takes in the encrypted response from the server and decrypts it
:param response: The response that needs to be decrytped :return: The unencrypted message from the server
func (*Encryption) Post ¶
func (e *Encryption) Post(client *Client, message *soap.SoapMessage) (string, error)
func (*Encryption) PrepareEncryptedRequest ¶
func (e *Encryption) PrepareEncryptedRequest(client *Client, endpoint string, message []byte) (string, error)
Creates a prepared request to send to the server with an encrypted message and correct headers
:param endpoint: The endpoint/server to prepare requests to :param message: The unencrypted message to send to the server :return: A prepared request that has an decrypted message
func (*Encryption) PrepareRequest ¶
func (e *Encryption) PrepareRequest(client *Client, endpoint string) error
func (*Encryption) Transport ¶
func (e *Encryption) Transport(endpoint *Endpoint) error
type Endpoint ¶
type Endpoint struct { // host name or ip address Host string // port to determine if it's http or https default // winrm ports (http:5985, https:5986).Versions // of winrm can be customized to listen on other ports Port int // set the flag true for https connections HTTPS bool // set the flag true for skipping ssl verifications Insecure bool // if set, used to verify the hostname on the returned certificate TLSServerName string // pointer pem certs, and key CACert []byte // cert auth to intdetify the server cert Key []byte // public key for client auth connections Cert []byte // cert for client auth connections // duration timeout for the underling tcp conn(http/https base protocol) // if the time exceeds the connection is cloded/timeouts Timeout time.Duration }
Endpoint struct holds configurations for the server endpoint
type ExecuteCommandError ¶
func (*ExecuteCommandError) Error ¶
func (e *ExecuteCommandError) Error() string
func (*ExecuteCommandError) Is ¶
func (e *ExecuteCommandError) Is(err error) bool
func (*ExecuteCommandError) Unwrap ¶
func (b *ExecuteCommandError) Unwrap() error
type Parameters ¶
type Parameters struct { Timeout string Locale string EnvelopeSize int TransportDecorator func() Transporter Dial func(network, addr string) (net.Conn, error) }
Parameters struct defines metadata information and http transport config
func NewParameters ¶
func NewParameters(timeout, locale string, envelopeSize int) *Parameters
NewParameters return new struct of type Parameters this struct makes the configuration for the request, size message, etc.
type Settings ¶
type Settings struct { WinRMUsername string WinRMPassword string WinRMHost string WinRMPort int WinRMProto string WinRMInsecure bool KrbRealm string KrbConfig string KrbSpn string KrbCCache string WinRMUseNTLM bool WinRMPassCredentials bool }
Settings holds all the information necessary to configure the provider
type Shell ¶
type Shell struct {
// contains filtered or unexported fields
}
Shell is the local view of a WinRM Shell of a given Client
func (*Shell) Close ¶
Close will terminate this shell. No commands can be issued once the shell is closed.
type Transporter ¶
type Transporter interface { // init request baset on the transport configurations Post(*Client, *soap.SoapMessage) (string, error) Transport(*Endpoint) error }
Transporter does different transporters and init a Post request based on them