Skip to content

Instantly share code, notes, and snippets.

@YushengLi
Created September 9, 2017 14:07
Show Gist options
  • Save YushengLi/75fe03debfea1d502be56307ab0837e4 to your computer and use it in GitHub Desktop.
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
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