.. image:: https://img.shields.io/pypi/v/fortigate-api.svg
:target: https://pypi.python.org/pypi/fortigate-api
.. image:: https://img.shields.io/badge/Python-3.8%20%7C%203.9%20%7C%203.10%20%7C%203.11-blue.svg
:target: https://pypi.python.org/pypi/logger-color
.. image:: https://img.shields.io/github/last-commit/vladimirs-git/fortigate-api
:target: https://pypi.python.org/pypi/fortigate-api
fortigate-api
=============
Python package to configure Fortigate (Fortios) devices using REST API.
- FortiGateAPI - Python connector to Fortigate API endpoints.
- FortiGate - Python wrapper for the FortiOS REST API.
Checked with FortiOS = v6.4.14.
Fully documented on `Read the Docs`_.
----------------------------------------------------------------------------------------
Requirements
============
Python >=3.8
Quickstart
==========
Install the package from pypi.org
.. code:: bash
pip install fortigate-api
or from github.com repository
.. code:: bash
pip install git+https://github.com/vladimirs-git/fortigate-api
----------------------------------------------------------------------------------------
.. code:: python
"""Quickstart FortiGateAPI.
- Create address in the Fortigate
- Get all addresses from the Fortigate vdom root
- Get address by name (unique identifier)
- Filter address by operator contains `=@`
- Update address data in the Fortigate
- Delete address from the Fortigate
"""
from pprint import pprint
from fortigate_api import FortiGateAPI
HOST = "host"
USERNAME = "username"
PASSWORD = "password"
api = FortiGateAPI(host=HOST, username=USERNAME, password=PASSWORD)
# Create address in the Fortigate
data = {
"name": "ADDRESS",
"obj-type": "ip",
"subnet": "127.0.0.100 255.255.255.252",
"type": "ipmask",
}
response = api.cmdb.firewall.address.create(data)
print(f"address.create {response}") # address.create <Response [200]>
# Get all addresses from the Fortigate vdom root
items = api.cmdb.firewall.address.get()
print(f"All addresses count={len(items)}") # All addresses count=14
# Get address by name (unique identifier)
items = api.cmdb.firewall.address.get(name="ADDRESS")
print(f"addresses count={len(items)}") # addresses count=1
pprint(items)
# [{"comment": "",
# "name": "ADDRESS",
# "subnet": "127.0.0.100 255.255.255.252",
# "uuid": "a386e4b0-d6cb-51ec-1e28-01e0bc0de43c",
# ...
# }]
# Filter address by operator contains `=@`
items = api.cmdb.firewall.address.get(filter="subnet=@127.0")
print(f"Filtered by `=@`, count={len(items)}") # Filtered by `=@`, count=2
# Update address data in the Fortigate
data = {"name": "ADDRESS", "subnet": "127.0.0.255 255.255.255.255"}
response = api.cmdb.firewall.address.update(data)
print(f"address.update {response}") # address.update <Response [200]>
# Delete address from the Fortigate
response = api.cmdb.firewall.address.delete("ADDRESS")
print(f"address.delete {response}") # address.delete <Response [200]>
api.logout()
.. code:: python
"""Quickstart FortiGate.
- Creates address in the Fortigate
- Get address by name (unique identifier)
- Updates address data in the Fortigate
- Delete address from the Fortigate
"""
from pprint import pprint
from fortigate_api import FortiGate
HOST = "host"
USERNAME = "username"
PASSWORD = "password"
fgt = FortiGate(host=HOST, username=USERNAME, password=PASSWORD)
# Creates address in the Fortigate
data = {
"name": "ADDRESS",
"obj-type": "ip",
"subnet": "127.0.0.100 255.255.255.252",
"type": "ipmask",
}
response = fgt.post(url="api/v2/cmdb/firewall/address/", data=data)
print(f"POST {response}", ) # POST <Response [200]>
# Get address by name (unique identifier)
response = fgt.get(url="api/v2/cmdb/firewall/address/ADDRESS")
print(f"GET {response}", ) # POST <Response [200]>
result = response.json()["results"]
pprint(result)
# [{"name": "ADDRESS",
# "subnet": "127.0.0.100 255.255.255.252",
# "uuid": "a386e4b0-d6cb-51ec-1e28-01e0bc0de43c",
# ...
# }]
# Updates address data in the Fortigate
data = {"name": "ADDRESS", "subnet": "127.0.0.255 255.255.255.255"}
response = fgt.put(url="api/v2/cmdb/firewall/address/ADDRESS", data=data)
print(f"PUT {response}") # PUT <Response [200]>
# Delete address from the Fortigate
response = fgt.delete(url="api/v2/cmdb/firewall/address/ADDRESS")
print(f"DELETE {response}", ) # DELETE <Response [200]>
fgt.logout()
----------------------------------------------------------------------------------------
.. _`Read the Docs`: https://fortigate-api.readthedocs.io/en/latest/
Metadata
Release files for fortigate_api 2.0.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| fortigate_api-2.0.8.tar.gz | 3.2 MB | Without provenance | Details |
Release files / fortigate_api-2.0.8.tar.gz
| Download URL | fortigate_api-2.0.8.tar.gz |
|---|---|
| Size | 3.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
56f9f1021c9dd68ab1d2eabcfadab559af52dd043ff9ba26a14d21a976c33ac8
|
|
BLAKE2b-256 checksum How to use checksums |
fc9cc585b75cd774310e4b15034c5d96bb3a9d34ad2472c8b1cbefca73f1f72e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.2 CPython/3.11.9 Windows/10
|
Security for fortigate_api 2.0.8
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.