Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Need Assistance with TCL regular expression in Script run on Fortigate

Posted on 2013-05-28
2
Medium Priority
?
1,177 Views
Last Modified: 2013-05-29
We have 65+ Fortigate branch firewalls that all have unique subnets based on their branch number.

The third octet in the IP address is the only difference.

What I want to do is dynamically get the third octet from the internal1 interface and use that as a variable in the rest of the script.

I have borrowed from here which works, however when I change the regexp to only get the 3rd octet rather than the whole ip address the script it fails at the regular expression.

#!
puts "Script starts ..."

# Create do_cmd procedure to execute CLI commands
proc do_cmd {cmd} {
puts [exec "$cmd\n" "# " 15]
}

# get internal ip
do_cmd "config system interface"
do_cmd "edit internal1"
set query [exec "show\n" "# "]
#puts $query
set output [split $query "\n"]
#Find branch number and puts $ip
regexp {(?<=10.10.)[0-9]{1,3}} $output ip
do_cmd "end"
do_cmd "$ip"

Open in new window


Below is the contents of $query. I have highlighted in bold the data I need.

config system interface
    edit "internal1"
        set vdom "root"
        set ip XXX.XXX.XXX.XXX 255.255.255.0
        set allowaccess ping https
        set dns-query recursive
        set type physical
        set description "X"
        set alias "X"
    next
end

XXXXXX (internal1) #
0
Comment
Question by:Barfoots
2 Comments
 

Accepted Solution

by:
Barfoots earned 0 total points
ID: 39205771
I have found a way around this but am unsure whether this is the most effective method;

#!
puts "Script starts ..."

# Create do_cmd procedure to execute CLI commands
proc do_cmd {cmd} {
puts [exec "$cmd\n" "# " 15]
}

# get internal ip
do_cmd "config system interface"
do_cmd "edit internal1"
set query [exec "show\n" "# "]
#puts $query
set output [split $query "\n"]
#Find IP address and puts $ip
regexp {(?:\d+\.){3}\d+} $output ip
do_cmd $ip
regexp "(\[0-9]{1,3})\.(\[0-9]{1,3})\.(\[0-9]{1,3})\.(\[0-9]{1,3})" $ip all first second third fourth
do_cmd $third
do_cmd "end"

Open in new window

0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Having just graduated from college and entered the workforce, I don’t find myself always using the tools and programs I grew accustomed to over the past four years. However, there is one program I continually find myself reverting back to…R.   So …
Q&A with Course Creator, Mark Lassoff, on the importance of HTML5 in the career of a modern-day developer.
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.
Suggested Courses

971 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question