class Specinfra::Backend::Telnet
Public Instance Methods
build_command(cmd)
click to toggle source
Calls superclass method
Specinfra::Backend::Exec#build_command
# File lib/specinfra/backend/telnet.rb, line 21 def build_command(cmd) cmd = super(cmd) cmd end
run_command(cmd, opt={})
click to toggle source
# File lib/specinfra/backend/telnet.rb, line 7 def run_command(cmd, opt={}) cmd = build_command(cmd) cmd = add_pre_command(cmd) ret = with_env do telnet_exec!(cmd) end if @example @example.metadata[:command] = cmd @example.metadata[:stdout] = ret[:stdout] end CommandResult.new ret end
Private Instance Methods
add_pre_command(cmd)
click to toggle source
# File lib/specinfra/backend/telnet.rb, line 49 def add_pre_command(cmd) if get_config(:pre_command) pre_cmd = build_command(get_config(:pre_command)) "#{pre_cmd} && #{cmd}" else cmd end end
create_telnet()
click to toggle source
# File lib/specinfra/backend/telnet.rb, line 77 def create_telnet tel = Net::Telnet.new( "Host" => get_config(:host) ) tel.login( "Name" => get_config(:telnet_options)[:user], "Password" => get_config(:telnet_options)[:pass] ) tel rescue return nil end
prompt()
click to toggle source
# File lib/specinfra/backend/telnet.rb, line 27 def prompt 'Login: ' end
sudo()
click to toggle source
# File lib/specinfra/backend/telnet.rb, line 88 def sudo if sudo_path = get_config(:sudo_path) sudo_path += '/sudo' else sudo_path = 'sudo' end sudo_options = get_config(:sudo_options) if sudo_options sudo_options = sudo_options.shelljoin if sudo_options.is_a?(Array) sudo_options = ' ' + sudo_options end "#{sudo_path.shellescape}#{sudo_options}" end
sudo?()
click to toggle source
# File lib/specinfra/backend/telnet.rb, line 104 def sudo? false end
telnet_exec!( command )
click to toggle source
# File lib/specinfra/backend/telnet.rb, line 58 def telnet_exec!( command ) stdout_data = '' stderr_data = '' exit_status = nil exit_signal = nil retry_prompt = /^Login: / if get_config(:telnet).nil? set_config(:telnet, create_telnet) end telnet = get_config(:telnet) re = [] unless telnet.nil? re = telnet.cmd( "#{command}; echo $?" ).split("\n")[0..-2] exit_status = re.last.to_i stdout_data = re[1..-2].join("\n") end { :stdout => stdout_data, :stderr => stderr_data, :exit_status => exit_status, :exit_signal => exit_signal } end
with_env() { || ... }
click to toggle source
# File lib/specinfra/backend/telnet.rb, line 31 def with_env env = get_config(:env) || {} env[:LANG] ||= 'C' env.each do |key, value| key = key.to_s ENV["_SPECINFRA_#{key}"] = ENV[key]; ENV[key] = value end yield ensure env.each do |key, value| key = key.to_s ENV[key] = ENV.delete("_SPECINFRA_#{key}"); end end