में फ़ाइल की सामग्री से लूप ठीक है, इसलिए मैं रूबी के लिए नया हूं और मेरे पास बैश/ksh/sh में एक मजबूत पृष्ठभूमि है।रूबी
जो मैं करने की कोशिश कर रहा हूं वह लूप के लिए कई सर्वरों पर एक कमांड चलाने के लिए सरल है। बैश में मुझे यह पसंद करना होगा:
server1
server2
server3
etc
मैं रूबी में यह अधिकार प्राप्त करने के लिए प्रतीत नहीं कर सकते हैं:
for SERVER in `cat etc/SERVER_LIST`
do
ssh -q ${SERVER} "ls -l /etc"
done
etc/SERVER_LIST सिर्फ एक फ़ाइल लग रहा है कि तरह है।
#!/usr/bin/ruby
### SSH testing
#
#
require 'net/ssh'
File.open("etc/SERVER_LIST") do |f|
f.each_line do |line|
Net::SSH.start(line, 'andex') do |ssh|
result = ssh.exec!("ls -l")
puts result
end
end
end
मैं इन त्रुटियों को अब हो रही है::
[email protected]:~/sysauto> ./ssh2.rb
/usr/lib64/ruby/gems/1.8/gems/net-ssh-2.0.23/lib/net/ssh/transport/session.rb:65:in `initialize': newline at the end of hostname (SocketError)
from /usr/lib64/ruby/gems/1.8/gems/net-ssh-2.0.23/lib/net/ssh/transport/session.rb:65:in `open'
from /usr/lib64/ruby/gems/1.8/gems/net-ssh-2.0.23/lib/net/ssh/transport/session.rb:65:in `initialize'
from /usr/lib64/ruby/1.8/timeout.rb:53:in `timeout'
from /usr/lib64/ruby/1.8/timeout.rb:93:in `timeout'
from /usr/lib64/ruby/gems/1.8/gems/net-ssh-2.0.23/lib/net/ssh/transport/session.rb:65:in `initialize'
from /usr/lib64/ruby/gems/1.8/gems/net-ssh-2.0.23/lib/net/ssh.rb:179:in `new'
from /usr/lib64/ruby/gems/1.8/gems/net-ssh-2.0.23/lib/net/ssh.rb:179:in `start'
from ./ssh2.rb:10
from ./ssh2.rb:9:in `each_line'
from ./ssh2.rb:9
from ./ssh2.rb:8:in `open'
from ./ssh2.rb:8
फ़ाइल
सही ढंग से प्राप्त किया जाता है, मैं रिश्तेदार पथ का उपयोग कर रहा, जैसा कि मैंने निर्देशिका में बैठा हूँ यह वही है मैं अब तक किया है आदि के तहत/(नहीं/आदि, मैं इसे एक स्क्रिप्टिंग निर्देशिका से बाहर चला रहा हूं जहां मैं फाइल को उपनिर्देशिका में रखता हूं आदि)
दूसरों के कहने के अलावा, मैं बस यह इंगित करना चाहता हूं कि रुबी में लूप का अधिक उपयोग नहीं किया जाता है। 'प्रत्येक' विधि का प्रयोग अक्सर किया जाता है। –
स्ट्रिंग से व्हाइटस्पेस को बंद करने के लिए एक line.strip करें। इस अनुलग्नक – Matt
के साथ नीचे मेरा उत्तर अपडेट किया गया है नई लाइन से छुटकारा पाने के लिए 'chomp' जोड़ें। मैं अपना जवाब अपडेट करूंगा। – Telemachus