Я пытаюсь изучить рубиновые скрипты. В настоящее время я создаю скрипт, который должен принимать пользовательский ввод и сделать какое-то действие, как показано ниже:Как разобрать пользовательские входы в скрипте 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
Это интерактивный сценарий, и он просит пользователя ввести услугу name и читает имена серверов кластера из файла, который я хочу пропустить. Кроме того, я не могу пропустить имя кластера во время чтения из файла.
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
Итак, в чем проблема с этим? –
На самом деле я не хочу интерактивного, во-вторых, он не может пропустить clustername во время чтения из файла cluster.txt. – linuxnewbee