Sha256: 17a315789d7cdcfaf204d499c54a8cfabe7733b46a1612f7f7a2952aaa5544a6

Contents?: true

Size: 1.16 KB

Versions: 15

Compression:

Stored size: 1.16 KB

Contents

The SyncShell service allows you to execute commands on the shell and block until they finish. It is not fool-proof--it has to use some tricks to accomplish this task, and some commands may foul it up. But for most tasks, it works admirably.

{{{lang=ruby,number=true,caption=Using the SyncShell service
Net::SSH.start( 'localhost' ) do |session|

  shell = session.shell.sync

  out = shell.pwd
  p out.stdout

  out = shell.test "-e foo"
  p out.status

  out = shell.cd "/really/bogus/directory"
  p out.stderr
  p out.status

  out = shell.ruby "-v"
  p out.stdout

  out = shell.cd "/usr/lib"

 out = shell.ls "-l"
  p out.stdout

  out = shell.send_command( "bc", <<CMD )
5+5
10*2
scale=5
3/4
quit
CMD
  p out.stdout

  p shell.exit

end
}}}

The result of executing each command is an object that encapsulates the @stdout@ and @stderr@ streams, and the exit status of the command.

To explicitly execute a command, use the @#send_command@ instead of @#send_data@--otherwise, the command will be executed asynchronously, which is not what you want. Also, if you pass a second parameter to the @#send_command@ method, it is interpreted as the @stdin@ data to send to the new process.

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
net-ssh-1.0.10 doc/manual/parts/0022.txt
net-ssh-1.0.1 doc/manual/parts/0022.txt
net-ssh-1.0.2 doc/manual/parts/0022.txt
net-ssh-1.0.3 doc/manual/parts/0022.txt
net-ssh-1.0.8 doc/manual/parts/0022.txt
net-ssh-1.0.5 doc/manual/parts/0022.txt
net-ssh-1.0.7 doc/manual/parts/0022.txt
net-ssh-1.0.4 doc/manual/parts/0022.txt
net-ssh-1.0.6 doc/manual/parts/0022.txt
net-ssh-1.0.9 doc/manual/parts/0022.txt
net-ssh-1.1.1 doc/manual/parts/0022.txt
net-ssh-1.1.0 doc/manual/parts/0022.txt
net-ssh-1.1.2 doc/manual/parts/0022.txt
net-ssh-1.1.4 doc/manual/parts/0022.txt
net-ssh-1.1.3 doc/manual/parts/0022.txt