Created
September 9, 2017 14:07
-
-
Save YushengLi/75fe03debfea1d502be56307ab0837e4 to your computer and use it in GitHub Desktop.
A dummy script to generate Fortigate Firewall object and Reserved address batch insertion script from CSV
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'csv' | |
class Fortigate | |
def self.export_batch_object_script(path) | |
File.open('firewall_address', 'w+') do |f| | |
f.write("config firewall address\n") | |
f.write(" edit all\n") | |
f.write(" next\n") | |
f.write(" edit \"SSLVPN_TUNNEL_ADDR1\"\n") | |
f.write(" set type iprange\n") | |
f.write(" set start-ip 10.212.134.200\n") | |
f.write(" set end-ip 10.212.134.210\n") | |
f.write(" next\n") | |
f.write(" edit \"wizard_address_internal\"\n") | |
f.write(" set subnet 192.168.113.0 255.255.255.0\n") | |
f.write(" next\n") | |
f.write(" edit \"none\"\n") | |
f.write(" set subnet 0.0.0.0 255.255.255.255\n") | |
f.write(" next\n") | |
CSV.foreach(path, headers: true, header_converters: :symbol) do |record, i| | |
f.write(" edit \"#{record[:name]}\"\n") | |
f.write(" set subnet #{record[:address]} 255.255.255.255\n") | |
f.write(" next\n") | |
end | |
f.write("end") | |
end | |
end | |
def self.export_batch_reserved_address_script(path) | |
File.open("reserved_address", 'w+') do |f| | |
f.write("config system dhcp server\n") | |
f.write(" edit 1\n") | |
f.write(" config reserved-address\n") | |
r_index = 1 | |
CSV.foreach(path, headers: true, header_converters: :symbol) do |record, i| | |
next if record[:mac_adress] == '00:00:00:00:00:00' | |
f.write(" edit #{r_index}\n") | |
f.write(" set ip #{record[:address]}\n") | |
f.write(" set mac #{record[:mac_adress]}\n") | |
f.write(" set description \"#{record[:name]}\"\n") | |
f.write(" next\n") | |
r_index += 1 | |
end | |
f.write(" end\n") | |
f.write(" next\n") | |
f.write("end\n") | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment