From: jackster the jackle on 30 Nov 2009 17:08 I am using ruby to search and match text in a file that has several mathes. Here is the text: Ethernet adapter Local Area Connection: Connection-specific DNS Suffix . : corp.pc.com IP Address. . . . . . . . . . . . : 172.1.81.7 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 172.1.81.254 Ethernet adapter Network Connect Adapter: Media State . . . . . . . . . . . : Media disconnected Ethernet adapter Wireless Network Connection: Connection-specific DNS Suffix . : corp.pc.com IP Address. . . . . . . . . . . . : 172.1.17.116 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 172.1.17.254 What I need to do it pull out the IP address and default gateway IP addresses for each interface and store them for processing later on in the script. What method should I use to get the first ip address and gateway and store it, then grab the next set and store that? thanks -- Posted via http://www.ruby-forum.com/.
From: Roger Pack on 30 Nov 2009 17:28 > What method should I use to get the first ip address and gateway and > store it, then grab the next set and store that? I'd probably recommend a regular expression. something like a = big_string big_string =~ /something/ or big_string.scan(/something/).each {|match| } -- Posted via http://www.ruby-forum.com/.
From: jackster the jackle on 30 Nov 2009 17:39 Thanks Roger. I am currently iterating through each line of text and matching on any lines that either have "IP Address" or "Default Gateway" in them and grabbing the IP addresses and assigning them to variables. The problem is, the first IP address I get seems to disapear toward the end of the script and I can't figure out why....perhaps because I'm using "elsif"? here is the code: ipconf = `ipconfig` ipconf.each do |x| if x[/IP\sAdd*/] x.scan(/\s*IP\sAddress.*\:\s([1-9]+\.[0-9]+\.[0-9]+\.[0-9]+)\s+$/) ip = $1 puts "ip addr: " + $1.to_s ## THIS PRINTS OUT FINE elsif x[/Def*/] puts "XXXXX IP: #{ip}" x.scan(/\s*Default\sGateway.*\:\s([1-9]+\.[0-9]+\.[0-9]+\.[0-9]+)\s+$/) def_gate = $1 puts "Default Gateway: "+$1.to_s ## THIS PRINTS OUT FINE puts "Print IP address again: #{ip_addr}" ### THIS HAS NO VALUE end end I think I need to somehow combine the "if" and "elsif" statements so I'm not using "or" and this way the ip_addr variable will hold it's value? thanks jack -- Posted via http://www.ruby-forum.com/.
|
Pages: 1 Prev: RubyGems nightmare due to 2 installs Next: one more regular expression, please |