2012-08-09 34 views
0

我有,我希望你能帮助我红宝石净SSH与交互式提示

我试图用Ruby ssh登录到机器上并运行bash脚本问题,在联络bash脚本,这部分相当容易,但bash脚本要求我进入一个用户名和密码,交互的,这才是我坚持

所以,如果我手动运行该脚本我看到: -

./run_file.sh 
Enter username: 
Enter password: 

所以在输入用户名提示我必须输入用户名等

我有一个简单的方法,我用它来进行连接,我的想法是在一个阵列通过由的

[‘command to run’, ‘username’, ‘password’] 

,但我不知道如何扩展的Net :: SSH通话对提示

# ssh conectivity method 
    def command_ssh(host, cmd) 
    require 'net/ssh' 
    user = LocalConfig::SSH_DETAILS[:user] 
    pass = LocalConfig::SSH_DETAILS[:pass] 

    Net::SSH.start(host, user, :password => pass, :paranoid => false, :auth_methods => ['password'], :timeout => 10)do |ssh | 
     output = (ssh.exec!(cmd[0])) 
     return output 
    end 
    end 

人有回应任何想法

回答

0

管理使用的通道功能来解决这个问题,这里的方法我现在用

def connect(host,command) 

    require 'rubygems' 
    require 'net/ssh' 

    user = LocalConfig::SSH_DETAILS[:user] 
    pass = LocalConfig::SSH_DETAILS[:pass 

    o = "" 
    Net::SSH.start(host, user, :password => pass, :paranoid => false, :auth_methods => ['password'], :timeout => 30)do |ssh | 
     channel = ssh.open_channel do |ch| 
    ch.exec(command) do |ch2, success| 
     ch2.send_data "myUserName\n" 
     ch2.send_data "mPassWord\n" 

     ch.on_data do |ch2, data| 
     o += data 
     end 
    end 
     end 
     channel.wait 
     return o.to_s 
    end 
end