2012-08-09 37 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