Question

J'essaie de faire des scripts de base en utilisant Ruby pour me connecter à une machine Windows via telnet et extraire certains fichiers à l'aide de la ligne de commande dos ftp.Lorsque je fais cela manuellement, tout se passe à merveille, mais lorsque je l'essaye via Ruby, j'obtiens une erreur lors de l'appel de connexion.

Voici mon programme de test dans son intégralité :

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

Le contenu de output_log ne trahit rien comme étant faux :

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>

Idem pour le dump_log qui a un contenu très similaire mais mal formaté.Lorsque j'exécute le programme, il reste un moment puis génère l'erreur suivante :

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

Ce qui m'amène à soupçonner que la classe telnet ne reconnaît pas l'invite de commande.J'ai essayé plusieurs chaînes d'expression régulière différentes pour le paramètre Prompt, y compris la valeur par défaut et rien ne semble aider.

Était-ce utile?

La solution

Je pense que le champ d'invite doit être un regexp, pas une chaîne essayez

tn = Net::Telnet::new("Host"=>"xxx.xxx.xxx.xxx", "Timeout"=>25,
"Output_log"=>"output_log.log", "Dump_log"=> "dump_log.log",
"Prompt"=> /C:.*>/)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top