2009-06-08 2 views
2

Я пытаюсь выполнить некоторые базовые сценарии с помощью ruby ​​для входа на Windows-машину через telnet и вытащить некоторые файлы с помощью командной строки dos ftp. Когда я делаю это вручную, все идет плавно, но когда я пытаюсь выполнить его через ruby, я получаю сообщение об ошибке при вызове входа в систему.Ruby scripting - Telnet Hangs во время входа в систему

Вот моя тестовая программа в полном объеме:

require 'net/telnet' 
tn = Net::Telnet::new("Host"=>"xxx.xxx.xxx.xxx", "Timeout"=>25, "Output_log"=>"output_log.log", "Dump_log"=> "dump_log.log", "Prompt"=>"C:.*>") 
tn.login("administrator", "xxxxxxx") {} 
tn.cmd('dir') 
exit 

Содержимое output_log ничего не предают как неправильно:

Trying 208.10.202.187... 
Connected to 208.10.202.187. 
Welcome to Microsoft Telnet Service 
login: administrator 
password: 
*=============================================================== 
Welcome to Microsoft Telnet Server. 
*=============================================================== 
C:\Documents and Settings\Administrator> 

То же самое для dump_log, который имеет очень похожи, но неловко форматированное содержимое. Когда я запускаю программу, она сидит вокруг на некоторое время, а затем выводит следующее сообщение об ошибке:

PS C:\code\tools\deployment> ruby test.rb 
C:/Ruby/lib/ruby/1.8/net/telnet.rb:551:in `waitfor': timed out while waiting for more data (Timeout::Error) 
     from C:/Ruby/lib/ruby/1.8/net/telnet.rb:685:in `cmd' 
     from C:/Ruby/lib/ruby/1.8/net/telnet.rb:730:in `login' 
     from test.rb:3 

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

ответ

3

Я считаю, что оперативное поле должно быть регулярное выражение, а не строка Попробуйте

tn = Net::Telnet::new("Host"=>"xxx.xxx.xxx.xxx", "Timeout"=>25, 
"Output_log"=>"output_log.log", "Dump_log"=> "dump_log.log", 
"Prompt"=> /C:.*>/) 
+0

О удивительным, теперь огромное спасибо Larry работает –

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