ruby
  • ssh
  • expect
  • 2011-06-13 78 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

    相关问题