2015-02-04 2 views
0

Я подключаюсь к своему тестовому устройству и после входа в систему выдаю команду, которая дает мне десять строк ответа. Я хочу назначить эти десять строк массиву или любым структурам данных для проверки ответа. Например, мой ответ выглядит следующим образом. Я хочу проверить биты и куски в списке строк. Возможно, я хочу проверить 192, brown и 0903.Обработка ответа от команды telnet

У меня есть 192 блоков песка, которые
зеленый коричневый
желтый цвет зерна

Ниже мой пример кода. Если я назначу результат как массив, все данные назначаются как первый элемент.

require 'net/telnet' 

i = Net::Telnet::new("Host" => '192.111.214.16', 
    "Port" => 23, 
    "Output_log" => "output.log", # default: nil (no output) 
    "Dump_log" => "dump.log", # default: nil (no output) 
    "Prompt"  => /[#>]/ , # default: /[$%#>] \z/n 
    "Telnetmode" => true,   # default: true 
    "Timeout" => 100,   # default: 10 
) 

i.login("admin", "pass") { |c| print c } 
result = i.cmd("String" => "status", "Match" => /a#/) 
print result 
+0

ли ответ всегда вернуться в ту же структуру, или может сдвиг данных? – James

+0

такой же структура предназначено. Я получаю только в той же структуре, просто для сравнения заданных значений. – aksarc

ответ

0

Согласно documentation, cmd возвращает строку, содержащую полный вывод.

Таким образом, вы должны быть в состоянии использовать split, чтобы получить его как массив, содержащий одну строку в каждой строке:

result = i.cmd("String" => "status", "Match" => /a#/).split("\n") 
+0

Спасибо. он отлично работал .split ("\ n") дал мне мой ответ – aksarc

+0

Добро пожаловать. Я добавил значение аргумента «\ n» к моему ответу (так как это необходимо, если ответ содержит пробелы) - спасибо за это. –

+0

У меня есть другой вопрос здесь. какой тип данных будет содержать элементы массива? Я попытался сравнить каждый элемент с соответствующей строкой, он всегда терпит неудачу. – aksarc

Смежные вопросы