2017-12-01 19 views
0

내 텔넷 apc에 로그인하려면 루비 스크립트로 로그인하려고합니다.더 많은 데이터를 기다리는 루비와 텔넷

코드 : 나는 다음과 같은 오류를받을

server = Net::Telnet.new("Host" => "192.168.178.240", 'Timeout' => 10, "Output_log" => "output_log", "binmode" => true ,'Waittime' => 2, "telnetmode" => true) 
server.cmd('apc') 
server.waitfor((/:.*>|More\?/)) 
print a 

: I

irb(main):025:0> Device.reboot 
Net::ReadTimeout: timed out while waiting for more data 
    from app/models/device.rb:15:in `reboot' 
    from (irb):25 
irb(main):026:0> 

server.match(/([User+Name])\w+) { |str| puts str } 
server.waitfor('password') { |str| puts str } 

더 많은 로그 파일, 명령이 암호 필드에 붙어있다.

User Name : apc 
Password : Trying 192.168.178.240... 
Connected to 192.168.178.240. 

User Name : apc 
Password : 
+1

나는 이런 종류의 PDU 장치가 SSH를 지원한다고 생각한다. – tadman

답변

0
내가 전에이 라이브러리를 사용한 적이 참고

그러나 이것은 당신이 지금 당신이 실패 암호 프롬프트 섹션 과거를 얻을 수

login_info = {"Name" => "Your User name", 
       "Password" => "Your password", 
       "LoginPrompt" => /User\sName\s*:/ 
      } 
server = Net::Telnet.new("Host" => "192.168.178.240", 'Timeout' => 10, "Output_log" => "output_log", "binmode" => true ,'Waittime' => 2) 
server.login(login_info) { |c| print c } # print the output from the login attempt 
server.cmd("String" => 'apc', "Match" => /:.*>|More\?/) do |a| 
    print a # print the output as it is read in 
end 

이 작업을 허용해야합니다 않는 방법하지만 돈 당신이 가지고있는 다른 의도가 무엇인지 모르겠다.