#!/usr/bin/env ruby $:.unshift '.', '..', 'lib', File.join('..','lib') require 'session' shell = Session::Shell.new puts "======== ======== ======== ========" puts "#1" puts "======== ======== ======== ========" stdout, stderr = shell.execute 'ls' puts "STDOUT:\n#{ stdout }" puts "STDERR:\n#{ stderr }" puts "STATUS: #{ shell.status }" puts "======== ======== ======== ========" puts "======== ======== ======== ========" puts "#2" puts "======== ======== ======== ========" shell.execute 'ls' do |stdout, stderr| puts "STDOUT:\n#{ stdout }" puts "STDERR:\n#{ stderr }" end puts "STATUS: #{ shell.status }" puts "======== ======== ======== ========" puts "======== ======== ======== ========" puts "#3" puts "======== ======== ======== ========" stdout, stderr = '', '' shell.execute 'ls', :stdout => stdout, :stderr => stderr puts "STDOUT:\n#{ stdout }" puts "STDERR:\n#{ stderr }" puts "STATUS: #{ shell.status }" puts "======== ======== ======== ========" puts "======== ======== ======== ========" puts "#4" puts "======== ======== ======== ========" shell.outproc = lambda{|out| puts "#{ out }"} shell.errproc = lambda{|err| raise err} shell.execute('while test 1; do echo 42; sleep 1; done') # => 42 ... 42 ... 42 puts "======== ======== ======== ========"