0

私はあなたが私を助けてくれることを願っています問題があります

私は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

誰もがアイデアを得た

4

1 に答える 1

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
于 2012-08-10T11:35:05.953 に答える