Python package to configure Fortigate (Fortios) devices using REST API and SSH
Project description
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.
Quickstart
Install the package from pypi.org
pip install fortigate-api
or from github.com repository
pip install git+https://github.com/vladimirs-git/fortigate-api
"""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()
"""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()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
fortigate_api-2.0.2.tar.gz
(3.2 MB
view details)
Built Distribution
File details
Details for the file fortigate_api-2.0.2.tar.gz
.
File metadata
- Download URL: fortigate_api-2.0.2.tar.gz
- Upload date:
- Size: 3.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9544aac5f6041a49af8b65bd18a6f520823340303068357fb94ef0052c4bd7b0 |
|
MD5 | 5d6cc7b32f8072d8c0c49eaebbd4d47a |
|
BLAKE2b-256 | cf3873928831e9bc6fcd79c23fda6e35313f81071c07794816a451cc7d64e704 |
File details
Details for the file fortigate_api-2.0.2-py3-none-any.whl
.
File metadata
- Download URL: fortigate_api-2.0.2-py3-none-any.whl
- Upload date:
- Size: 3.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ded5a782c8b84f99bcd1555963687e5f071274d6b3e80cc0231e25a283e9e409 |
|
MD5 | 1e3400fe47ba6946cdb0ffb37def90b6 |
|
BLAKE2b-256 | 6a801e4d9cdd4d60816eab56aa725618c12f16a99e4bcc36020c5a0b32dd1e93 |