ruby
  • ssh
  • expect
  • 2011-06-13 81 views 1 likes 
    1

    我想創建一個Ruby腳本,該腳本打開一個SSH僞連接,並保持打開狀態。使用子進程在Ruby中保持SSH僞連接打開

    我也想在例如它的幫助下發送密碼。 expect

    我已經試過這樣:(我已刪除服務器名,密碼和用戶名)

    #!/usr/bin/env ruby 
    require "pty" 
    require "expect" 
    
    username = 'USERNAME' 
    server = 'SERVERNAME' 
    password = 'PASSWORD' 
    
    r_f, w_f, pid = PTY.spawn("ssh -T -l #{username} #{server}") 
    
    w_f.sync = true 
    
    r_f.expect(/.*asswor.*/, 600) do |output| 
        w_f.puts password 
        puts "Sending password" 
    end 
    
    # If we are logged on, we get a message with "Hello, username" 
    r_f.expect(/.*ello.*/) do 
        puts "You are now logged on." 
    end 
    

    然而,這似乎已收到其連接

    回答

    1

    你的過程中必須確認後關閉連接活着。如果你的進程死了,子進程被殺死,並且pty被銷燬。你可以讓你的過程永遠睡眠:

    sleep 
    
    +0

    Doh!這真的很簡單。 – 2011-06-13 12:03:29

    相關問題