我試圖使用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