我正在尝试使用 net-ssh-multi 在一组服务器上运行命令。对于这个任务,ssh-key 身份验证不是一个选项;必须将密码传递给 session.use 行中定义的每个服务器。问题来了,“net/ssh”可以带密码参数,但“net/ssh/multi”不能。我想做的是这样的事情:
require 'net/ssh'
require 'net/ssh/multi'
#The necessary data is contained in a Ticket object
my_ticket = Ticket.new
Net::SSH::Multi.start (:password => 'xxxx') do |session|
# define the servers we want to use
my_ticket.servers.each do |serv_id|
session.use "#{my_ticket.user_name}@#{serv_id}"
end
# execute commands on all servers
session.exec "uptime"
# run the aggregated event loop
session.loop
end
但是,这让我:
file.rb:35:in `start': 来自 file.rb:35 的参数数量错误(1 对 2)(ArgumentError)
我知道这是一个有点 n00b 的问题,但我真的很感激一些帮助。
(http://rubydoc.info/gems/net-ssh-multi/1.1/Net/SSH/Multi)