catocli 3.0.22__py3-none-any.whl → 3.0.24__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of catocli might be problematic. Click here for more details.
- catocli/Utils/clidriver.py +8 -8
- catocli/__init__.py +1 -1
- catocli/parsers/customParserApiClient.py +6 -2
- catocli/parsers/utils/export_utils.py +6 -2
- catocli-3.0.24.dist-info/METADATA +184 -0
- {catocli-3.0.22.dist-info → catocli-3.0.24.dist-info}/RECORD +154 -154
- models/mutation.policy.antiMalwareFileHash.addRule.json +0 -20
- models/mutation.policy.antiMalwareFileHash.addSection.json +0 -103
- models/mutation.policy.antiMalwareFileHash.createPolicyRevision.json +0 -123
- models/mutation.policy.antiMalwareFileHash.discardPolicyRevision.json +0 -123
- models/mutation.policy.antiMalwareFileHash.moveRule.json +0 -20
- models/mutation.policy.antiMalwareFileHash.moveSection.json +0 -103
- models/mutation.policy.antiMalwareFileHash.publishPolicyRevision.json +0 -123
- models/mutation.policy.antiMalwareFileHash.removeRule.json +0 -20
- models/mutation.policy.antiMalwareFileHash.removeSection.json +0 -103
- models/mutation.policy.antiMalwareFileHash.updatePolicy.json +0 -123
- models/mutation.policy.antiMalwareFileHash.updateRule.json +0 -20
- models/mutation.policy.antiMalwareFileHash.updateSection.json +0 -103
- models/mutation.policy.appTenantRestriction.addRule.json +0 -20
- models/mutation.policy.appTenantRestriction.addSection.json +0 -103
- models/mutation.policy.appTenantRestriction.createPolicyRevision.json +0 -123
- models/mutation.policy.appTenantRestriction.discardPolicyRevision.json +0 -123
- models/mutation.policy.appTenantRestriction.moveRule.json +0 -20
- models/mutation.policy.appTenantRestriction.moveSection.json +0 -103
- models/mutation.policy.appTenantRestriction.publishPolicyRevision.json +0 -123
- models/mutation.policy.appTenantRestriction.removeRule.json +0 -20
- models/mutation.policy.appTenantRestriction.removeSection.json +0 -103
- models/mutation.policy.appTenantRestriction.updatePolicy.json +0 -123
- models/mutation.policy.appTenantRestriction.updateRule.json +0 -20
- models/mutation.policy.appTenantRestriction.updateSection.json +0 -103
- models/mutation.policy.applicationControl.addRule.json +0 -20
- models/mutation.policy.applicationControl.addSection.json +0 -103
- models/mutation.policy.applicationControl.createPolicyRevision.json +0 -123
- models/mutation.policy.applicationControl.discardPolicyRevision.json +0 -123
- models/mutation.policy.applicationControl.moveRule.json +0 -20
- models/mutation.policy.applicationControl.moveSection.json +0 -103
- models/mutation.policy.applicationControl.publishPolicyRevision.json +0 -123
- models/mutation.policy.applicationControl.removeRule.json +0 -20
- models/mutation.policy.applicationControl.removeSection.json +0 -103
- models/mutation.policy.applicationControl.updatePolicy.json +0 -123
- models/mutation.policy.applicationControl.updateRule.json +0 -20
- models/mutation.policy.applicationControl.updateSection.json +0 -103
- models/mutation.policy.dynamicIpAllocation.addRule.json +0 -20
- models/mutation.policy.dynamicIpAllocation.addSection.json +0 -103
- models/mutation.policy.dynamicIpAllocation.createPolicyRevision.json +0 -123
- models/mutation.policy.dynamicIpAllocation.discardPolicyRevision.json +0 -123
- models/mutation.policy.dynamicIpAllocation.moveRule.json +0 -20
- models/mutation.policy.dynamicIpAllocation.moveSection.json +0 -103
- models/mutation.policy.dynamicIpAllocation.publishPolicyRevision.json +0 -123
- models/mutation.policy.dynamicIpAllocation.removeRule.json +0 -20
- models/mutation.policy.dynamicIpAllocation.removeSection.json +0 -103
- models/mutation.policy.dynamicIpAllocation.updatePolicy.json +0 -123
- models/mutation.policy.dynamicIpAllocation.updateRule.json +0 -20
- models/mutation.policy.dynamicIpAllocation.updateSection.json +0 -103
- models/mutation.policy.internetFirewall.addRule.json +0 -20
- models/mutation.policy.internetFirewall.addSection.json +0 -103
- models/mutation.policy.internetFirewall.createPolicyRevision.json +0 -123
- models/mutation.policy.internetFirewall.discardPolicyRevision.json +0 -123
- models/mutation.policy.internetFirewall.moveRule.json +0 -20
- models/mutation.policy.internetFirewall.moveSection.json +0 -103
- models/mutation.policy.internetFirewall.publishPolicyRevision.json +0 -123
- models/mutation.policy.internetFirewall.removeRule.json +0 -20
- models/mutation.policy.internetFirewall.removeSection.json +0 -103
- models/mutation.policy.internetFirewall.updatePolicy.json +0 -123
- models/mutation.policy.internetFirewall.updateRule.json +0 -20
- models/mutation.policy.internetFirewall.updateSection.json +0 -103
- models/mutation.policy.remotePortFwd.addRule.json +0 -20
- models/mutation.policy.remotePortFwd.addSection.json +0 -103
- models/mutation.policy.remotePortFwd.createPolicyRevision.json +0 -123
- models/mutation.policy.remotePortFwd.discardPolicyRevision.json +0 -123
- models/mutation.policy.remotePortFwd.moveRule.json +0 -20
- models/mutation.policy.remotePortFwd.moveSection.json +0 -103
- models/mutation.policy.remotePortFwd.publishPolicyRevision.json +0 -123
- models/mutation.policy.remotePortFwd.removeRule.json +0 -20
- models/mutation.policy.remotePortFwd.removeSection.json +0 -103
- models/mutation.policy.remotePortFwd.updatePolicy.json +0 -123
- models/mutation.policy.remotePortFwd.updateRule.json +0 -20
- models/mutation.policy.remotePortFwd.updateSection.json +0 -103
- models/mutation.policy.socketLan.addRule.json +0 -40
- models/mutation.policy.socketLan.addSection.json +0 -103
- models/mutation.policy.socketLan.createPolicyRevision.json +0 -143
- models/mutation.policy.socketLan.discardPolicyRevision.json +0 -143
- models/mutation.policy.socketLan.moveRule.json +0 -40
- models/mutation.policy.socketLan.moveSection.json +0 -103
- models/mutation.policy.socketLan.publishPolicyRevision.json +0 -143
- models/mutation.policy.socketLan.removeRule.json +0 -40
- models/mutation.policy.socketLan.removeSection.json +0 -103
- models/mutation.policy.socketLan.updatePolicy.json +0 -143
- models/mutation.policy.socketLan.updateRule.json +0 -40
- models/mutation.policy.socketLan.updateSection.json +0 -103
- models/mutation.policy.terminalServer.addRule.json +0 -20
- models/mutation.policy.terminalServer.addSection.json +0 -103
- models/mutation.policy.terminalServer.createPolicyRevision.json +0 -123
- models/mutation.policy.terminalServer.discardPolicyRevision.json +0 -123
- models/mutation.policy.terminalServer.moveRule.json +0 -20
- models/mutation.policy.terminalServer.moveSection.json +0 -103
- models/mutation.policy.terminalServer.publishPolicyRevision.json +0 -123
- models/mutation.policy.terminalServer.removeRule.json +0 -20
- models/mutation.policy.terminalServer.removeSection.json +0 -103
- models/mutation.policy.terminalServer.updatePolicy.json +0 -123
- models/mutation.policy.terminalServer.updateRule.json +0 -20
- models/mutation.policy.terminalServer.updateSection.json +0 -103
- models/mutation.policy.tlsInspect.addRule.json +0 -20
- models/mutation.policy.tlsInspect.addSection.json +0 -103
- models/mutation.policy.tlsInspect.createPolicyRevision.json +0 -123
- models/mutation.policy.tlsInspect.discardPolicyRevision.json +0 -123
- models/mutation.policy.tlsInspect.moveRule.json +0 -20
- models/mutation.policy.tlsInspect.moveSection.json +0 -103
- models/mutation.policy.tlsInspect.publishPolicyRevision.json +0 -123
- models/mutation.policy.tlsInspect.removeRule.json +0 -20
- models/mutation.policy.tlsInspect.removeSection.json +0 -103
- models/mutation.policy.tlsInspect.updatePolicy.json +0 -123
- models/mutation.policy.tlsInspect.updateRule.json +0 -20
- models/mutation.policy.tlsInspect.updateSection.json +0 -103
- models/mutation.policy.wanFirewall.addRule.json +0 -20
- models/mutation.policy.wanFirewall.addSection.json +0 -103
- models/mutation.policy.wanFirewall.createPolicyRevision.json +0 -123
- models/mutation.policy.wanFirewall.discardPolicyRevision.json +0 -123
- models/mutation.policy.wanFirewall.moveRule.json +0 -20
- models/mutation.policy.wanFirewall.moveSection.json +0 -103
- models/mutation.policy.wanFirewall.publishPolicyRevision.json +0 -123
- models/mutation.policy.wanFirewall.removeRule.json +0 -20
- models/mutation.policy.wanFirewall.removeSection.json +0 -103
- models/mutation.policy.wanFirewall.updatePolicy.json +0 -123
- models/mutation.policy.wanFirewall.updateRule.json +0 -20
- models/mutation.policy.wanFirewall.updateSection.json +0 -103
- models/mutation.policy.wanNetwork.addRule.json +0 -20
- models/mutation.policy.wanNetwork.addSection.json +0 -103
- models/mutation.policy.wanNetwork.createPolicyRevision.json +0 -123
- models/mutation.policy.wanNetwork.discardPolicyRevision.json +0 -123
- models/mutation.policy.wanNetwork.moveRule.json +0 -20
- models/mutation.policy.wanNetwork.moveSection.json +0 -103
- models/mutation.policy.wanNetwork.publishPolicyRevision.json +0 -123
- models/mutation.policy.wanNetwork.removeRule.json +0 -20
- models/mutation.policy.wanNetwork.removeSection.json +0 -103
- models/mutation.policy.wanNetwork.updatePolicy.json +0 -123
- models/mutation.policy.wanNetwork.updateRule.json +0 -20
- models/mutation.policy.wanNetwork.updateSection.json +0 -103
- models/query.policy.antiMalwareFileHash.policy.json +0 -123
- models/query.policy.appTenantRestriction.policy.json +0 -123
- models/query.policy.applicationControl.policy.json +0 -123
- models/query.policy.dynamicIpAllocation.policy.json +0 -123
- models/query.policy.internetFirewall.policy.json +0 -123
- models/query.policy.remotePortFwd.policy.json +0 -123
- models/query.policy.socketLan.policy.json +0 -143
- models/query.policy.terminalServer.policy.json +0 -123
- models/query.policy.tlsInspect.policy.json +0 -123
- models/query.policy.wanFirewall.policy.json +0 -123
- models/query.policy.wanNetwork.policy.json +0 -123
- schema/catolib.py +64 -56
- catocli-3.0.22.dist-info/METADATA +0 -124
- {catocli-3.0.22.dist-info → catocli-3.0.24.dist-info}/WHEEL +0 -0
- {catocli-3.0.22.dist-info → catocli-3.0.24.dist-info}/entry_points.txt +0 -0
- {catocli-3.0.22.dist-info → catocli-3.0.24.dist-info}/licenses/LICENSE +0 -0
- {catocli-3.0.22.dist-info → catocli-3.0.24.dist-info}/top_level.txt +0 -0
catocli/Utils/clidriver.py
CHANGED
|
@@ -48,15 +48,15 @@ from ..parsers.query_enterpriseDirectory import query_enterpriseDirectory_parse
|
|
|
48
48
|
from ..parsers.query_devices import query_devices_parse
|
|
49
49
|
from ..parsers.query_accountSnapshot import query_accountSnapshot_parse
|
|
50
50
|
from ..parsers.query_catalogs import query_catalogs_parse
|
|
51
|
-
from ..parsers.query_xdr import query_xdr_parse
|
|
52
51
|
from ..parsers.query_site import query_site_parse
|
|
53
|
-
from ..parsers.
|
|
52
|
+
from ..parsers.query_xdr import query_xdr_parse
|
|
54
53
|
from ..parsers.query_groups import query_groups_parse
|
|
54
|
+
from ..parsers.query_policy import query_policy_parse
|
|
55
55
|
from ..parsers.mutation_xdr import mutation_xdr_parse
|
|
56
|
-
from ..parsers.mutation_site import mutation_site_parse
|
|
57
|
-
from ..parsers.mutation_sites import mutation_sites_parse
|
|
58
56
|
from ..parsers.mutation_policy import mutation_policy_parse
|
|
57
|
+
from ..parsers.mutation_site import mutation_site_parse
|
|
59
58
|
from ..parsers.mutation_container import mutation_container_parse
|
|
59
|
+
from ..parsers.mutation_sites import mutation_sites_parse
|
|
60
60
|
from ..parsers.mutation_admin import mutation_admin_parse
|
|
61
61
|
from ..parsers.mutation_accountManagement import mutation_accountManagement_parse
|
|
62
62
|
from ..parsers.mutation_sandbox import mutation_sandbox_parse
|
|
@@ -183,15 +183,15 @@ query_enterpriseDirectory_parser = query_enterpriseDirectory_parse(query_subpars
|
|
|
183
183
|
query_devices_parser = query_devices_parse(query_subparsers)
|
|
184
184
|
query_accountSnapshot_parser = query_accountSnapshot_parse(query_subparsers)
|
|
185
185
|
query_catalogs_parser = query_catalogs_parse(query_subparsers)
|
|
186
|
-
query_xdr_parser = query_xdr_parse(query_subparsers)
|
|
187
186
|
query_site_parser = query_site_parse(query_subparsers)
|
|
188
|
-
|
|
187
|
+
query_xdr_parser = query_xdr_parse(query_subparsers)
|
|
189
188
|
query_groups_parser = query_groups_parse(query_subparsers)
|
|
189
|
+
query_policy_parser = query_policy_parse(query_subparsers)
|
|
190
190
|
mutation_xdr_parser = mutation_xdr_parse(mutation_subparsers)
|
|
191
|
-
mutation_site_parser = mutation_site_parse(mutation_subparsers)
|
|
192
|
-
mutation_sites_parser = mutation_sites_parse(mutation_subparsers)
|
|
193
191
|
mutation_policy_parser = mutation_policy_parse(mutation_subparsers)
|
|
192
|
+
mutation_site_parser = mutation_site_parse(mutation_subparsers)
|
|
194
193
|
mutation_container_parser = mutation_container_parse(mutation_subparsers)
|
|
194
|
+
mutation_sites_parser = mutation_sites_parse(mutation_subparsers)
|
|
195
195
|
mutation_admin_parser = mutation_admin_parse(mutation_subparsers)
|
|
196
196
|
mutation_accountManagement_parser = mutation_accountManagement_parse(mutation_subparsers)
|
|
197
197
|
mutation_sandbox_parser = mutation_sandbox_parse(mutation_subparsers)
|
catocli/__init__.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
__version__ = "3.0.
|
|
1
|
+
__version__ = "3.0.24"
|
|
2
2
|
__cato_host__ = "https://api.catonetworks.com/api/v1/graphql2"
|
|
@@ -350,7 +350,9 @@ def createRequest(args, configuration):
|
|
|
350
350
|
print(f"Saved CSV report to: {output_path}")
|
|
351
351
|
|
|
352
352
|
# Return structured response similar to export functions
|
|
353
|
-
|
|
353
|
+
# Normalize path separators for better cross-platform display
|
|
354
|
+
display_path = output_path.replace(os.sep, '/')
|
|
355
|
+
return [{"success": True, "output_file": display_path, "operation": operation_name}]
|
|
354
356
|
elif csv_output is None:
|
|
355
357
|
# Formatter returned None, indicating we should fall back to raw response
|
|
356
358
|
print("INFO: No processable data found, returning raw API response")
|
|
@@ -1844,7 +1846,9 @@ def createPrivateRequest(args, configuration):
|
|
|
1844
1846
|
print(f"Saved CSV report to: {output_path}")
|
|
1845
1847
|
|
|
1846
1848
|
# Return structured response similar to export functions
|
|
1847
|
-
|
|
1849
|
+
# Normalize path separators for better cross-platform display
|
|
1850
|
+
display_path = output_path.replace(os.sep, '/')
|
|
1851
|
+
return [{"success": True, "output_file": display_path, "operation": csv_operation, "private_command": private_command}]
|
|
1848
1852
|
else:
|
|
1849
1853
|
print("WARNING: CSV formatter returned empty result")
|
|
1850
1854
|
return response
|
|
@@ -183,9 +183,11 @@ def write_json_export(
|
|
|
183
183
|
if verbose:
|
|
184
184
|
print(f"Successfully exported data to JSON: {filepath}")
|
|
185
185
|
|
|
186
|
+
# Normalize path separators for better cross-platform display
|
|
187
|
+
display_path = filepath.replace(os.sep, '/')
|
|
186
188
|
return {
|
|
187
189
|
'success': True,
|
|
188
|
-
'output_file':
|
|
190
|
+
'output_file': display_path,
|
|
189
191
|
'format': 'json',
|
|
190
192
|
'record_count': len(data) if isinstance(data, (list, dict)) else 1
|
|
191
193
|
}
|
|
@@ -232,9 +234,11 @@ def write_csv_export(
|
|
|
232
234
|
if verbose:
|
|
233
235
|
print(f"Successfully exported {len(data)} records to CSV: {filepath}")
|
|
234
236
|
|
|
237
|
+
# Normalize path separators for better cross-platform display
|
|
238
|
+
display_path = filepath.replace(os.sep, '/')
|
|
235
239
|
return {
|
|
236
240
|
'success': True,
|
|
237
|
-
'output_file':
|
|
241
|
+
'output_file': display_path,
|
|
238
242
|
'format': 'csv',
|
|
239
243
|
'record_count': len(data)
|
|
240
244
|
}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: catocli
|
|
3
|
+
Version: 3.0.24
|
|
4
|
+
Summary: Cato Networks cli wrapper for the GraphQL API.
|
|
5
|
+
Home-page: https://github.com/Cato-Networks/cato-cli
|
|
6
|
+
Author: Cato Networks
|
|
7
|
+
Author-email: [email protected]
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
10
|
+
Classifier: Operating System :: OS Independent
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.6
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.7
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Requires-Python: >=3.6
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
License-File: LICENSE
|
|
21
|
+
Requires-Dist: urllib3
|
|
22
|
+
Requires-Dist: certifi
|
|
23
|
+
Requires-Dist: six
|
|
24
|
+
Dynamic: author
|
|
25
|
+
Dynamic: author-email
|
|
26
|
+
Dynamic: classifier
|
|
27
|
+
Dynamic: description
|
|
28
|
+
Dynamic: description-content-type
|
|
29
|
+
Dynamic: home-page
|
|
30
|
+
Dynamic: license-file
|
|
31
|
+
Dynamic: requires-dist
|
|
32
|
+
Dynamic: requires-python
|
|
33
|
+
Dynamic: summary
|
|
34
|
+
|
|
35
|
+
# Cato Networks GraphQL API CLI
|
|
36
|
+
|
|
37
|
+
The package provides a simple to use CLI that reflects industry standards (such as the AWS cli), and enables customers to manage Cato Networks configurations and processes via the [Cato Networks GraphQL API](https://api.catonetworks.com/api/v1/graphql2) easily integrating into configurations management, orchestration or automation frameworks to support the DevOps model.
|
|
38
|
+
|
|
39
|
+
## Overview
|
|
40
|
+
|
|
41
|
+
CatoCLI is a command-line interface that provides access to the Cato Networks GraphQL API, enabling you to:
|
|
42
|
+
- Generate detailed network and security reports
|
|
43
|
+
- Analyze user and application activity
|
|
44
|
+
- Monitor network performance and events
|
|
45
|
+
- Export data in multiple formats (JSON, CSV)
|
|
46
|
+
- Automate reporting and monitoring tasks
|
|
47
|
+
|
|
48
|
+
## Prerequisites
|
|
49
|
+
|
|
50
|
+
- Python 3.6 or higher
|
|
51
|
+
- CatoCLI installed (`pip3 install catocli`)
|
|
52
|
+
- Valid Cato Networks API token and Account ID
|
|
53
|
+
- Proper authentication configuration (see [Authentication Setup](#authentication-setup))
|
|
54
|
+
|
|
55
|
+
## Installation
|
|
56
|
+
|
|
57
|
+
`pip3 install catocli`
|
|
58
|
+
|
|
59
|
+
## Authentication Setup
|
|
60
|
+
|
|
61
|
+
Configure your CatoCLI profile before using any query operations:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Interactive configuration
|
|
65
|
+
catocli configure set
|
|
66
|
+
|
|
67
|
+
# Non-interactive configuration
|
|
68
|
+
catocli configure set --cato-token "your-api-token" --account-id "12345"
|
|
69
|
+
|
|
70
|
+
# List configured profiles
|
|
71
|
+
catocli configure list
|
|
72
|
+
|
|
73
|
+
# Show current profile
|
|
74
|
+
catocli configure show
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Documentation
|
|
78
|
+
|
|
79
|
+
For detailed information about profile management, see [PROFILES.md](PROFILES.md).
|
|
80
|
+
|
|
81
|
+
[CLICK HERE](https://support.catonetworks.com/hc/en-us/articles/4413280536081-Generating-API-Keys-for-the-Cato-API) to see how create an API key to authenticate.
|
|
82
|
+
|
|
83
|
+
## Running the CLI
|
|
84
|
+
catocli -h
|
|
85
|
+
catocli query -h
|
|
86
|
+
catocli query entityLookup -h
|
|
87
|
+
catocli query entityLookup '{"type":"country"}`
|
|
88
|
+
|
|
89
|
+
// Override the accountID value as a cli argument
|
|
90
|
+
catocli query entityLookup -accountID=12345 '{"type":"country"}`
|
|
91
|
+
|
|
92
|
+
## Check out run locally not as pip package
|
|
93
|
+
git clone git@github.com:Cato-Networks/cato-cli.git
|
|
94
|
+
cd cato-cli
|
|
95
|
+
python3 -m catocli -h
|
|
96
|
+
|
|
97
|
+
## Query Operations
|
|
98
|
+
|
|
99
|
+
### Core Analytics Queries
|
|
100
|
+
|
|
101
|
+
| Operation | Description | Guide |
|
|
102
|
+
|-----------|-------------|--------|
|
|
103
|
+
| [Account Metrics](./catocli_user_guide/account-metrics.md) | Network performance metrics by site, user, or interface | 📊 |
|
|
104
|
+
| [Application Statistics](./catocli_user_guide/app-stats.md) | User activity and application usage analysis | 📱 |
|
|
105
|
+
| [Application Time Series](./catocli_user_guide/app-stats-timeseries.md) | Traffic analysis over time with hourly/daily breakdowns | 📈 |
|
|
106
|
+
| [Events Time Series](./catocli_user_guide/events-timeseries.md) | Security events, connectivity, and threat analysis | 🔒 |
|
|
107
|
+
| [Socket Port Metrics](./catocli_user_guide/socket-port-metrics.md) | Socket interface performance and traffic analysis | 🔌 |
|
|
108
|
+
| [Socket Port Time Series](./catocli_user_guide/socket-port-timeseries.md) | Socket performance metrics over time | ⏱️ |
|
|
109
|
+
|
|
110
|
+
### Advanced Topics
|
|
111
|
+
|
|
112
|
+
- [Common Patterns & Best Practices](./catocli_user_guide/common-patterns.md) - Output formats, time frames, filtering patterns
|
|
113
|
+
- [Python Integration - Windows](./catocli_user_guide/python-integration-windows.md) - Windows-specific Python automation examples
|
|
114
|
+
- [Python Integration - Unix/Linux/macOS](./catocli_user_guide/python-integration-unix.md) - Unix-based Python integration guide
|
|
115
|
+
- [SIEM Integration Guide](./catocli_user_guide/siem-integration.md) - Real-time security event streaming to SIEM platforms
|
|
116
|
+
|
|
117
|
+
## Quick Start Examples
|
|
118
|
+
|
|
119
|
+
### Basic Network Health Check
|
|
120
|
+
```bash
|
|
121
|
+
# Get last hour account metrics
|
|
122
|
+
catocli query accountMetrics '{"timeFrame":"last.PT1H"}'
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### User Activity Report (csv format)
|
|
126
|
+
```bash
|
|
127
|
+
# Export user activity for the last month to CSV
|
|
128
|
+
catocli query appStats '{
|
|
129
|
+
"dimension": [{"fieldName": "user_name"}],
|
|
130
|
+
"measure": [{"aggType": "sum", "fieldName": "flows_created"}],
|
|
131
|
+
"timeFrame": "last.P1M"
|
|
132
|
+
}' -f csv --csv-filename user_activity_report.csv
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Security Events Analysis
|
|
136
|
+
```bash
|
|
137
|
+
# Weekly security events breakdown
|
|
138
|
+
catocli query eventsTimeSeries '{
|
|
139
|
+
"buckets": 7,
|
|
140
|
+
"eventsFilter": [{"fieldName": "event_type", "operator": "is", "values": ["Security"]}],
|
|
141
|
+
"eventsMeasure": [{"aggType": "sum", "fieldName": "event_count"}],
|
|
142
|
+
"timeFrame": "last.P7D"
|
|
143
|
+
}'
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Output Formats
|
|
147
|
+
|
|
148
|
+
CatoCLI supports multiple output formats:
|
|
149
|
+
|
|
150
|
+
- **Enhanced JSON** (default): Formatted with granularity adjustments
|
|
151
|
+
- **Raw JSON**: Original API response with `-raw` flag
|
|
152
|
+
- **CSV**: Structured data export with `-f csv`
|
|
153
|
+
- **Custom CSV**: Named files with `--csv-filename` and `--append-timestamp`
|
|
154
|
+
|
|
155
|
+
## Time Frame Options
|
|
156
|
+
|
|
157
|
+
Common time frame patterns:
|
|
158
|
+
- `last.PT1H` - Last hour
|
|
159
|
+
- `last.P1D` - Last day
|
|
160
|
+
- `last.P7D` - Last week
|
|
161
|
+
- `last.P1M` - Last month
|
|
162
|
+
- `utc.2023-02-{28/00:00:00--28/23:59:59}` - Custom UTC range
|
|
163
|
+
|
|
164
|
+
## Getting Help
|
|
165
|
+
|
|
166
|
+
- Use `-h` or `--help` with any command for detailed usage
|
|
167
|
+
- Check the [Cato API Documentation](https://api.catonetworks.com/documentation/)
|
|
168
|
+
- Review individual operation guides linked above
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
This CLI is a Python 3 application and has been tested with Python 3.6 -> 3.8
|
|
172
|
+
|
|
173
|
+
## Requirements:
|
|
174
|
+
python 3.6 or higher
|
|
175
|
+
|
|
176
|
+
## Confirm your version of python if installed:
|
|
177
|
+
Open a terminal
|
|
178
|
+
Enter: python -V or python3 -V
|
|
179
|
+
|
|
180
|
+
## Installing the correct version for environment:
|
|
181
|
+
https://www.python.org/downloads/
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|