View on GitHub

pyFortimanagerAPI

A wrapper for FortiManager API

pyFortiManagerAPI

A Python wrapper for the FortiManager JSON RPC API.

contributions welcome Upload Python Package

** Video Tutorial to use the package is available on YouTube **

Installation

Use the package manager pip to install pyFortiManagerAPI.

```shell script pip install pyFortiManagerAPI


## Getting Started

1. Creating Instance of the Module

```python
import pyFortiManagerAPI
fortimngr = pyFortiManagerAPI.FortiManager(host="", 
                                           username="",
                                           password="")

Required settings:

Optional settings:

2) Set to different Adom

>>> fortimngr.set_adom("adom_name")

3) Lock Adom (in workspace mode)

>>> fortimngr.lock_adom()
>>> fortimngr.lock_adom(name="root")

4) Unlock Adom (in workspace mode)

>>> fortimngr.unlock_adom()
>>> fortimngr.unlock_adom(name="root")

User Operations : Policy Package

5) Get all the policy packages configured on FortiManager.

>>> fortimngr.get_policy_packages()
>>> fortimngr.get_policy_packages(name="default")

6) Add your own policy package in FortiManager.

>>> fortimngr.add_policy_package(name="TestPackage")

User Operations : Address Objects

7) Get all address objects from FortiManager.

>>> fortimngr.get_firewall_address_objects()

7bis) Get all v6 address objects from FortiManager.

>>> fortimngr.get_firewall_address_v6_objects()

8) Get specific address object from FortiManager.

>>> fortimngr.get_firewall_address_objects(name="YourObjectName")
>>> fortimngr.get_firewall_address_v6_objects(name="YourObjectName")

9) Create an address object.

>>> fortimngr.add_firewall_address_object(name="TestObject",
                                          associated_interface="any",
                                          subnet=["1.1.1.1", "255.255.255.255"]
                                          )

9bis) Create an v6 address object.

>>> fortimngr.add_firewall_address_v6_object(name="TestObject",
                                          subnet6="2001:0001:0001::2/128"]
                                          )
>>> fortimngr.update_firewall_address_object(name="TestObject",
                                             associate_interface="port1",
                                             comment="Updated using API",
                                             subnet=["2.2.2.2","255.255.255.255"]
                                             )

>>> fortimngr.update_firewall_address_v6_object(name="TestObject",
                                             comment="Updated using API",
                                             subnet6="2001:0001::1/128"
                                             )

11) Delete address object.

>>> fortimngr.delete_firewall_address_object(object_name="TestObject")

User Operations : Address Groups

12) Get all address groups.

>>> fortimngr.get_address_groups()
>>> fortimngr.get_address_v6_groups()

13) Get specific address group.

>>> fortimngr.get_address_groups(name="TestGroup")
>>> fortimngr.get_address_v6_groups(name="TestGroup")

14) Create your own address group.

>>> fortimngr.add_address_group(name="Test_Group",                                
                                members=["TestObject1"])
>>> fortimngr.add_address_v6_group(name="Test_Group",
                                members=["TestObject1"])

15) Update the address group.

>>> fortimngr.update_address_group(name="Test_Group",
                                   object_name="TestObject3",
                                   do="add")
>>> fortimngr.update_address_v6_group(name="Test_Group",
                                   object_name="TestObject3",
                                   do="add")

16) Delete the address group.

>>> fortimngr.delete_address_group(name="Test_group")
>>> fortimngr.delete_address_v6_group(name="Test_group")

User Operations : VirtualIP Objects

17) Get all VIP objects from FortiManager.

>>> fortimngr.get_firewall_vip_objects()

User Operations : Add Devices

18) Add devices to FortiManager.

Add an existing device:

>>> fortimngr.add_device(ip_address="192.168.0.100", 
                         username="admin", 
                         password="", 
                         name="FortiGateVM64", 
                         description=False)

or model a device that is to be deployed:

>>> fortimngr.add_model_device(serial_no="FGTxxxxxxxx", 
                         name="FortiGateVM64")
                         username="admin", 
                         password="", 

Required arguments:

Optional arguments:

19) Get devices From FortiManager.

>>> fortimngr.get_devices()

User Operations : Meta Data

20) Get Meta Data From FortiManager.

>>> fortimngr.get_meta_data()

21) Add Meta Data to FortiManager.

>>> fortimngr.add_meta_data(name="Meta_Data_1", 
                            status=1)

Parameters

22) Assign Meta Data to a FortiGate.

>>> fortimngr.assign_meta_to_device(device="FortiGateVM64", 
                                    meta_name="Meta_Data_1", 
                                    meta_value="192.168.0.1/24")

Parameters

23) Assign Meta Data to a FortiGate VDOM.

>>> fortimngr.assign_meta_to_device_vdom(device="FortiGateVM64",
                                         vdom="vdom",
                                         meta_name="Meta_Data_1", 
                                         meta_value="192.168.0.1/24")

Parameters

24) Get all the policies in your Policy Package.

>>> fortimngr.get_firewall_policies(policy_package_name="YourPolicyPackageName")

25) Get specific policiy in your Policy Package using PolicyID filter.

>>> fortimngr.get_firewall_policies(policy_package_name="YourPolicyPackageName", policyid=3)

26) Get global header policy

fortimngr.get_global_header_policies

27) Get header policy

fortimngr.get_firewall_header_policies

fortimngr.get_global_footer_policies

fortimngr.get_firewall_footer_policies

30) Create your own policy in your Policy Package.

>>> fortimngr.add_firewall_policy(policy_package_name="YourPolicyPackageName",
                                  name="YourPolicyName",
                                  source_interface="port1",
                                  source_address="all",
                                  destination_interface="port2",
                                  destination_address="all",
                                  service="ALL_TCP",
                                  logtraffic=2
                                  )
>>> fortimngr.add_firewall_policy_with_v6(policy_package_name="YourPolicyPackageName",
                                  name="YourPolicyName",
                                  source_interface="port1",
                                  source_address="all",
                                  source_address6="all",
                                  destination_interface="port2",
                                  destination_address="all",
                                  destination_address6="all",
                                  service="ALL_TCP",
                                  logtraffic=2
                                  )

31) Update the policy in your Policy Package.

>>> fortimngr.update_firewall_policy(policy_package_name="YourPolicyPackageName",
                                     policyid=10,
                                     source_interface="port2",
                                     action=1,
                                     )

32) Delete the policy in your Policy Package.

>>> fortimngr.delete_firewall_policy(policy_package_name="YourPolicyPackageName",
                                     policyid=10)

33) Move Firewall Policy.

>>> fortimngr.move_firewall_policy(policy_package_name="LocalLab",
                                   move_policyid=10, 
                                   option="after", 
                                   policyid=2)

User Operations : Installing the Policy Package.

34) Installing the Policy Package.

>>> fortimngr.install_policy_package(package_name="Your Policy Package name")

35) Adding Installation Targets to a Policy Package.

>>> fortimngr.add_install_target(device_name="FortiGateVM64", 
                                 pkg_name="Test_Policy_Pakage", 
                                 vdom="root")

Show Params for updation of Policies and Objects.

36) Parameters for updating Address Object.

>>> fortimngr.show_params_for_object_update()
    Parameters to create/update address object:

    PARAMETERS                   FIREWALL OBJECT SETTINGS
    allow_routing(int)          : Static Route Configuration
    associated_interface(str)   : Interface
    comment(str)                : Comments
    object_name(str)            : Address Name
    subnet[list]                : IP/Netmask
    object_type(int)            : Type

37) Parameters for updating Policy.

>>> fortimngr.show_params_for_policy_update()
    Parameters to create/update Policy:

    PARAMETERS                       FIREWALL POLICY SETTINGS
    name(str)                       : Name
    source_interface(str)           : Incoming Interface
    source_address(str)             : Source Address
    destination_interface(str)      : Destination Interface
    destination_address(str)        : Destination Address
    service(str)                    : Service
    schedule(str)                   : Schedule
    action(int)                     : Action
    logtraffic(int)                 : Log Traffic
    comment(str)                    : Comments

User Operations : Adding scripts in Fortimanager.

38) Add a script in FortiManager’s Database.

>>> fortimngr.create_script(name="Test Script Template", 
                            script_content="config system interface \n edit port 1 \n set ip 1.1.1.1/24", 
                            target=0)

39) Get all scripts from FortiManager’s Database.

>>> fortimngr.get_all_scripts()

40) Delete a script from FortiManager’s Database.

>>> fortimngr.delete_script(name="Test Script Template")

41) Run a script on FortiManager’s Database/ FortiGate’s Remote CLI.

>>> fortimngr.run_script_on_single_device(script_name="test_script", 
                                          device_name="FortiGate-VM64", 
                                          vdom="root")
>>> fortimngr.run_script_on_multiple_devices(script_name="test_script", 
                                             devices=[{"name":"FortiGate-VM64", "vdom": "root"},
                                                      {"name":"Test-FortiGate-VM64", "vdom": "global"},
                                                      {"name":"Test-2-FortiGate-VM64", "vdom": "Test"}])
* :param script_name: Specify the script name that should be executed on the specified devices

### 42) Backup FortiGate's configuration from FortiManager and store it in TFTP server.

```python
>>> fortimngr.backup_config_of_fortiGate_to_tftp(tftp_ip="1.1.1.1", 
                                                 path="/FortiGate_backups", 
                                                 filename="FortiGate.conf", 
                                                 device_name="FortiGate-VM64", vdom="root")

####A small function to back up configuration on FortiGates from FortiManager and store it in TFTP Server. This function leverages create_script() and run_script_on_single_device() methods from this package to backup the config.

Contributing

License

MIT