我试图使用net-ssh-multi在一组服务器上运行命令。对于这个taks,ssh-key认证不是一个选项;必须将密码传递给session.use行中定义的每个服务器。问题出在这里,'net/ssh'可以带密码参数,但'net/ssh/multi'不能。我想这样做是服用点是这样的:Ruby 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:在'启动':错误的参数数目(1 2)(引发ArgumentError )from file.rb:35
我知道这是一个n00b问题,但我真的很感谢一些帮助。
(http://rubydoc.info/gems/net-ssh-multi/1.1/Net/SSH/Multi)
* poring(not pouring);) – 2011-05-29 23:43:44
谢谢,@AbeVoelker。我希望这是关于我的代码的最尴尬的事情。 – Dmitri 2011-05-30 00:09:38
对不起,并没有试图在那里变幻莫测。 Ruby还没有足够的能力评论它的有效性。但它看起来比我在前一份工作中使用的Expect/Tcl脚本清晰许多,无法使用SSH密钥(无法使用Ruby或Perl)。 :-) – 2011-05-30 00:15:07