рдПрдкреАрдЖрдИрд╕рдБрдЧрдХреЛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдкреВрд░реНрдг рд╢рдХреНрддрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдбрд╕рдБрдЧ рд╕рдБрдЧреИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛, API рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдЧрддрд┐рд╢реАрд▓ рд░реВрдкрдорд╛ API рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд░ рдЙрдкрдХрд░рдгрд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рд╕рдореНрднрд╡ рд╣реБрдБрджрд╛ рдкреНрд░рдХрдЯ рд╣реБрдиреНрдЫред рдпрджреНрдпрдкрд┐, рдпреЛ рдЕрдЭреИ рдкрдирд┐ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЫ рдкрд╛рдЗрдерди рд╕рдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдХрд┐рдЯ (рдпрд╕рдкрдЫрд┐ рдкрд╛рдЗрдерди SDK рднрдирд┐рдиреНрдЫ) рдХреЛ рд▓рд╛рдЧрд┐ рдмрд┐рдиреНрджреБ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди API рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рддрд░ рд╡реНрдпрд░реНрдердорд╛ред рдпрд╕рд▓реЗ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ рд░ рд╕реНрд╡рдЪрд╛рд▓рди рдЙрддреНрд╕рд╛рд╣реАрд╣рд░реВрдХреЛ рдЬреАрд╡рдирд▓рд╛рдИ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╕рд░рд▓ рдмрдирд╛рдЙрдБрдЫред рдкрд╛рдЗрдердирд▓реЗ рднрд░реНрдЦрд░реИ рдзреЗрд░реИ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реЗрдХреЛ рдЫ рд░ рдореИрд▓реЗ рдЦрд╛рд▓реА рдард╛рдЙрдБ рднрд░реНрдиреЗ рд░ рдореБрдЦреНрдп рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд╕рдореАрдХреНрд╖рд╛ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВред
рдЪреЗрдХ рдкреЛрдЗрдиреНрдЯ рд╕рдХреНрд░рд┐рдп рд░реВрдкрдорд╛ рдПрдкреАрдЖрдИ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджреИрдЫ рд░ рдпрд╕ рд╕рдордпрдорд╛ рдирд┐рдореНрди рдЬрд╛рд░реА рдЧрд░рд┐рдПрдХреЛ рдЫ:
рдмрд┐рдиреНрджреБ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди API рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рд╣рд╛рд▓рдХреЛ рд╕рдВрд╕реНрдХрд░рдг 1.6) тАФ API рдорд╛рд░реНрдлрдд рдирд┐рдпрдиреНрддреНрд░рдг рд╕рд░реНрднрд░рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреБрд╣реЛрд╕реН (рд░ рдирд┐рдпрдиреНрддреНрд░рдг рд╕рд░реНрднрд░рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдиреНрддреНрд░рд┐рдд рдЧреЗрдЯрд╡реЗрд╣рд░реВрдорд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛)рдЪреЗрдХ рдкреЛрдЗрдиреНрдЯ GAIA API (рд╣рд╛рд▓рдХреЛ рд╕рдВрд╕реНрдХрд░рдг рез.рек) - рд╕реБрд░рдХреНрд╖рд╛ рдЧреЗрдЯрд╡реЗ рд╕рдВрдЧ рдХрд╛рдордЦрддрд░рд╛ рд░реЛрдХрдерд╛рдо API 1.0 тАФ рдЪреЗрдХ рдкреЛрдЗрдиреНрдЯ рдХреНрд▓рд╛рдЙрдбрдорд╛ рд╕реНрдпрд╛рдиреНрдбрдмрдХреНрд╕рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджреИрдкрд╣рд┐рдЪрд╛рди рдЬрд╛рдЧрд░реВрдХрддрд╛ API тАФ рдЧреЗрдЯрд╡реЗрд╣рд░реВрдорд╛ рдкрд╣рд┐рдЪрд╛рди рдЬрд╛рдЧрд░реВрдХрддрд╛ рдмреНрд▓реЗрдбрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджреИрд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреЛрд░реНрдЯрд▓ API - SMB рдЧреЗрдЯрд╡реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреЛрд░реНрдЯрд▓рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреБрд╣реЛрд╕реН (SMB рдЧреЗрдЯрд╡реЗ рдмрд╛рд░реЗ рдердк )IoT API - IoT рдирд┐рдпрдиреНрддреНрд░рдХрд╣рд░реБ рд╕рдВрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛CloudGuard Connect API - рд╕рдВрдЧ рдХрд╛рдо рдЧрд░реНрдиреБрд╣реЛрд╕реНCloudGuard рдЬрдбрд╛рди (SD-WAN рд╕реБрд░рдХреНрд╖рд╛ рд╕рдорд╛рдзрд╛рди)Dome9 API - рд╕рдВрдЧ рдХрд╛рдо рдЧрд░реНрдиреБрд╣реЛрд╕реНрдбреЛрдо рез
Python SDK рд▓реЗ рд╣рд╛рд▓ рдорд╛рддреНрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди API рд░ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ Gaia APIред рд╣рд╛рдореА рдпрд╕ рдореЛрдбреНрдпреБрд▓рдорд╛ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╡рд░реНрдЧрд╣рд░реВ, рд╡рд┐рдзрд┐рд╣рд░реВ рд░ рдЪрд░рд╣рд░реВ рд╣реЗрд░реНрдиреЗрдЫреМрдВред
рдореЛрдбреНрдпреБрд▓ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ
рдореЛрдбреНрдпреБрд▓ cpapi рдмрд╛рдЯ рдЫрд┐рдЯреЛ рд░ рд╕рдЬрд┐рд▓реИ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджрдЫ
рд╕реБрд░реБрд╡рд╛рдд
рд╣рд╛рдореАрд▓реЗ cpapi рдореЛрдбреНрдпреБрд▓рдХрд╛ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ рдореЛрдбреНрдпреБрд▓рдмрд╛рдЯ рдЖрдпрд╛рдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред cpapi рдХрдореНрддрд┐рдорд╛ рджреБрдИ рдЖрд╡рд╢реНрдпрдХ рдХрдХреНрд╖рд╛рд╣рд░реВ:
APIClient ╨╕ APIClientArgs
from cpapi import APIClient, APIClientArgs
╨Ъ╨╗╨░╤Б╤Б APIClientArgs API рд╕рд░реНрднрд░, рд░ рд╡рд░реНрдЧрдорд╛ рдЬрдбрд╛рди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫ APIClient API рд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫред
рдЬрдбрд╛рди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрджреИ
API рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рд╡рд┐рднрд┐рдиреНрди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ рдХрдХреНрд╖рд╛рдХреЛ рдЙрджрд╛рд╣рд░рдг рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ APIClientArgsред рд╕рд┐рджреНрдзрд╛рдиреНрддрдорд╛, рдпрд╕рдХреЛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЫрдиреН рд░ рдирд┐рдпрдиреНрддреНрд░рдг рд╕рд░реНрднрд░рдорд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдЙрдБрджрд╛, рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред
client_args = APIClientArgs()
рддрд░ рддреЗрд╕реНрд░реЛ-рдкрдХреНрд╖ рд╣реЛрд╕реНрдЯрдорд╛ рдЪрд▓реНрджрд╛, рддрдкрд╛рдИрдВрд▓реЗ рдХрдореНрддрд┐рдорд╛ IP рдареЗрдЧрд╛рдирд╛ рд╡рд╛ API рд╕рд░реНрднрд░рдХреЛ рд╣реЛрд╕реНрдЯ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ (рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рд░реНрднрд░ рдкрдирд┐ рднрдирд┐рдиреНрдЫ)ред рддрд▓рдХреЛ рдЙрджрд╛рд╣рд░рдгрдорд╛, рд╣рд╛рдореА рд╕рд░реНрднрд░ рдЬрдбрд╛рди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдЫреМрдВ рд░ рдпрд╕рд▓рд╛рдИ рд╕реНрдЯреНрд░рд┐рдЩрдХреЛ рд░реВрдкрдорд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рд░реНрднрд░рдХреЛ рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛ рддреЛрдХреНрдЫреМрдВред
client_args = APIClientArgs(server='192.168.47.241')
рд╕рдмреИ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рдирд╣рд░реВ рд╣реЗрд░реМрдВ рдЬреБрди API рд╕рд░реНрднрд░рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрджрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:
APIClientArgs рд╡рд░реНрдЧрдХреЛ __init__ рд╡рд┐рдзрд┐рдХрд╛ рддрд░реНрдХрд╣рд░реВ
class APIClientArgs:
"""
This class provides arguments for APIClient configuration.
All the arguments are configured with their default values.
"""
# port is set to None by default, but it gets replaced with 443 if not specified
# context possible values - web_api (default) or gaia_api
def __init__(self, port=None, fingerprint=None, sid=None, server="127.0.0.1", http_debug_level=0,
api_calls=None, debug_file="", proxy_host=None, proxy_port=8080,
api_version=None, unsafe=False, unsafe_auto_accept=False, context="web_api"):
self.port = port
# management server fingerprint
self.fingerprint = fingerprint
# session-id.
self.sid = sid
# management server name or IP-address
self.server = server
# debug level
self.http_debug_level = http_debug_level
# an array with all the api calls (for debug purposes)
self.api_calls = api_calls if api_calls else []
# name of debug file. If left empty, debug data will not be saved to disk.
self.debug_file = debug_file
# HTTP proxy server address (without "http://")
self.proxy_host = proxy_host
# HTTP proxy port
self.proxy_port = proxy_port
# Management server's API version
self.api_version = api_version
# Indicates that the client should not check the server's certificate
self.unsafe = unsafe
# Indicates that the client should automatically accept and save the server's certificate
self.unsafe_auto_accept = unsafe_auto_accept
# The context of using the client - defaults to web_api
self.context = context
рдорд▓рд╛рдИ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЫ рдХрд┐ APIClientArgs рд╡рд░реНрдЧрдХреЛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреЗ рддрд░реНрдХрд╣рд░реВ рдЪреЗрдХ рдкреЛрдЗрдиреНрдЯ рдкреНрд░рд╢рд╛рд╕рдХрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╣рдЬ рдЫрдиреН рд░ рдердк рдЯрд┐рдкреНрдкрдгреАрд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрдиред
APIClient рд░ рд╕рдиреНрджрд░реНрдн рдкреНрд░рдмрдиреНрдзрдХ рдорд╛рд░реНрдлрдд рдЬрдбрд╛рди рдЧрд░реНрджреИ
╨Ъ╨╗╨░╤Б╤Б APIClient рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╕рдмреИрднрдиреНрджрд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░рд┐рдХрд╛ рд╕рдиреНрджрд░реНрдн рдкреНрд░рдмрдиреНрдзрдХ рдорд╛рд░реНрдлрдд рд╣реЛред APIClient рд╡рд░реНрдЧрдХреЛ рдЙрджрд╛рд╣рд░рдгрдорд╛ рдкрд╛рд╕ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╕рдмреИ рдЬрдбрд╛рди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рд╣реБрдиреН рдЬреБрди рдЕрдШрд┐рд▓реНрд▓реЛ рдЪрд░рдгрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред
with APIClient(client_args) as client:
рд╕рдиреНрджрд░реНрдн рдкреНрд░рдмрдиреНрдзрдХрд▓реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ API рд╕рд░реНрднрд░рдорд╛ рд▓рдЧрдЗрди рдХрд▓ рдЧрд░реНрджреИрди, рддрд░ рдпрд╕рд▓реЗ рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрдБрджрд╛ рд▓рдЧрдЖрдЙрдЯ рдХрд▓ рдЧрд░реНрдиреЗрдЫред рдпрджрд┐ рдХреБрдиреИ рдХрд╛рд░рдгрд▓реЗ API рдХрд▓рд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐ рд▓рдЧрдЖрдЙрдЯ рдЖрд╡рд╢реНрдпрдХ рдЫреИрди рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рд╕рдиреНрджрд░реНрдн рдкреНрд░рдмрдиреНрдзрдХ рдкреНрд░рдпреЛрдЧ рдирдЧрд░реА рдХрд╛рдо рд╕реБрд░реБ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:
client = APIClient(clieng_args)
рдЬрдбрд╛рди рдкрд░реАрдХреНрд╖рдг
рдЬрдбрд╛рдирд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдкреВрд░рд╛ рдЧрд░реНрдЫ рдХрд┐ рднрдиреЗрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗ рд╕рдмреИрднрдиреНрджрд╛ рд╕рдЬрд┐рд▓реЛ рддрд░рд┐рдХрд╛ рд╡рд┐рдзрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИрдЫ рдЪреЗрдХ_рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдиреНрдЯред рдпрджрд┐ рд╕рд░реНрднрд░ API рдкреНрд░рдорд╛рдгрдкрддреНрд░рдХреЛ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдиреНрдЯрдХреЛ рд▓рд╛рдЧрд┐ sha1 рд╣реНрдпрд╛рд╕ рдпреЛрдЧрдХреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЕрд╕рдлрд▓ рднрдпреЛ (рд╡рд┐рдзрд┐ рдлрд┐рд░реНрддрд╛ рдЧрд░рд┐рдпреЛ рдЭреВрдЯрд╛), рддрдм рдпреЛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдЬрдбрд╛рди рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛ рд╣реБрдиреНрдЫ рд░ рд╣рд╛рдореА рдХрд╛рд░реНрдпрдХреНрд░рдордХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд░реЛрдХреНрди рд╕рдХреНрдЫреМрдВ (рд╡рд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓рд╛рдИ рдЬрдбрд╛рди рдбреЗрдЯрд╛ рд╕рдЪреНрдпрд╛рдЙрдиреЗ рдореМрдХрд╛ рджрд┐рдиреБрд╣реЛрд╕реН):
if client.check_fingerprint() is False:
print("Could not get the server's fingerprint - Check connectivity with the server.")
exit(1)
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рднрд╡рд┐рд╖реНрдпрдорд╛ рдХрдХреНрд╖рд╛ APIClient рдкреНрд░рддреНрдпреЗрдХ API рдХрд▓ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗрдЫ (рд╡рд┐рдзрд┐рд╣рд░реВ api_call ╨╕ api_query, рд╣рд╛рдореА рддрд┐рдиреАрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЕрд▓рд┐ рдЕрдЧрд╛рдбрд┐ рдХреБрд░рд╛ рдЧрд░реНрдиреЗрдЫреМрдВ) API рд╕рд░реНрднрд░рдорд╛ sha1 рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдиреНрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ред рддрд░ рдпрджрд┐, API рд╕рд░реНрднрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░рдХреЛ sha1 рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдиреНрдЯ рдЬрд╛рдБрдЪ рдЧрд░реНрджрд╛, рддреНрд░реБрдЯрд┐ рдкрддреНрддрд╛ рд▓рд╛рдЧреНрдпреЛ (рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЕрдЬреНрдЮрд╛рдд рдЫ рд╡рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рдПрдХреЛ рдЫ), рд╡рд┐рдзрд┐ рдЪреЗрдХ_рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдиреНрдЯ рд╕реНрдерд╛рдиреАрдп рдореЗрд╕рд┐рдирдорд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдпрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдердкреНрди/рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреЗ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдЧрд░реНрдиреЗрдЫред рдпреЛ рдЬрд╛рдБрдЪрд▓рд╛рдИ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЕрд╕рдХреНрд╖рдо рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ (рддрд░ рдпрджрд┐ 127.0.0.1 рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрджрд╛, API рд╕рд░реНрднрд░рдорд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВ рдЪрд▓рд╛рдЗрдПрдорд╛ рдорд╛рддреНрд░ рдпреЛ рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ), APIClientArgs рддрд░реНрдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ - unsafe_auto_accept (APIClientArgs рдХреЛ рдмрд╛рд░реЗрдорд╛ рдкрд╣рд┐рд▓реЗ "рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЬрдбрд╛рди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ" рдорд╛ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН)ред
client_args = APIClientArgs(unsafe_auto_accept=True)
API рд╕рд░реНрднрд░рдорд╛ рд▓рдЧрдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реН
╨г APIClient рдПрдкреАрдЖрдИ рд╕рд░реНрднрд░рдорд╛ рд▓рдЧ рдЗрди рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ 3 рднрдиреНрджрд╛ рдмрдвреА рддрд░рд┐рдХрд╛рд╣рд░реВ рдЫрдиреН, рд░ рддрд┐рдиреАрд╣рд░реВрдордзреНрдпреЗ рдкреНрд░рддреНрдпреЗрдХрд▓реЗ рдЕрд░реНрде рдмреБрдЭреНрджрдЫ Sid(рд╕рддреНрд░-рдЖрдИрдбреА), рдЬреБрди рд╣реЗрдбрд░рдорд╛ рдкреНрд░рддреНрдпреЗрдХ рдкрдЫрд┐рд▓реНрд▓рд╛ API рдХрд▓рдорд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ (рдпрд╕ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рдХреЛ рд╣реЗрдбрд░рдорд╛ рдирд╛рдо рд╣реЛред X-chkp-sid), рддреНрдпрд╕реИрд▓реЗ рдпреЛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдердк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред
рд▓рдЧрдЗрди рд╡рд┐рдзрд┐
рд▓рдЧрдЗрди рд░ рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╡рд┐рдХрд▓реНрдк (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдкреНрд░рд╢рд╛рд╕рдХ рд░ рдкрд╛рд╕рд╡рд░реНрдб 1q2w3e рдкреЛрдЬрд┐рд╢рдирд▓ рдЖрд░реНрдЧреБрдореЗрдиреНрдЯрдХреЛ рд░реВрдкрдорд╛ рдкрд╛рд░рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ):
login = client.login('admin', '1q2w3e')
рд▓рдЧрдЗрди рд╡рд┐рдзрд┐рдорд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдкрдирд┐ рдЙрдкрд▓рдмреНрдз рдЫрдиреН; рдпрд╣рд╛рдБ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдирд╛рдо рд░ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рдирд╣рд░реВ рдЫрдиреН:
continue_last_session=False, domain=None, read_only=False, payload=None
рд▓рдЧрдЗрди_with_api_key рд╡рд┐рдзрд┐
рдПрдкреАрдЖрдИ рдХреБрдЮреНрдЬреА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╡рд┐рдХрд▓реНрдк (рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рдВрд╕реНрдХрд░рдг R80.40/Management API v1.6 рдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реА рд╕рдорд░реНрдерд┐рдд, "3TsbPJ8ZKjaJGvFyoFqHFA==" рдпреЛ API рдХреБрдЮреНрдЬреА рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐рдХреЛ рд╕рд╛рде рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рд░реНрднрд░рдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рдордзреНрдпреЗ рдПрдХрдХреЛ рд▓рд╛рдЧрд┐ API рдХреБрдЮреНрдЬреА рдорд╛рди рд╣реЛ):
login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
рд╡рд┐рдзрд┐рдорд╛ рд▓рдЧрдЗрди_with_api_key рдЙрд╣реА рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рд╡рд┐рдзрд┐рдорд╛ рдЙрдкрд▓рдмреНрдз рдЫрдиреН рд▓рдЧ - рдЗрди.
login_as_root рд╡рд┐рдзрд┐
рдПрдкреАрдЖрдИ рд╕рд░реНрднрд░рдХреЛ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рдореЗрд╕рд┐рдирдорд╛ рд▓рдЧрдЗрди рдЧрд░реНрдиреЗ рд╡рд┐рдХрд▓реНрдк:
login = client.login_as_root()
рдпрд╕ рд╡рд┐рдзрд┐рдХреЛ рд▓рд╛рдЧрд┐ рдХреЗрд╡рд▓ рджреБрдИ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдЙрдкрд▓рдмреНрдз рдЫрдиреН:
domain=None, payload=None
рд░ рдЕрдиреНрддрдорд╛ API рд▓реЗ рдЖрдлреИрд▓рд╛рдИ рдХрд▓ рдЧрд░реНрджрдЫ
рд╡рд┐рдзрд┐рд╣рд░реВ рдорд╛рд░реНрдлрдд API рдХрд▓рд╣рд░реВ рдЧрд░реНрди рд╣рд╛рдореАрд╕рдБрдЧ рджреБрдИ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдЫрдиреН api_call ╨╕ api_queryред рддрд┐рдиреАрд╣рд░реВ рдмреАрдЪрдХреЛ рднрд┐рдиреНрдирддрд╛ рдХреЗ рд╣реЛ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреБрд╣реЛрд╕реНред
api_call
рдпреЛ рд╡рд┐рдзрд┐ рдХреБрдиреИ рдкрдирд┐ рдХрд▓рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫред рд╣рд╛рдореАрд▓реЗ рдПрдкреАрдЖрдИ рдХрд▓рдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреНрддрд┐рдо рднрд╛рдЧ рдкрд╛рд╕ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рд░ рдЖрд╡рд╢реНрдпрдХ рднрдПрдорд╛ рдЕрдиреБрд░реЛрдз рдореБрдЦреНрдп рднрд╛рдЧрдорд╛ рдкреЗрд▓реЛрдбред рдпрджрд┐ рдкреЗрд▓реЛрдб рдЦрд╛рд▓реА рдЫ рднрдиреЗ, рдпреЛ рд╕рдмреИ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрди:
api_versions = client.api_call('show-api-versions')
рдХрдЯ рддрд▓рдХреЛ рдпреЛ рдЕрдиреБрд░реЛрдзрдХреЛ рд▓рд╛рдЧрд┐ рдЖрдЙрдЯрдкреБрдЯ:
In [23]: api_versions
Out[23]:
APIResponse({
"data": {
"current-version": "1.6",
"supported-versions": [
"1",
"1.1",
"1.2",
"1.3",
"1.4",
"1.5",
"1.6"
]
},
"res_obj": {
"data": {
"current-version": "1.6",
"supported-versions": [
"1",
"1.1",
"1.2",
"1.3",
"1.4",
"1.5",
"1.6"
]
},
"status_code": 200
},
"status_code": 200,
"success": true
})
show_host = client.api_call('show-host', {'name' : 'h_8.8.8.8'})
рдХрдЯ рддрд▓рдХреЛ рдпреЛ рдЕрдиреБрд░реЛрдзрдХреЛ рд▓рд╛рдЧрд┐ рдЖрдЙрдЯрдкреБрдЯ:
In [25]: show_host
Out[25]:
APIResponse({
"data": {
"color": "black",
"comments": "",
"domain": {
"domain-type": "domain",
"name": "SMC User",
"uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
},
"groups": [],
"icon": "Objects/host",
"interfaces": [],
"ipv4-address": "8.8.8.8",
"meta-info": {
"creation-time": {
"iso-8601": "2020-05-01T21:49+0300",
"posix": 1588358973517
},
"creator": "admin",
"last-modifier": "admin",
"last-modify-time": {
"iso-8601": "2020-05-01T21:49+0300",
"posix": 1588358973517
},
"lock": "unlocked",
"validation-state": "ok"
},
"name": "h_8.8.8.8",
"nat-settings": {
"auto-rule": false
},
"read-only": false,
"tags": [],
"type": "host",
"uid": "c210af07-1939-49d3-a351-953a9c471d9e"
},
"res_obj": {
"data": {
"color": "black",
"comments": "",
"domain": {
"domain-type": "domain",
"name": "SMC User",
"uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
},
"groups": [],
"icon": "Objects/host",
"interfaces": [],
"ipv4-address": "8.8.8.8",
"meta-info": {
"creation-time": {
"iso-8601": "2020-05-01T21:49+0300",
"posix": 1588358973517
},
"creator": "admin",
"last-modifier": "admin",
"last-modify-time": {
"iso-8601": "2020-05-01T21:49+0300",
"posix": 1588358973517
},
"lock": "unlocked",
"validation-state": "ok"
},
"name": "h_8.8.8.8",
"nat-settings": {
"auto-rule": false
},
"read-only": false,
"tags": [],
"type": "host",
"uid": "c210af07-1939-49d3-a351-953a9c471d9e"
},
"status_code": 200
},
"status_code": 200,
"success": true
})
api_query
рдорд▓рд╛рдИ рддреБрд░реБрдиреНрддреИ рдЖрд░рдХреНрд╖рдг рдЧрд░реНрди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдпреЛ рд╡рд┐рдзрд┐ рдХрд▓рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫ рдЬрд╕рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдЕрдлрд╕реЗрдЯ рд╕рдорд╛рд╡реЗрд╢ рдЫред рдпрд╕реНрддреЛ рдирд┐рд╖реНрдХрд░реНрд╖ рддрдм рд╣реБрдиреНрдЫ рдЬрдм рдпрд╕рд▓реЗ рдзреЗрд░реИ рдорд╛рддреНрд░рд╛рдорд╛ рдЬрд╛рдирдХрд╛рд░реА рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ рд╡рд╛ рд╣реБрди рд╕рдХреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рд░реНрднрд░рдорд╛ рд╕рдмреИ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХрд╛ рд╣реЛрд╕реНрдЯ рд╡рд╕реНрддреБрд╣рд░реВрдХреЛ рд╕реВрдЪреАрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрд░реЛрдз рд╣реБрди рд╕рдХреНрдЫред рддреНрдпрд╕реНрддрд╛ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐, API рд▓реЗ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ 50 рд╡рд╕реНрддреБрд╣рд░реВрдХреЛ рд╕реВрдЪреА рдлрд░реНрдХрд╛рдЙрдБрдЫ (рддрдкрд╛рдИрд▓реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдорд╛ 500 рд╡рд╕реНрддреБрд╣рд░реВрдорд╛ рд╕реАрдорд╛ рдмрдврд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ)ред рд░ рдПрдкреАрдЖрдИ рдЕрдиреБрд░реЛрдзрдорд╛ рдЕрдлрд╕реЗрдЯ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реЗрд░ рдзреЗрд░реИ рдкрдЯрдХ рдЬрд╛рдирдХрд╛рд░реА рддрд╛рдиреНрди рдирдкрд░реЛрд╕реН, рддреНрдпрд╣рд╛рдБ рдПрдХ api_query рд╡рд┐рдзрд┐ рдЫ рдЬрд╕рд▓реЗ рдпреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫред рдХрд▓рд╣рд░реВрдХреЛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдЬрд╣рд╛рдБ рдпреЛ рд╡рд┐рдзрд┐ рдЖрд╡рд╢реНрдпрдХ рдЫ: рд╢реЛ-рд╕рддреНрд░рд╣рд░реВ, рд╢реЛ-рд╣реЛрд╕реНрдЯрд╣рд░реВ, рд╢реЛ-рдиреЗрдЯрд╡рд░реНрдХрд╣рд░реВ, рд╢реЛ-рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдбрд╣рд░реВ, рд╢реЛ-рд╕рдореВрд╣рд╣рд░реВ, рд╢реЛ-рдареЗрдЧрд╛рдирд╛-рджрд╛рдпрд░рд╛рд╣рд░реВ, рджреЗрдЦрд╛рдЙрдиреБрд╣реЛрд╕реН-рд╕рд░рд▓-рдЧреЗрдЯрд╡реЗрд╣рд░реВ, рджреЗрдЦрд╛рдЙрдиреБрд╣реЛрд╕реН-рд╕рд░рд▓-рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВ, рд╢реЛ-рдкрд╣реБрдБрдЪ-рднреВрдорд┐рдХрд╛рд╣рд░реВ, рд╢реЛ-рд╡рд┐рд╢реНрд╡рд╕реНрдд-рдЧреНрд░рд╛рд╣рдХрд╣рд░реВ, рджреЗрдЦрд╛рдЙрдиреЗ рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВред рд╡рд╛рд╕реНрддрд╡рдорд╛, рд╣рд╛рдореА рдпреА API рдХрд▓рд╣рд░реВрдХреЛ рдирд╛рдордорд╛ рдмрд╣реБрд╡рдЪрди рд╢рдмреНрджрд╣рд░реВ рджреЗрдЦреНрдЫреМрдВ, рддреНрдпрд╕реИрд▓реЗ рдпреА рдХрд▓рд╣рд░реВ рдорд╛рд░реНрдлрдд рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рд╣реБрдиреЗрдЫред api_query
show_hosts = client.api_query('show-hosts')
рдХрдЯ рддрд▓рдХреЛ рдпреЛ рдЕрдиреБрд░реЛрдзрдХреЛ рд▓рд╛рдЧрд┐ рдЖрдЙрдЯрдкреБрдЯ:
In [21]: show_hosts
Out[21]:
APIResponse({
"data": [
{
"domain": {
"domain-type": "domain",
"name": "SMC User",
"uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
},
"ipv4-address": "192.168.47.1",
"name": "h_192.168.47.1",
"type": "host",
"uid": "5d7d7086-d70b-4995-971a-0583b15a2bfc"
},
{
"domain": {
"domain-type": "domain",
"name": "SMC User",
"uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
},
"ipv4-address": "8.8.8.8",
"name": "h_8.8.8.8",
"type": "host",
"uid": "c210af07-1939-49d3-a351-953a9c471d9e"
}
],
"res_obj": {
"data": {
"from": 1,
"objects": [
{
"domain": {
"domain-type": "domain",
"name": "SMC User",
"uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
},
"ipv4-address": "192.168.47.1",
"name": "h_192.168.47.1",
"type": "host",
"uid": "5d7d7086-d70b-4995-971a-0583b15a2bfc"
},
{
"domain": {
"domain-type": "domain",
"name": "SMC User",
"uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
},
"ipv4-address": "8.8.8.8",
"name": "h_8.8.8.8",
"type": "host",
"uid": "c210af07-1939-49d3-a351-953a9c471d9e"
}
],
"to": 2,
"total": 2
},
"status_code": 200
},
"status_code": 200,
"success": true
})
API рдХрд▓рд╣рд░реВрдХреЛ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрджреИ
рдпрд╕ рдкрдЫрд┐ рддрдкрд╛рдИрд▓реЗ рдХрдХреНрд╖рд╛рдХреЛ рдЪрд░ рд░ рд╡рд┐рдзрд┐рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ API рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛(рджреБрдмреИ рд╕рдиреНрджрд░реНрдн рдкреНрд░рдмрдиреНрдзрдХ рднрд┐рддреНрд░ рд░ рдмрд╛рд╣рд┐рд░)ред рдХрдХреНрд╖рд╛рдорд╛ API рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 4 рд╡рд┐рдзрд┐рд╣рд░реВ рд░ 5 рдЪрд░рд╣рд░реВ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЫрдиреН; рд╣рд╛рдореА рдердк рд╡рд┐рд╡рд░рдгрдорд╛ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдгрд╣рд░реВрдорд╛ рдмрд╕реНрдиреЗрдЫреМрдВред
рд╕рдлрд▓рддрд╛
рд╕реБрд░реБрдорд╛, рдПрдкреАрдЖрдИ рдХрд▓ рд╕рдлрд▓ рднрдПрдХреЛ рд░ рдирддрд┐рдЬрд╛ рдлрд░реНрдХрд╛рдЗрдпреЛ рднрдиреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБ рд░рд╛рдореНрд░реЛ рд╡рд┐рдЪрд╛рд░ рд╣реБрдиреЗрдЫред рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рд╡рд┐рдзрд┐ рдЫ рд╕рдлрд▓рддрд╛:
In [49]: api_versions.success
Out[49]: True
API рдХрд▓ рд╕рдлрд▓ рднрдПрдорд╛ True рдлрд░реНрдХрд╛рдЙрдБрдЫ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб - 200) рд░ рдЕрд╕рдлрд▓ рднрдПрдорд╛ False (рдХреБрдиреИ рдЕрдиреНрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб)ред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдбрдХреЛ рдЖрдзрд╛рд░рдорд╛ рдлрд░рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди API рдХрд▓ рдкрдЫрд┐ рддреБрд░реБрдиреНрддреИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдпреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫред
if api_ver.success:
print(api_versions.data)
else:
print(api_versions.err_message)
рд╕реНрдерд┐рддрд┐рдХреЛрдб
API рдХрд▓ рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб рдлрд░реНрдХрд╛рдЙрдБрдЫред
In [62]: api_versions.status_code
Out[62]: 400
рд╕рдореНрднрд╛рд╡рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдбрд╣рд░реВ: 200,400,401,403,404,409,500,501.
set_success_status
рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдпреЛ рд╕рдлрд▓рддрд╛ рд╕реНрдерд┐рддрд┐ рдХреЛ рдореВрд▓реНрдп рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╣реБрди рд╕рдХреНрдЫред рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рд░реВрдкрдорд╛, рддрдкрд╛рдЗрдБ рддреНрдпрд╣рд╛рдБ рдХреЗрд╣рд┐ рдкрдирд┐ рд░рд╛рдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдирд┐рдпрдорд┐рдд рд╕реНрдЯреНрд░рд┐рдЩ рдкрдирд┐ред рддрд░ рдПрдЙрдЯрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдгрд▓реЗ рдпреЛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд▓рд╛рдИ рдХреЗрд╣реА рдирд┐рд╢реНрдЪрд┐рдд рд╕рд░реНрддрд╣рд░реВрдорд╛ False рдорд╛ рд░рд┐рд╕реЗрдЯ рдЧрд░реНрджреИрдЫред рддрд▓, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рд░реНрднрд░рдорд╛ рдХрд╛рд░реНрдпрд╣рд░реВ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдмреЗрд▓рд╛ рдЙрджрд╛рд╣рд░рдгрдорд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН, рддрд░ рд╣рд╛рдореА рдпреЛ рдЕрдиреБрд░реЛрдзрд▓рд╛рдИ рдЕрд╕рдлрд▓ рдорд╛рдиреНрдиреЗрдЫреМрдВ (рд╣рд╛рдореА рд╕рдлрд▓рддрд╛ рдЪрд░ рд╕реЗрдЯ рдЧрд░реНрдиреЗрдЫреМрдВред рдЭреВрдЯрд╛, API рдХрд▓ рд╕рдлрд▓ рднрдПрдХреЛ рд░ рдХреЛрдб 200 рдлрд░реНрдХрд╛рдЗрдпреЛ рднрдиреНрдиреЗ рддрдереНрдпрдХреЛ рдмрд╛рд╡рдЬреБрджред
for task in task_result.data["tasks"]:
if task["status"] == "failed" or task["status"] == "partially succeeded":
task_result.set_success_status(False)
break
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛()
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд┐рдзрд┐рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб (status_code) рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢рд░реАрд░ (рд╢рд░реАрд░) рдХреЛ рд╕рд╛рде рд╢рдмреНрджрдХреЛрд╢ рд╣реЗрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
In [94]: api_versions.response()
Out[94]:
{'status_code': 200,
'data': {'current-version': '1.6',
'supported-versions': ['1', '1.1', '1.2', '1.3', '1.4', '1.5', '1.6']}}
рдбрд╛рдЯрд╛
рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдмрд┐рдирд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдХреЛ рдореБрдЦреНрдп рднрд╛рдЧ (рд╢рд░реАрд░) рд╣реЗрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
In [93]: api_versions.data
Out[93]:
{'current-version': '1.6',
'supported-versions': ['1', '1.1', '1.2', '1.3', '1.4', '1.5', '1.6']}
рддреНрд░реБрдЯрд┐ рд╕рдиреНрджреЗрд╢
рдПрдкреАрдЖрдИ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрджрд╛ рддреНрд░реБрдЯрд┐ рджреЗрдЦрд╛ рдкрд░реНрджрд╛ рдорд╛рддреНрд░ рдпреЛ рдЬрд╛рдирдХрд╛рд░реА рдЙрдкрд▓рдмреНрдз рд╣реБрдиреНрдЫ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб рдЫреИрди 200)ред рдЙрджрд╛рд╣рд░рдг рдЖрдЙрдЯрдкреБрдЯ
In [107]: api_versions.error_message
Out[107]: 'code: generic_err_invalid_parameter_namenmessage: Unrecognized parameter [1]n'
рдЙрдкрдпреЛрдЧреА рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ
рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди API 1.6 рдорд╛ рдердкрд┐рдПрдХрд╛ API рдХрд▓рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдирд┐рдореНрди рдЫрдиреНред
рдкрд╣рд┐рд▓реЗ, рдХрд▓рд╣рд░реВ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреА рд╣реЗрд░реМрдВ add-host ╨╕ рдердк-рдареЗрдЧрд╛рдирд╛-рджрд╛рдпрд░рд╛ред рдорд╛рдиреМрдВ рд╣рд╛рдореАрд▓реЗ рд╕рдмрдиреЗрдЯ 192.168.0.0/24 рдХреЛ рд╕рдмреИ IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЬрд╕рдХреЛ рдЕрдиреНрддрд┐рдо рдЕрдХреНрдЯреЗрдЯ 5 рд╣реЛ, рд╣реЛрд╕реНрдЯ рдкреНрд░рдХрд╛рд░рдХреЛ рд╡рд╕реНрддреБрдХреЛ рд░реВрдкрдорд╛, рд░ рдЕрдиреНрдп рд╕рдмреИ IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдареЗрдЧрд╛рдирд╛ рджрд╛рдпрд░рд╛ рдкреНрд░рдХрд╛рд░рдХреЛ рд╡рд╕реНрддреБрдХреЛ рд░реВрдкрдорд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реНред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╕рдмрдиреЗрдЯ рдареЗрдЧрд╛рдирд╛ рд░ рдкреНрд░рд╕рд╛рд░рдг рдареЗрдЧрд╛рдирд╛ рдмрд╣рд┐рд╖реНрдХрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рддреНрдпрд╕реЛрднрдП, рддрд▓ рдПрдЙрдЯрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЫ рдЬрд╕рд▓реЗ рдпреЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджрдЫ рд░ рд╣реЛрд╕реНрдЯ рдкреНрд░рдХрд╛рд░рдХреЛ 50 рд╡рд╕реНрддреБрд╣рд░реВ рд░ рдареЗрдЧрд╛рдирд╛ рджрд╛рдпрд░рд╛ рдкреНрд░рдХрд╛рд░рдХреЛ 51 рд╡рд╕реНрддреБрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫред рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди, 101 API рдХрд▓рд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рдЫрдиреН (рдЕрдиреНрддрд┐рдо рдкреНрд░рдХрд╛рд╢рди рдХрд▓ рдЧрдгрдирд╛ рдирдЧрд░реА)ред рд╕рд╛рдереИ, timeit рдореЛрдбреНрдпреБрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рд╣рд╛рдореА рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдирднрдПрд╕рдореНрдо рд▓рд┐рдкрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рд▓рд╛рдЧреНрдиреЗ рд╕рдордп рдЧрдгрдирд╛ рдЧрд░реНрдЫреМрдВред
add-host рд░ add-address-range рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд▓рд┐рдкрд┐
import timeit
from cpapi import APIClient, APIClientArgs
start = timeit.default_timer()
first_ip = 1
last_ip = 4
client_args = APIClientArgs(server="192.168.47.240")
with APIClient(client_args) as client:
login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
for ip in range(5,255,5):
add_host = client.api_call("add-host", {"name" : f"h_192.168.0.{ip}", "ip-address": f'192.168.0.{ip}'})
while last_ip < 255:
add_range = client.api_call("add-address-range", {"name": f"r_192.168.0.{first_ip}-{last_ip}", "ip-address-first": f"192.168.0.{first_ip}", "ip-address-last": f"192.168.0.{last_ip}"})
first_ip+=5
last_ip+=5
stop = timeit.default_timer()
publish = client.api_call("publish")
print(f'Time to execute batch request: {stop - start} seconds')
рдореЗрд░реЛ рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛, рдпреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд▓реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рд░реНрднрд░рдорд╛ рд▓реЛрдбрдХреЛ рдЖрдзрд╛рд░рдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди 30 рд░ 50 рд╕реЗрдХреЗрдиреНрдбрдХреЛ рдмреАрдЪрдорд╛ рд▓рд┐рдиреНрдЫред
рдЕрдм рдПрдкреАрдЖрдИ рдХрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдХрд╕рд░реА рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреЗ рд╣реЗрд░реМрдВ add-objects-batch, рд╕рдорд░реНрдерди рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ API рд╕рдВрд╕реНрдХрд░рдг 1.6 рдорд╛ рдердкрд┐рдПрдХреЛ рдерд┐рдпреЛред рдпреЛ рдХрд▓рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдПрдЙрдЯреИ рдПрдкреАрдЖрдИ рдЕрдиреБрд░реЛрдзрдорд╛ рдзреЗрд░реИ рд╡рд╕реНрддреБрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдпрд╕рдмрд╛рд╣реЗрдХ, рдпреА рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░рдХрд╛ рд╡рд╕реНрддреБрд╣рд░реВ рд╣реБрди рд╕рдХреНрдЫрдиреН (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╣реЛрд╕реНрдЯрд╣рд░реВ, рд╕рдмрдиреЗрдЯрд╣рд░реВ рд░ рдареЗрдЧрд╛рдирд╛ рджрд╛рдпрд░рд╛рд╣рд░реВ)ред рдпрд╕реИрд▓реЗ, рд╣рд╛рдореНрд░реЛ рдХрд╛рд░реНрдп рдПрдХ API рдХрд▓ рдХреЛ рд░реВрдкрд░реЗрдЦрд╛ рднрд┐рддреНрд░ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред
add-objects-batch рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд▓рд┐рдкрд┐
import timeit
from cpapi import APIClient, APIClientArgs
start = timeit.default_timer()
client_args = APIClientArgs(server="192.168.47.240")
objects_list_ip = []
objects_list_range = []
for ip in range(5,255,5):
data = {"name": f'h_192.168.0.{ip}', "ip-address": f'192.168.0.{ip}'}
objects_list_ip.append(data)
first_ip = 1
last_ip = 4
while last_ip < 255:
data = {"name": f"r_192.168.0.{first_ip}-{last_ip}", "ip-address-first": f"192.168.0.{first_ip}", "ip-address-last": f"192.168.0.{last_ip}"}
objects_list_range.append(data)
first_ip+=5
last_ip+=5
data_for_batch = {
"objects" : [ {
"type" : "host",
"list" : objects_list_ip
}, {
"type" : "address-range",
"list" : objects_list_range
}]
}
with APIClient(client_args) as client:
login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
add_objects_batch = client.api_call("add-objects-batch", data_for_batch)
stop = timeit.default_timer()
publish = client.api_call("publish")
print(f'Time to execute batch request: {stop - start} seconds')
рд░ рдореЗрд░реЛ рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдпреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдЙрди 3 рджреЗрдЦрд┐ 7 рд╕реЗрдХреЗрдиреНрдб рд▓рд╛рдЧреНрдЫ, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рд░реНрднрд░рдорд╛ рд▓реЛрдбрдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫред рдЕрд░реНрдерд╛рддреН, рдФрд╕рддрдорд╛, резрежрез API рд╡рд╕реНрддреБрд╣рд░реВрдорд╛, рдмреНрдпрд╛рдЪ рдкреНрд░рдХрд╛рд░рдХреЛ рдХрд▓ резреж рдЧреБрдгрд╛ рдЫрд┐рдЯреЛ рдЪрд▓реНрдЫред рд╡рд╕реНрддреБрд╣рд░реВрдХреЛ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рднрд┐рдиреНрдирддрд╛ рдЕрдЭ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реБрдиреЗрдЫред
рдЕрдм рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╣реЗрд░реМрдВ рд╕реЗрдЯ-рд╡рд╕реНрддреБрд╣рд░реВ-рдмреИрдЪред рдпреЛ API рдХрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рд╣рд╛рдореА рдХреБрдиреИ рдкрдирд┐ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдмрд▓реНрдХ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рдЕрдШрд┐рд▓реНрд▓реЛ рдЙрджрд╛рд╣рд░рдгрдмрд╛рдЯ рдареЗрдЧрд╛рдирд╛рд╣рд░реВрдХреЛ рдкрд╣рд┐рд▓реЛ рдЖрдзрд╛ рд╕реЗрдЯ рдЧрд░реМрдВ (124 рд╣реЛрд╕реНрдЯрд╣рд░реВ, рд░ рджрд╛рдпрд░рд╛рд╣рд░реВ рдкрдирд┐) рд░рдЩ рд╕рд┐рдПрдирд╛рдорд╛, рд░ рд░рдЩ рдЦрд╛рдХреАрд▓рд╛рдИ рдареЗрдЧрд╛рдирд╛рд╣рд░реВрдХреЛ рджреЛрд╕реНрд░реЛ рднрд╛рдЧрдорд╛ рдЕрд╕рд╛рдЗрди рдЧрд░реМрдВред
рдЕрдШрд┐рд▓реНрд▓реЛ рдЙрджрд╛рд╣рд░рдгрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХрд╛ рд╡рд╕реНрддреБрд╣рд░реВрдХреЛ рд░рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджреИ
from cpapi import APIClient, APIClientArgs
client_args = APIClientArgs(server="192.168.47.240")
objects_list_ip_first = []
objects_list_range_first = []
objects_list_ip_second = []
objects_list_range_second = []
for ip in range(5,125,5):
data = {"name": f'h_192.168.0.{ip}', "color": "sienna"}
objects_list_ip_first.append(data)
for ip in range(125,255,5):
data = {"name": f'h_192.168.0.{ip}', "color": "khaki"}
objects_list_ip_second.append(data)
first_ip = 1
last_ip = 4
while last_ip < 125:
data = {"name": f"r_192.168.0.{first_ip}-{last_ip}", "color": "sienna"}
objects_list_range_first.append(data)
first_ip+=5
last_ip+=5
while last_ip < 255:
data = {"name": f"r_192.168.0.{first_ip}-{last_ip}", "color": "khaki"}
objects_list_range_second.append(data)
first_ip+=5
last_ip+=5
data_for_batch_first = {
"objects" : [ {
"type" : "host",
"list" : objects_list_ip_first
}, {
"type" : "address-range",
"list" : objects_list_range_first
}]
}
data_for_batch_second = {
"objects" : [ {
"type" : "host",
"list" : objects_list_ip_second
}, {
"type" : "address-range",
"list" : objects_list_range_second
}]
}
with APIClient(client_args) as client:
login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
set_objects_batch_first = client.api_call("set-objects-batch", data_for_batch_first)
set_objects_batch_second = client.api_call("set-objects-batch", data_for_batch_second)
publish = client.api_call("publish")
рддрдкрд╛рдИрдВ рдПрдХ API рдХрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдзреЗрд░реИ рд╡рд╕реНрддреБрд╣рд░реВ рдореЗрдЯрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдореЗрдЯрд╛рдЙрдиреЗ-рд╡рд╕реНрддреБрд╣рд░реВ-рдмреИрдЪред рдЕрдм рдПрдХ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рд╣реЗрд░реМрдВ рдЬрд╕рд▓реЗ рдкрд╣рд┐рд▓реЗ рдорд╛рд░реНрдлрдд рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХрд╛ рд╕рдмреИ рд╣реЛрд╕реНрдЯрд╣рд░реВ рдореЗрдЯрд╛рдЙрдБрдЫ add-objects-batch.
Delete-objects-batch рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╡рд╕реНрддреБрд╣рд░реВ рдореЗрдЯрд╛рдЙрдБрджреИ
from cpapi import APIClient, APIClientArgs
client_args = APIClientArgs(server="192.168.47.240")
objects_list_ip = []
objects_list_range = []
for ip in range(5,255,5):
data = {"name": f'h_192.168.0.{ip}'}
objects_list_ip.append(data)
first_ip = 1
last_ip = 4
while last_ip < 255:
data = {"name": f"r_192.168.0.{first_ip}-{last_ip}"}
objects_list_range.append(data)
first_ip+=5
last_ip+=5
data_for_batch = {
"objects" : [ {
"type" : "host",
"list" : objects_list_ip
}, {
"type" : "address-range",
"list" : objects_list_range
}]
}
with APIClient(client_args) as client:
login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
delete_objects_batch = client.api_call("delete-objects-batch", data_for_batch)
publish = client.api_call("publish")
print(delete_objects_batch.data)
рдЪреЗрдХ рдкреНрд╡рд╛рдЗрдиреНрдЯ рд╕рдлреНрдЯрд╡реЗрдпрд░рдХреЛ рдирдпрд╛рдБ рд░рд┐рд▓реАрдЬрд╣рд░реВрдорд╛ рджреЗрдЦрд╛ рдкрд░реНрдиреЗ рд╕рдмреИ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрд▓реЗ рддреБрд░реБрдиреНрддреИ API рдХрд▓рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫред рдпрд╕рд░реА, R80.40 рдорд╛ рд░рд┐рднрд░реНрдЯ рдЯреБ рд░рд┐рднрд┐рдЬрди рд░ рд╕реНрдорд╛рд░реНрдЯ рдЯрд╛рд╕реНрдХ рдЬрд╕реНрддрд╛ "рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ" рджреЗрдЦрд╛ рдкрд░реНрдпреЛ, рд░ рд╕рдореНрдмрдиреНрдзрд┐рдд API рдХрд▓рд╣рд░реВ рддреБрд░реБрдиреНрддреИ рддрд┐рдиреАрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рддрдпрд╛рд░ рднрдПред рдпрд╕рдмрд╛рд╣реЗрдХ, рд▓рд┐рдЧреЗрд╕реА рдХрдиреНрд╕реЛрд▓рдмрд╛рдЯ рдПрдХреАрдХреГрдд рдиреАрддрд┐ рдореЛрдбрдорд╛ рд╕рд░реНрджрд╛ рд╕рдмреИ рдкреНрд░рдХрд╛рд░реНрдпрддрд╛рд▓реЗ рдкрдирд┐ API рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╕рдлреНрдЯрд╡реЗрдпрд░ рд╕рдВрд╕реНрдХрд░рдг R80.40 рдорд╛ рд▓рд╛рдореЛ-рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдЕрдкрдбреЗрдЯ рд▓реЗрдЧреЗрд╕реА рдореЛрдбрдмрд╛рдЯ рдПрдХреАрдХреГрдд рдиреАрддрд┐ рдореЛрдбрдорд╛ HTTPS рдирд┐рд░реАрдХреНрд╖рдг рдиреАрддрд┐рдХреЛ рд╕рд╛рд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рд░ рдпреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рд▓реЗ рддреБрд░реБрдиреНрддреИ API рдХрд▓рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдпреЛред рдпрд╣рд╛рдБ рдХреЛрдбрдХреЛ рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рдЫ рдЬрд╕рд▓реЗ HTTPS рдирд┐рд░реАрдХреНрд╖рдг рдиреАрддрд┐рдХреЛ рд╢реАрд░реНрд╖ рд╕реНрдерд╛рдирдорд╛ рдирд┐рдпрдо рдердкреНрдЫ рдЬрд╕рд▓реЗ рдирд┐рд░реАрдХреНрд╖рдгрдмрд╛рдЯ 3 рдХреЛрдЯрд┐рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ (рд╕реНрд╡рд╛рд╕реНрдереНрдп, рд╡рд┐рддреНрдд, рд╕рд░рдХрд╛рд░реА рд╕реЗрд╡рд╛рд╣рд░реВ), рдЬреБрди рдзреЗрд░реИ рджреЗрд╢рд╣рд░реВрдорд╛ рдХрд╛рдиреВрди рдЕрдиреБрд╕рд╛рд░ рдирд┐рд░реАрдХреНрд╖рдг рдЧрд░реНрди рдирд┐рд╖реЗрдз рдЧрд░рд┐рдПрдХреЛ рдЫред
HTTPS рдирд┐рд░реАрдХреНрд╖рдг рдиреАрддрд┐рдорд╛ рдирд┐рдпрдо рдердкреНрдиреБрд╣реЛрд╕реН
from cpapi import APIClient, APIClientArgs
client_args = APIClientArgs(server="192.168.47.240")
data = {
"layer" : "Default Layer",
"position" : "top",
"name" : "Legal Requirements",
"action": "bypass",
"site-category": ["Health", "Government / Military", "Financial Services"]
}
with APIClient(client_args) as client:
login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
add_https_rule = client.api_call("add-https-rule", data)
publish = client.api_call("publish")
рдЪреЗрдХ рдкреЛрдЗрдиреНрдЯ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рд░реНрднрд░рдорд╛ рдкрд╛рдЗрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВ рдЪрд▓рд╛рдЙрдБрджреИ
рд╕рдмреИ рдЙрд╕реНрддреИ рдЫ
рд╕реБрд░рдХреНрд╖рд╛ рдЬрд╛рдБрдЪрдХреЛ рджреНрд░реБрдд рд╕реЗрдЯрдЕрдкрдХреЛ рд▓рд╛рдЧрд┐ рд▓рд┐рдкрд┐
from __future__ import print_function
import getpass
import sys, os
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from cpapi import APIClient, APIClientArgs
def main():
with APIClient() as client:
# if client.check_fingerprint() is False:
# print("Could not get the server's fingerprint - Check connectivity with the server.")
# exit(1)
login_res = client.login_as_root()
if login_res.success is False:
print("Login failed:n{}".format(login_res.error_message))
exit(1)
gw_name = raw_input("Enter the gateway name:")
gw_ip = raw_input("Enter the gateway IP address:")
if sys.stdin.isatty():
sic = getpass.getpass("Enter one-time password for the gateway(SIC): ")
else:
print("Attention! Your password will be shown on the screen!")
sic = raw_input("Enter one-time password for the gateway(SIC): ")
version = raw_input("Enter the gateway version(like RXX.YY):")
add_gw = client.api_call("add-simple-gateway", {'name' : gw_name, 'ipv4-address' : gw_ip, 'one-time-password' : sic, 'version': version.capitalize(), 'application-control' : 'true', 'url-filtering' : 'true', 'ips' : 'true', 'anti-bot' : 'true', 'anti-virus' : 'true', 'threat-emulation' : 'true'})
if add_gw.success and add_gw.data['sic-state'] != "communicating":
print("Secure connection with the gateway hasn't established!")
exit(1)
elif add_gw.success:
print("The gateway was added successfully.")
gw_uid = add_gw.data['uid']
gw_name = add_gw.data['name']
else:
print("Failed to add the gateway - {}".format(add_gw.error_message))
exit(1)
change_policy = client.api_call("set-access-layer", {"name" : "Network", "applications-and-url-filtering": "true", "content-awareness": "true"})
if change_policy.success:
print("The policy has been changed successfully")
else:
print("Failed to change the policy- {}".format(change_policy.error_message))
change_rule = client.api_call("set-access-rule", {"name" : "Cleanup rule", "layer" : "Network", "action": "Accept", "track": {"type": "Detailed Log", "accounting": "true"}})
if change_rule.success:
print("The cleanup rule has been changed successfully")
else:
print("Failed to change the cleanup rule- {}".format(change_rule.error_message))
# publish the result
publish_res = client.api_call("publish", {})
if publish_res.success:
print("The changes were published successfully.")
else:
print("Failed to publish the changes - {}".format(install_tp_policy.error_message))
install_access_policy = client.api_call("install-policy", {"policy-package" : "Standard", "access" : 'true', "threat-prevention" : 'false', "targets" : gw_uid})
if install_access_policy.success:
print("The access policy has been installed")
else:
print("Failed to install access policy - {}".format(install_tp_policy.error_message))
install_tp_policy = client.api_call("install-policy", {"policy-package" : "Standard", "access" : 'false', "threat-prevention" : 'true', "targets" : gw_uid})
if install_tp_policy.success:
print("The threat prevention policy has been installed")
else:
print("Failed to install threat prevention policy - {}".format(install_tp_policy.error_message))
# add passwords and passphrases to dictionary
with open('additional_pass.conf') as f:
line_num = 0
for line in f:
line_num += 1
add_password_dictionary = client.api_call("run-script", {"script-name" : "Add passwords and passphrases", "script" : "printf "{}" >> $FWDIR/conf/additional_pass.conf".format(line), "targets" : gw_name})
if add_password_dictionary.success:
print("The password dictionary line {} was added successfully".format(line_num))
else:
print("Failed to add the dictionary - {}".format(add_password_dictionary.error_message))
main()
рдЕрддрд┐рд░рд┐рдХреНрдд_pass.conf рдкрд╛рд╕рд╡рд░реНрдб рд╢рдмреНрджрдХреЛрд╢рдХреЛ рд╕рд╛рде рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рдлрд╛рдЗрд▓
{
"passwords" : ["malware","malicious","infected","Infected"],
"phrases" : ["password","Password","Pass","pass","codigo","key","pwd","╨┐╨░╤А╨╛╨╗╤М","╨Я╨░╤А╨╛╨╗╤М","╨Ъ╨╗╤О╤З","╨║╨╗╤О╤З","╤И╨╕╤Д╤А","╨и╨╕╤Д╤А"]
}
рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛
рдпрд╕ рд▓реЗрдЦрд▓реЗ рдХрд╛рдордХреЛ рдЖрдзрд╛рд░рднреВрдд рд╕рдореНрднрд╛рд╡рдирд╛рд╣рд░реВ рдорд╛рддреНрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрджрдЫ рдкрд╛рдЗрдерди рдПрд╕рдбреАрдХреЗ рд░ рдореЛрдбреНрдпреБрд▓ cpapi(рддрдкрд╛рдИрдВрд▓реЗ рдЕрдиреБрдорд╛рди рдЧрд░реНрдиреБрднрдПрдХреЛ рд╣реБрди рд╕рдХреНрдЫ, рдпреА рд╡рд╛рд╕реНрддрд╡рдорд╛ рд╕рдорд╛рдирд╛рд░реНрдереА рд╢рдмреНрджрд╣рд░реВ рд╣реБрдиреН), рд░ рдпрд╕ рдореЛрдбреНрдпреБрд▓рдорд╛ рдХреЛрдб рдЕрдзреНрдпрдпрди рдЧрд░реЗрд░ рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рдорд╛ рдХрд╛рдо рдЧрд░реНрдиреЗ рдердк рдЕрд╡рд╕рд░рд╣рд░реВ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреБрд╣реБрдиреЗрдЫред рдпреЛ рд╕рдореНрднрд╡ рдЫ рдХрд┐ рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рддрдкрд╛рдЗрдБрдХреЛ рдЖрдлреНрдиреИ рдХрдХреНрд╖рд╛рд╣рд░реБ, рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реБ, рд╡рд┐рдзрд┐рд╣рд░реБ рд░ рдЪрд░рд╣рд░реБ рд╕рдВрдЧ рдкреВрд░рдХ рдЧрд░реНрди рдЪрд╛рд╣рд╛рдиреБрд╣реБрдиреНрдЫред рддрдкрд╛рдИрд▓реЗ рд╕рдзреИрдВ рдЖрдлреНрдиреЛ рдХрд╛рдо рд╕рд╛рдЭрд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рд╕реЗрдХреНрд╕рдирдорд╛ рдЪреЗрдХ рдкреЛрдЗрдиреНрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ
рдЦреБрд╢реА рдХреЛрдбрд┐рдЩ рд░ рдЕрдиреНрдд рд╕рдореНрдо рдкрдвреНрди рдХреЛ рд▓рд╛рдЧреА рдзрдиреНрдпрд╡рд╛рдж!
рд╕реНрд░реЛрдд: www.habr.com