Class: ExecuteTelnet
- Inherits:
-
ExecuteBase
- Object
- ExecuteBase
- ExecuteTelnet
- Defined in:
- lib/teuton/case/execute/execute_telnet.rb
Instance Method Summary collapse
Methods inherited from ExecuteBase
Methods included from Verbose
Constructor Details
This class inherits a constructor from ExecuteBase
Instance Method Details
#call(input_hostname) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/teuton/case/execute/execute_telnet.rb', line 8 def call(input_hostname) action[:conn_type] = :telnet hostname = input_hostname.to_s ip = config.get((hostname + "_ip").to_sym) port = config.get((hostname + "_port").to_sym) mode = true if port.to_i == 0 port = "23" mode = false end text = "" exitcode = -1 begin if sessions[hostname].nil? || sessions[hostname] == :ok h = Net::Telnet.new( "Host" => ip, "Port" => port, "Telnetmode" => mode, "Timeout" => 30, "Prompt" => /login|teuton|[$%#>]/ ) # "Prompt" => Regexp.new(username[1, 40])) # "Prompt" => /[$%#>] \z/n) unless mode username = config.get((hostname + "_username").to_sym).to_s password = config.get((hostname + "_password").to_sym).to_s h.login(username, password) end h.cmd(action[:command]) { |i| text << i } h.close sessions[hostname] = :ok exitcode = 0 else text = "Telnet: NO CONNECTION!" end rescue Net::OpenTimeout sessions[hostname] = :nosession conn_status[hostname] = :open_timeout log(" ExceptionType=<Net::OpenTimeout> doing <telnet #{ip}>", :error) log(" └── Revise host IP!", :warn) rescue Net::ReadTimeout sessions[hostname] = :nosession conn_status[hostname] = :read_timeout log(" ExceptionType=<Net::ReadTimeout> doing <telnet #{ip}>", :error) rescue => e sessions[hostname] = :nosession conn_status[hostname] = :error log(" ExceptionType=<#{e.class}> doing telnet on <#{username}@#{ip}>" \ " exec: #{action[:command]}", :error) log(" └── username=<#{username}>, password=<#{password}>," \ " ip=<#{ip}>, HOSTID=<#{hostname}>", :warn) end result.exitcode = exitcode result.content = encode_and_split(action[:encoding], text) end |