2014-01-09 6 views
0

Я пытаюсь подключиться к telnet и отправить команду, которая заставляет перезагружать и затем убивать соединение. До сих пор у меня есть:Отправить команду telnet и убить соединение, не дожидаясь ответа

require 'net/telnet' 
host = 192.168.20.11 
connection = Net::Telnet::new("Host" => host) 
connection.login("User") 
connection.cmd("Reboot") 

Это работает и добивается того, чего я хочу, чтобы это, однако программа затем ждет обратной связи от команды перезагрузки, которая там нет, потому что перезагрузка, программа поэтому не удается. Есть ли способ, которым я могу отправить команду, а затем закрыть соединение, не дожидаясь обратной связи? Это позволило бы мне продолжить этот процесс.

ответ

0

К сожалению, я не вижу документально зафиксированного документа. Вы можете быть в состоянии подделать его с чем-то вроде этого:

begin 
    connection.cmd("String" => "Reboot", "Timeout" => 0.1) 
rescue # I'm not sure what that will raise, but you should rescue that specific error here 
    nil 
end 

Я должен спросить, хотя, есть ли способ, вы можете использовать ssh в отличие от telnet?

+0

Это может стоить того, чтобы выстрелить. Что касается ssh, то я просто рассматриваю это сейчас, это перешло мне в голову после публикации этого. Но никогда не делал ssh в рубине, так что я выполняю инструкции. Спасибо за предложения. – Maximillion

+0

'net/ssh' гораздо более утончен, чем telnet (не говоря уже о бесконечно более безопасном). – Eugene

+0

В ответ ответили. Перезагрузка вызывает падение соединения, поскольку мы знали, и спасение позволило мне хорошо, «спасти» его и убить его изящно. благодаря – Maximillion

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