Net::Ssh::Script

Helps to run commands & scripts over Net::SSH session on remote machines. It can run a single command and whole script and log status/stdout/stderr of each command.

Installation

Add this line to your application's Gemfile:

gem 'net-ssh-script'

And then execute:

$ bundle

Or install it yourself as:

$ gem install net-ssh-script

Usage

First, require module and create SSH session:

require 'net/ssh/script'

Net::SSH.start( '...' ) do |ssh|
  # insert code below here...
end

Single command

# Define a command
cmd = Net::SSH::Script::Command['ls']
# it is the same as
cmd = Net::SSH::Script::Command.new('ls')

cmd.to_s
# => "ls"

cmd.inspect
# => "pending:ls"

cmd.done?
# => false

cmd.status
# => :pending

cmd.run ssh
# => true/false

cmd.done?
# => true

cmd.status
# => :failed/:error/:ok

cmd.ok?  # => true/false
cmd.error?  # => true/false
cmd.failed?  # => true/false
cmd.pending?  # => true/false

cmd.inspect
# => multiline string:
#    ok:ls
#    Output:
#    <a list of files>

# when command returns error
cmd.inspect
# => multiline string:
#    error:ls
#    Error:
#    <error returned by command>

Scripts

script = Net::SSH::Script::Script[[
  'cd /tmp',
  'ls -l',
  'cd -'
]]

script.run ssh
# => true/false

cmd.running?  # => true/false

script.done?
# => true/false

script.ok?  # => true/false
script.error?  # => true/false
script.failed?  # => true/false
script.pending?  # => true/false

script.inspect
# => multiline string:
#    ok:cd /tmp
#    Output:
#    error:ls -l
#    Error:
#    'an error of ls -l command'
#    pending:cd -

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/indiesoft/net-ssh-script.

License

The gem is available as open source under the terms of the MIT License.