Class: WinRM::Shells::Base
- Inherits:
-
Object
- Object
- WinRM::Shells::Base
- Includes:
- Retryable
- Defined in:
- lib/winrm/shells/base.rb
Overview
Base class for remote shell
Direct Known Subclasses
Constant Summary collapse
- TOO_MANY_COMMANDS =
'2150859174'.freeze
- ERROR_OPERATION_ABORTED =
'995'.freeze
- SHELL_NOT_FOUND =
'2150858843'.freeze
- FAULTS_FOR_RESET =
[ '2150858843', # Shell has been closed '2147943418', # Error reading registry key TOO_MANY_COMMANDS, # Maximum commands per user exceeded ].freeze
Constants included from Retryable
Retryable::RETRYABLE_EXCEPTIONS
Instance Attribute Summary collapse
-
#connection_opts ⇒ ConnectionOpts
readonly
Connection options of the shell.
-
#logger ⇒ Logger
readonly
Logger used for diagnostic messages.
-
#shell_id ⇒ String
readonly
Shell id of the currently opn shell or nil if shell is closed.
-
#shell_opts ⇒ Hash
readonly
Options targeted for the created shell.
-
#shell_uri ⇒ String
readonly
Uri that SOAP calls use to identify shell type.
-
#transport ⇒ WinRM::HTTP::HttpTransport
readonly
Transport used to talk with endpoint.
Instance Method Summary collapse
-
#close ⇒ Object
Closes the shell if one is open.
-
#initialize(connection_opts, transport, logger, shell_opts = {}) ⇒ Base
constructor
Create a new Cmd shell.
-
#run(command, arguments = [], &block) {|standard, standard| ... } ⇒ Object
Runs the specified command with optional arguments.
Methods included from Retryable
Constructor Details
#initialize(connection_opts, transport, logger, shell_opts = {}) ⇒ Base
Create a new Cmd shell
48 49 50 51 52 53 |
# File 'lib/winrm/shells/base.rb', line 48 def initialize(connection_opts, transport, logger, shell_opts = {}) @connection_opts = connection_opts @transport = transport @logger = logger @shell_opts = shell_opts end |
Instance Attribute Details
#connection_opts ⇒ ConnectionOpts (readonly)
Returns connection options of the shell.
62 63 64 |
# File 'lib/winrm/shells/base.rb', line 62 def connection_opts @connection_opts end |
#logger ⇒ Logger (readonly)
Returns logger used for diagnostic messages.
68 69 70 |
# File 'lib/winrm/shells/base.rb', line 68 def logger @logger end |
#shell_id ⇒ String (readonly)
Returns shell id of the currently opn shell or nil if shell is closed.
56 57 58 |
# File 'lib/winrm/shells/base.rb', line 56 def shell_id @shell_id end |
#shell_opts ⇒ Hash (readonly)
Returns Options targeted for the created shell.
71 72 73 |
# File 'lib/winrm/shells/base.rb', line 71 def shell_opts @shell_opts end |
#shell_uri ⇒ String (readonly)
Returns uri that SOAP calls use to identify shell type.
59 60 61 |
# File 'lib/winrm/shells/base.rb', line 59 def shell_uri @shell_uri end |
#transport ⇒ WinRM::HTTP::HttpTransport (readonly)
Returns transport used to talk with endpoint.
65 66 67 |
# File 'lib/winrm/shells/base.rb', line 65 def transport @transport end |
Instance Method Details
#close ⇒ Object
Closes the shell if one is open
87 88 89 90 91 92 93 94 95 96 |
# File 'lib/winrm/shells/base.rb', line 87 def close return unless shell_id begin self.class.close_shell(connection_opts, transport, shell_id) rescue WinRMWSManFault => e raise unless [ERROR_OPERATION_ABORTED, SHELL_NOT_FOUND].include?(e.fault_code) end remove_finalizer @shell_id = nil end |
#run(command, arguments = [], &block) {|standard, standard| ... } ⇒ Object
Runs the specified command with optional arguments
80 81 82 83 84 |
# File 'lib/winrm/shells/base.rb', line 80 def run(command, arguments = [], &block) with_command_shell(command, arguments) do |shell, cmd| response_reader.read_output((shell, cmd), &block) end end |