1
我想學習ruby腳本。目前,我創建一個腳本這應該接受用戶輸入並做類似下面的一些行動:如何解析用戶輸入的紅寶石腳本
Go to server1 and restart mysqld
下面是我的腳本:
#!/usr/bin/ruby
puts "on which environment you want to run the script?"
srenv = STDIN.gets.chomp()
puts "#{srenv}"
puts "Hi you have chosen to run the script on #{srenv}, now is it Cluster or not?"
srenvdl = STDIN.gets.chomp()
puts "#{srenvdl}"
if srenvdl == "y"
text = String.new
File.open("cluster.txt") { |f| text = f.read }
words = text.split(/[^a-zA-Z1-9]/)
puts "Now enter your services names:"
sernm = STDIN.gets.chomp()
sernmw = sernm.split(/[^a-zA-Z1-9]/)
for x in words
for each in sernmw
puts "Go to #{x} and restart #{each}!!"
end
end
else
puts "Sorry now we are only supporting Clusters."
exit
end
這是一個互動的腳本,它要求用戶輸入服務名稱並從我想跳過的文件中讀取羣集服務器名稱。另外,我無法在從文件讀取時跳過羣集名稱。
ruby script.rb cluster1:mysqld,nginx cluster2:memcache,sendmail
我有,我已經存儲瞭如下的集羣服務器名anoter文件cluster.txt:
cluster1:server1,server11,server111
cluster2:server2,server22,server222
現在我希望腳本應該返回我的結果是象下面這樣:
Go to server1 and restart mysqld
Go to server1 and restart nginx
Go to server11 and restart mysqld
Go to server11 and restart nginx
Go to server111 and restart mysqld
Go to server111 and restart nginx
Go to server2 and restart memcache
Go to server2 and restart sendmail
Go to server22 and restart memcache
Go to server22 and restart sendmail
Go to server222 and restart memcache
Go to server222 and restart sendmail
那麼,那有什麼問題呢? –
其實我不想交互,其次是從cluster.txt讀取時不能跳過clustername。 – linuxnewbee