簡體   English   中英

ruby net-ssh調用帶有交互式提示的bash腳本

[英]ruby net-ssh calling bash script with interactive prompts

我有一個問題,希望您能幫助我

我正在嘗試使用ruby SSH到計算機上並運行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

任何人有任何想法

通過使用channel函數設法解決了這個問題,這是我現在使用的方法

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM