Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Extract a range i.e. svr[100..130] ?

Reply
Thread Tools

Extract a range i.e. svr[100..130] ?

 
 
Richard Sandoval
Guest
Posts: n/a
 
      04-15-2011
What best method could extract the range of a given list of servers?

I have a field name on a UI that contains a list of servers and it can
be a range such as
svr[100..130].domain.local,prod[10..13].otherdomain.local.


What would be my best approach to single each one of those nodes out to
iterate through?

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Jesús Gabriel y Galán
Guest
Posts: n/a
 
      04-15-2011
On Fri, Apr 15, 2011 at 6:08 PM, Richard Sandoval <(E-Mail Removed)> wrote:
> What best method could extract the range of a given list of servers?
>
> I have a field name on a UI that contains a list of servers and it can
> be a range such as
> svr[100..130].domain.local,prod[10..13].otherdomain.local.
>
>
> What would be my best approach to single each one of those nodes out to
> iterate through?


Sorry, if I didn't understand this well. You have a string containing
"svr[100..130].domain.local" and you want:

svr100.domain.local
svr101.domain.local
....
svr130.domain.local

?

If that's the case, then this might work:

a = "svr[100..130].domain.local"
m = a.match(/(.*?)\[(\d+)\.\.(\d+)\](.*)/)
(m[2].to_i..m[3].to_i).each {|num| puts "#{m[1]}#{num}#{m[4]}"}

=>
svr100.domain.local
svr101.domain.local
svr102.domain.local
[...snip...]
svr129.domain.local
svr130.domain.local

Jesus

 
Reply With Quote
 
 
 
 
7stud --
Guest
Posts: n/a
 
      04-15-2011
"Jes=C3=BAs Gabriel y Gal=C3=A1n" <(E-Mail Removed)> wrote in pos=
t =

#993035:
> Sorry, if I didn't understand this well. You have a string containing
> "svr[100..130].domain.local" and you want:
>
> svr100.domain.local
> svr101.domain.local
> ....
> svr130.domain.local
>
> ?
>
> If that's the case, then this might work:
>
> a =3D "svr[100..130].domain.local"
> m =3D a.match(/(.*?)\[(\d+)\.\.(\d+)\](.*)/)
> (m[2].to_i..m[3].to_i).each {|num| puts "#{m[1]}#{num}#{m[4]}"}
>


Here's my version:

str =3D "svr[100..130].domain.local"

range_pattern =3D /
\[ #a literal opening bracket
(\d+) #capture a series of one or more digits
[.]{2} #two literal periods
(\d+) #capture a series of one or more digits
\] #a literal closing bracket
/xms

before_range, the_range, after_range =3D str.partition(range_pattern)
start_range, end_range =3D $1, $2

start_range.upto(end_range) do |i|
puts "#{before_range}#{i}#{after_range}"
end

--output:--
svr100.domain.local
svr101.domain.local
svr102.domain.local
svr103.domain.local
svr104.domain.local
svr105.domain.local
svr106.domain.local
svr107.domain.local
svr108.domain.local
svr109.domain.local
svr110.domain.local
svr111.domain.local
svr112.domain.local
svr113.domain.local
svr114.domain.local
svr115.domain.local
svr116.domain.local
svr117.domain.local
svr118.domain.local
svr119.domain.local
svr120.domain.local
svr121.domain.local
svr122.domain.local
svr123.domain.local
svr124.domain.local
svr125.domain.local
svr126.domain.local
svr127.domain.local
svr128.domain.local
svr129.domain.local
svr130.domain.local

-- =

Posted via http://www.ruby-forum.com/.=

 
Reply With Quote
 
Richard Sandoval
Guest
Posts: n/a
 
      04-15-2011
This is a definite step in the right direction and I appreciate your
assistance Jesus.

So I have a fieldname in a UI which is named Hostnames:

Within the hostname field, it could have a single host named
svr10.domain.local or it could have a range like
svr.10.domain.local,svr[100..103].domain.local.

Essentially what I am trying to do is to get that hostname field in my
script and for each individual host and/or a range of hosts then do a
specific command or go through my work flow.

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
7stud --
Guest
Posts: n/a
 
      04-15-2011
Richard Sandoval wrote in post #993057:
> This is a definite step in the right direction and I appreciate your
> assistance Jesus/7stud
>
> So I have a fieldname in a UI which is named Hostnames:
>
> Within the hostname field, it could have a single host named
> svr10.domain.local or it could have a range like
> svr.10.domain.local,svr[100..103].domain.local.
>
> Essentially what I am trying to do is to get that hostname field in my
> script and for each individual host and/or a range of hosts then do a
> specific command or go through my work flow.


...and so what have you tried given the above?

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Richard Sandoval
Guest
Posts: n/a
 
      04-15-2011
undefined method `match' for ["svr[100..103].domain.local"]:Array
(NoMethodError)

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Richard Sandoval
Guest
Posts: n/a
 
      04-15-2011
it might be that my loop is wrong, ill investigate further, thank you
again.

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Richard Sandoval
Guest
Posts: n/a
 
      04-15-2011
7stud,

you use upto but that doesnt work for 1.8.6, what method could I use in
this scenario?

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Jesús Gabriel y Galán
Guest
Posts: n/a
 
      04-15-2011
On Fri, Apr 15, 2011 at 8:40 PM, Richard Sandoval <(E-Mail Removed)> wrote:
> undefined method `match' for ["svr[100..103].domain.local"]:Array
> (NoMethodError)


This is because you don't have a string, you have an array. If you
have that value for example in params[:hostname], try this:

a = params[:hostname].first

and then the rest of my solution.

Jesus.

 
Reply With Quote
 
Richard Sandoval
Guest
Posts: n/a
 
      04-15-2011
Hi jesus, svr[100..103].domain.local would be one of the keys in the
array.

My array looks like

["svr10.domain.local", "svr[100-103].domain.local",
"svr[200-300].domain.local"]

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
How do i extract vidios when winrar wont extract them??? help plzzzzzzzz smuttdog@sc.rr.com Computer Support 2 12-23-2007 07:03 AM
extract a range start/end? Michael Linfield Ruby 8 09-03-2007 12:40 AM
range() is not the best way to check range? Summercoolness@gmail.com Python 46 07-25-2006 08:10 PM
Extract range of lines from a text file Amer Neely Perl Misc 29 04-10-2006 12:28 AM
extract range of lines using range op bug? it_says_BALLS_on_your forehead Perl Misc 3 03-03-2006 04:28 PM



Advertisments