[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Processing a text file

barjunk

2/15/2007 9:52:00 PM

I have a radius users text file that has entries like:

# username - Thu Feb 15 08:59:03 AKST 2007
davidh Calling-Station-Id != "00-1A-02-3E-93-28", Auth-Type := Reject
davidh User-Password == "secretpass"
#


There are two things I would like to be able to do separately, one is
to delete that set of lines given the username.

The second is to change the password or the MAC address given the
username.

I think the second one is probably easy, using regex some sort of
"sed" like command.

The first one is a little more demanding on my nuby mind. I guess I
can figure out some sort of "grep -v" functionality, but that leaves
the line above and below as cruft.

Suggestions?

Mike B.

1 Answer

Edwin Fine

2/16/2007 5:19:00 AM

0

barjunk wrote:
> I have a radius users text file that has entries like:
>
> # username - Thu Feb 15 08:59:03 AKST 2007
> davidh Calling-Station-Id != "00-1A-02-3E-93-28", Auth-Type := Reject
> davidh User-Password == "secretpass"
> #
...

I don't know how big the file is, but if you can read it all into a
string (e.g. str = File.read("the_file") ), you could use something like
this:

def zap_unwanted_lines(str, user)
re = %r[
^\#\s+username\s+-\s+\w{3}\s\w{3}\s\d{2}\s\d{2}:\d{2}:\d{2}\s\w+\s\d{4}\n
#{user}\s+Calling-Station-Id[^\n]+\n
#{user}\s+User-Password[^\n]+\n
\#\s*\n
]x

str.gsub re, ''
end

TEXT = %q{
# username - Thu Feb 15 08:59:03 AKST 2007
davidh Calling-Station-Id != "00-1A-02-3E-93-28", Auth-Type := Reject
davidh User-Password == "secretpass"
#
}

dummy = "This is some dummy text\n" * 5
fake_radius_data = dummy + TEXT + dummy + TEXT + dummy

puts "--- Before zapping ---"
puts fake_radius_data
puts "--- After zapping ---"
puts zap_unwanted_lines(fake_radius_data, "davidh")

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