ืกื™ืžืคึผืœืึทืคื™ื™ื™ื ื’ ื“ื™ Check Point API ืžื™ื˜ ื“ื™ Python SDK

ืกื™ืžืคึผืœืึทืคื™ื™ื™ื ื’ ื“ื™ Check Point API ืžื™ื˜ ื“ื™ Python SDKื“ื™ ืคื•ืœ ืžืึทื›ื˜ ืคื•ืŸ ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืžื™ื˜ APIs ืื™ื– ืื ื˜ืคืœืขืงื˜ ื•ื•ืขืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืฆื•ื–ืึทืžืขืŸ ืžื™ื˜ ืคึผืจืึธื’ืจืึทื ืงืึธื“, ื•ื•ืขืŸ ืขืก ืื™ื– ืžืขื’ืœืขืš ืฆื• ื“ื™ื ืึทืžื™ืงืึทืœืœื™ ื“ื–ืฉืขื ืขืจื™ื™ื˜ API ืจื™ืงื•ื•ืขืก ืื•ืŸ ืžื›ืฉื™ืจื™ื ืคึฟืึทืจ ืึทื ืึทืœื™ื™ื–ื™ื ื’ API ืจืขืกืคึผืึธื ืกืขืก. ืึธื‘ืขืจ, ืขืก ื ืึธืš ื‘ืœื™ื™ื‘ื˜ ืึทื ื ืึธื•ื˜ื™ืกืึทื‘ืึทืœ ืคึผื™ื˜ื”ืึธืŸ ื•ื•ื™ื™ื›ื•ื•ืืจื’ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืงื™ื˜ (ื“ืขืจื ืึธืš ืจื™ืคืขืจื“ ืฆื• ื•ื•ื™ Python SDK) ืคึฟืึทืจ ื˜ืฉืขืง ืคึผื•ื™ื ื˜ ืžืึทื ืึทื’ืขืžืขื ื˜ ืึทืคึผื™, ืื‘ืข ืจ ืื•ืžื–ื™ืกื˜ . ืขืก ืกื™ืžืคึผืœืึทืคื™ื™ื– ื‘ืื˜ื™ื™ื˜ื™ืง ื“ื™ ืœืขื‘ืŸ ืคื•ืŸ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืื•ืŸ ืึธื˜ืึทืžื™ื™ืฉืึทืŸ ืขื ื˜ื•ื–ื™ืึทืกืฅ. ืคึผื™ื˜ื”ืึธืŸ ื”ืื˜ ืคืืจื“ื™ื ื˜ ืจื™ื–ื™ืง ืคึผืึธืคึผื•ืœืึทืจื™ื˜ืขื˜ ืœืขืฆื˜ื ืก ืื•ืŸ ืื™ืš ื‘ืึทืฉืœืึธืกืŸ ืฆื• ืคึผืœืึธืžื‘ื™ืจืŸ ื“ืขื ืจื™ืก ืื•ืŸ ืึธืคึผืฉืึทืฆืŸ ื“ื™ ื”ื•ื™ืคึผื˜ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ. ื˜ืฉืขืง ืคึผื•ื™ื ื˜ ืึทืคึผื™ ืคึผื™ื˜ื”ืึธืŸ ืื ื˜ื•ื•ื™ืงืœื•ื ื’ ืงื™ื˜. ื“ืขืจ ืึทืจื˜ื™ืงืœ ื“ื™ื ื˜ ื•ื•ื™ ืึท ื•ื™ืกื’ืขืฆื™ื™ื›ื ื˜ ื“ืขืจืฆื• ืฆื• ืืŸ ืื ื“ืขืจ ืึทืจื˜ื™ืงืœ ืื•ื™ืฃ Habrรฉ ื˜ืฉืขืง ืคึผื•ื™ื ื˜ ืจ80.10 ืึทืคึผื™. ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ื“ื•ืจืš CLI, ืกืงืจื™ืคึผืก ืื•ืŸ ืžืขืจ. ืžื™ืจ ื•ื•ืขืœืŸ ืงื•ืงืŸ ื•ื•ื™ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืกืงืจื™ืคึผืก ื ื™ืฆืŸ ื“ื™ Python SDK ืื•ืŸ ื ืขืžืขืŸ ืึท ื ืขืขื ื˜ืขืจ ืงื•ืง ืื™ืŸ ื“ื™ ื ื™ื™ึทืข ืžืึทื ืึทื’ืขืžืขื ื˜ ืึทืคึผื™ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืื™ืŸ ื•ื•ืขืจืกื™ืข 1.6 (ื’ืขืฉื˜ื™ืฆื˜ ืกื˜ืึทืจื˜ื™ื ื’ ืคื•ืŸ R80.40). ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ, ืื™ืจ ื•ื•ืขื˜ ื“ืึทืจืคึฟืŸ ื™ืงืขืจื“ื™ืง ื•ื•ื™ืกืŸ ืคื•ืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ APIs ืื•ืŸ Python.

Check Point ืื™ื– ืึทืงื˜ื™ื•ื•ืœื™ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ื“ื™ API ืื•ืŸ ืื™ืŸ ื“ืขื ืžืึธืžืขื ื˜ ื“ื™ ืคืืœื’ืขื ื“ืข ื–ืขื ืขืŸ ื‘ืืคืจื™ื™ื˜:

ื“ื™ Python SDK ื“ืขืจื•ื•ื™ื™ึทืœ ืฉื˜ื™ืฆื˜ ื‘ืœื•ื™ื– ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืžื™ื˜ ื“ื™ ืžืึทื ืึทื’ืขืžืขื ื˜ ืึทืคึผื™ ืื•ืŸ Gaia API. ืžื™ืจ ื•ื•ืขืœืŸ ืงื•ืงืŸ ืื™ืŸ ื“ื™ ืžืขืจืกื˜ ื•ื•ื™ื›ื˜ื™ืง ืงืœืืกืŸ, ืžืขื˜ื”ืึธื“ืก ืื•ืŸ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืื™ืŸ ื“ืขื ืžืึธื“ื•ืœืข.

ืกื™ืžืคึผืœืึทืคื™ื™ื™ื ื’ ื“ื™ Check Point API ืžื™ื˜ ื“ื™ Python SDK

ืžืึธื“ื•ืœืข ื™ื ืกื˜ืึทืœื™ืจื•ื ื’

ืžืึธื“ื•ืœืข cpapi ื™ื ืกื˜ืึธืœื– ื’ืขืฉื•ื•ื™ื ื“ ืื•ืŸ ืœื™ื™ื›ื˜ ืคึฟื•ืŸ ื‘ืึทืึทืžื˜ืขืจ ื˜ืฉืขืง ืคึผื•ื™ื ื˜ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื•ื™ืฃ ื’ื™ื˜ื”ื•ื‘ ื“ื•ืจืš ืคึผื™ืคึผ. ื“ื™ื˜ื™ื™ืœื“ ื™ื™ึทื ืžืึธื ื˜ื™ืจื•ื ื’ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ื–ืขื ืขืŸ ื‘ื ื™ืžืฆื ืื™ืŸ README.md. ื“ืขืจ ืžืึธื“ื•ืœืข ืื™ื– ืฆื•ื’ืขืคืืกื˜ ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ Python ื•ื•ืขืจืกื™ืขืก 2.7 ืื•ืŸ 3.7. ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ, ื‘ื™ื™ืฉืคื™ืœืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื’ืขื‘ืŸ ืžื™ื˜ Python 3.7. ืึธื‘ืขืจ, ื“ื™ Python SDK ืงืขื ืขืŸ ื–ื™ื™ืŸ ืœื•ื™ืคืŸ ื’ืœื™ื™ืš ืคึฟื•ืŸ ื“ื™ ื˜ืฉืขืง ืคึผื•ื™ื ื˜ ืžืึทื ืึทื’ืขืžืขื ื˜ ืกืขืจื•ื•ื™ืจืขืจ (ืกืžืึทืจื˜ ืžืึทื ืึทื’ืขืžืขื ื˜), ืึธื‘ืขืจ ื–ื™ื™ ืฉื˜ื™ืฆืŸ ื‘ืœื•ื™ื– Python 2.7, ืึทื–ื•ื™ ื“ื™ ืœืขืฆื˜ืข ืึธืคึผื˜ื™ื™ืœื•ื ื’ ื•ื•ืขื˜ ืฆื•ืฉื˜ืขืœืŸ ืงืึธื“ ืคึฟืึทืจ ื•ื•ืขืจืกื™ืข 2.7. ื’ืœื™ื™ืš ื ืึธืš ื™ื ืกื˜ืึธืœื™ื ื’ ื“ื™ ืžืึธื“ื•ืœืข, ืื™ืš ืจืขืงืึธืžืขื ื“ื™ืจืŸ ืฆื• ืงื•ืงืŸ ืื™ืŸ ื“ื™ ื‘ื™ื™ืฉืคื™ืœืŸ ืื™ืŸ ื“ื™ ื“ื™ืจืขืงื˜ืขืจื™ื– ื‘ื™ื™ืฉืคื™ืœืŸ_ืคึผื™ื˜ื”ืึธืŸ2 ะธ ื‘ื™ื™ืฉืคื™ืœืŸ_ืคึผื™ื˜ื”ืึธืŸ3.

ื’ืขื˜ื™ื ื’ ืกื˜ืึทืจื˜ืขื“

ื›ึผื“ื™ ืื•ื ื“ื– ื–ืึธืœ ืงืขื ืขืŸ ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ื™ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ ืคื•ืŸ ื“ื™ ืงืคึผืึทืคึผื™ ืžืึธื“ื•ืœืข, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืึทืจื™ื™ึทื ืคื™ืจ ืคื•ืŸ ื“ื™ ืžืึธื“ื•ืœืข cpapi ืื™ืŸ ืžื™ื ื“ืกื˜ืขืจ ืฆื•ื•ื™ื™ ืคืืจืœืื ื’ื˜ ืงืœืืกืŸ:

APIClient ะธ APIClientArgs

from cpapi import APIClient, APIClientArgs

ืกืึธืจื˜ APIClientArgs ืื™ื– ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ืงืฉืจ ืคึผืึทืจืึทืžืขื˜ืขืจืก ืฆื• ื“ื™ ืึทืคึผื™ ืกืขืจื•ื•ืขืจ ืื•ืŸ ื“ื™ ืงืœืึทืก APIClient ืื™ื– ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืžื™ื˜ ื“ื™ ืึทืคึผื™.

ื“ื™ื˜ืขืจืžืึทื ื™ื ื’ ืงืฉืจ ืคึผืึทืจืึทืžืขื˜ืขืจืก

ืฆื• ื“ืขืคื™ื ื™ืจืŸ ืคืึทืจืฉื™ื“ืŸ ืคึผืึทืจืึทืžืขื˜ืขืจืก ืคึฟืึทืจ ืงืึทื ืขืงื˜ื™ื ื’ ืฆื• ื“ื™ API, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉืึทืคึฟืŸ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ ืคื•ืŸ ื“ื™ ืงืœืึทืก APIClientArgs. ืื™ืŸ ืคึผืจื™ื ืฆื™ืคึผ, ื–ื™ื™ึทืŸ ืคึผืึทืจืึทืžืขื˜ืขืจืก ื–ืขื ืขืŸ ืคึผืจืขื“ืขืคื™ื ืขื“ ืื•ืŸ ื•ื•ืขืŸ ืคืœื™ืกื ื“ื™ืง ื“ื™ ืฉืจื™ืคื˜ ืื•ื™ืฃ ื“ื™ ืงืึธื ื˜ืจืึธืœ ืกืขืจื•ื•ืขืจ, ื–ื™ื™ ื˜ืึธืŸ ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ื–ื™ื™ืŸ ืกืคึผืขืกื™ืคื™ืขื“.

client_args = APIClientArgs()

ืึธื‘ืขืจ ื•ื•ืขืŸ ืคืœื™ืกื ื“ื™ืง ืื•ื™ืฃ ืึท ื“ืจื™ื˜-ืคึผืึทืจื˜ื™ื™ ื‘ืึทืœืขื‘ืึธืก, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืื™ืŸ ืžื™ื ื“ืกื˜ืขืจ ื“ื™ IP ืึทื“ืจืขืก ืึธื“ืขืจ ื‘ืึทืœืขื‘ืึธืก ื ืึธืžืขืŸ ืคื•ืŸ ื“ื™ ืึทืคึผื™ ืกืขืจื•ื•ืขืจ (ืื•ื™ืš ื‘ืืงืื ื˜ ื•ื•ื™ ื“ื™ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืกืขืจื•ื•ืขืจ). ืื™ืŸ ื“ืขื ื‘ื™ื™ึทืฉืคึผื™ืœ ืื•ื ื˜ืŸ, ืžื™ืจ ื“ืขืคื™ื ื™ืจืŸ ื“ื™ ืกืขืจื•ื•ืขืจ ืงืฉืจ ืคึผืึทืจืึทืžืขื˜ืขืจ ืื•ืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ืขืก ื“ื™ IP ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืกืขืจื•ื•ืขืจ ื•ื•ื™ ืึท ืฉื˜ืจื™ืงืœ.

client_args = APIClientArgs(server='192.168.47.241')

ื–ืืœ ืก ืงื•ืง ืื™ืŸ ืึทืœืข ื“ื™ ืคึผืึทืจืึทืžืขื˜ืขืจืก ืื•ืŸ ื–ื™ื™ืขืจ ืคืขืœื™ืงื™ื™ึทื˜ ื•ื•ืึทืœื•ืขืก ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ื•ื•ืขืŸ ืงืึทื ืขืงื˜ื™ื ื’ ืฆื• ื“ื™ API ืกืขืจื•ื•ืขืจ:

ืึทืจื’ื•ืžืขื ื˜ืŸ ืคื•ืŸ ื“ื™ __init__ ืื•ืคึฟืŸ ืคื•ืŸ ื“ื™ APIClientArgs ืงืœืึทืก

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:

ื“ืขืจ ืงืึธื ื˜ืขืงืกื˜ ืคืึทืจื•ื•ืึทืœื˜ืขืจ ื•ื•ืขื˜ ื ื™ืฉื˜ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืžืึทื›ืŸ ืึท ืœืึธื’ื™ืŸ ืจื•ืคืŸ ืฆื• ื“ื™ ืึทืคึผื™ ืกืขืจื•ื•ืขืจ, ืึธื‘ืขืจ ืขืก ื•ื•ืขื˜ ืžืึทื›ืŸ ืึท ืœืึธื’ืึธื•ื˜ ืจื•ืคืŸ ื•ื•ืขืŸ ืื™ืจ ืึทืจื•ื™ืกื’ืึทื ื’ ืขืก. ืื•ื™ื‘ ืคึฟืึทืจ ืขื˜ืœืขื›ืข ืกื™ื‘ื” ืœืึธื’ืึธื•ื˜ ืื™ื– ื ื™ืฉื˜ ืคืืจืœืื ื’ื˜ ื ืึธืš ืขื ื“ื™ืงืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืึทืคึผื™ ืงืึทืœืœืก, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืึธื ื”ื™ื™ื‘ืŸ ืืจื‘ืขื˜ืŸ ืึธืŸ ื ื™ืฆืŸ ื“ื™ ืงืึธื ื˜ืขืงืกื˜ ืคืึทืจื•ื•ืึทืœื˜ืขืจ:

client = APIClient(clieng_args)

ืงืฉืจ ืคึผืจื•ื‘ื™ืจืŸ

ื“ื™ ื™ื–ื™ืึทืกื˜ ื•ื•ืขื’ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืฆื™ ื“ื™ ืงืฉืจ ืžื™ืฅ ื“ื™ ืกืคึผืขืกื™ืคื™ืขื“ ืคึผืึทืจืึทืžืขื˜ืขืจืก ืื™ื– ื ื™ืฆืŸ ื“ืขื ืื•ืคึฟืŸ ื˜ืฉืขืง_ืคื™ื ื’ืขืจืคึผืจื™ื ื˜. ืื•ื™ื‘ ื“ื™ ื•ื•ืขืจืึทืคืึทืงื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ sha1 ื”ืึทืฉ ืกืึทื›ืึทืงืœ ืคึฟืึทืจ ื“ื™ ืคื™ื ื’ืขืจืคึผืจื™ื ื˜ ืคื•ืŸ ื“ื™ ืกืขืจื•ื•ืขืจ API ื‘ืึทื•ื•ื™ื™ึทื–ืŸ ืคื™ื™ืœื– (ื“ืขืจ ืื•ืคึฟืŸ ืื™ื– ืื•ืžื’ืขืงืขืจื˜ ืคืึทืœืฉ), ื“ืึธืก ืื™ื– ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ื’ืขืคึฟื™ืจื˜ ื“ื•ืจืš ืงืฉืจ ืคึผืจืึธื‘ืœืขืžืก ืื•ืŸ ืžื™ืจ ืงืขื ืขืŸ ื”ืึทืœื˜ืŸ ื“ื™ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืคื•ืŸ ื“ื™ ืคึผืจืึธื’ืจืึทื (ืึธื“ืขืจ ื’ืขื‘ืŸ ื“ื™ ื‘ืึทื ื™ืฆืขืจ ื“ื™ ื’ืขืœืขื’ื ื”ื™ื™ื˜ ืฆื• ืคืึทืจืจื™ื›ื˜ืŸ ื“ื™ ืงืฉืจ ื“ืึทื˜ืŸ):

    if client.check_fingerprint() is False:
        print("Could not get the server's fingerprint - Check connectivity with the server.")
        exit(1)

ื‘ื™ื˜ืข ื˜ืึธืŸ ืึทื– ืื™ืŸ ื“ืขืจ ืฆื•ืงื•ื ืคึฟื˜ ื“ื™ ืงืœืึทืก APIClient ื•ื•ืขื˜ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื™ืขื“ืขืจ ืึทืคึผื™ ืจื•ืคืŸ (ืžื™ื˜ืœืขืŸ ืึทืคึผื™_ืงืึทืœืœ ะธ ืึทืคึผื™_ืงื•ื•ืขืจื™, ืžื™ืจ ื•ื•ืขืœืŸ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื–ื™ื™ ืึท ื‘ื™ืกืœ ื•ื•ื™ื™ึทื˜ืขืจ) sha1 ืคื™ื ื’ืขืจืคึผืจื™ื ื˜ ื‘ืึทื•ื•ื™ื™ึทื–ืŸ ืื•ื™ืฃ ื“ื™ ืึทืคึผื™ ืกืขืจื•ื•ืขืจ. ืึธื‘ืขืจ ืื•ื™ื‘, ื•ื•ืขืŸ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ sha1 ืคื™ื ื’ืขืจืคึผืจื™ื ื˜ ืคื•ืŸ ื“ื™ ืึทืคึผื™ ืกืขืจื•ื•ืขืจ ื‘ืึทื•ื•ื™ื™ึทื–ืŸ, ืึท ื˜ืขื•ืช ืื™ื– ื“ื™ื˜ืขืงื˜ืึทื“ (ื“ื™ ื‘ืึทื•ื•ื™ื™ึทื–ืŸ ืื™ื– ืื•ืžื‘ืึทืงืึทื ื˜ ืึธื“ืขืจ ืื™ื– ืคืืจืขื ื“ืขืจื˜), ื“ืขืจ ืื•ืคึฟืŸ ื˜ืฉืขืง_ืคื™ื ื’ืขืจืคึผืจื™ื ื˜ ื•ื•ืขื˜ ืฆื•ืฉื˜ืขืœืŸ ื“ื™ ื’ืขืœืขื’ื ื”ื™ื™ื˜ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืฆื• ืœื™ื™ื’ืŸ / ื˜ื•ื™ืฉืŸ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ืื™ื ืื•ื™ืฃ ื“ื™ ื”ื™ื’ืข ืžืึทืฉื™ืŸ. ื“ืขื ื˜ืฉืขืง ืงืขื ืขืŸ ื–ื™ื™ืŸ ืคืึทืจืงืจื™ืคึผืœื˜ ื’ืึธืจ (ืึธื‘ืขืจ ื“ืึธืก ืงืขืŸ ื ืึธืจ ื–ื™ื™ืŸ ืจืขืงืึทืžืขื ื“ื™ื“ ืื•ื™ื‘ ืกืงืจื™ืคึผืก ื–ืขื ืขืŸ ืœื•ื™ืคืŸ ืื•ื™ืฃ ื“ื™ ืึทืคึผื™ ืกืขืจื•ื•ืขืจ ื–ื™ืš, ื•ื•ืขืŸ ืงืึทื ืขืงื˜ื™ื ื’ ืฆื• 127.0.0.1), ื ื™ืฆืŸ ื“ื™ APIClientArgs ืึทืจื’ื•ืžืขื ื˜ - unsafe_auto_accept (ื–ืขืŸ ืžืขืจ ื•ื•ืขื’ืŸ APIClientArgs ืคืจื™ืขืจ ืื™ืŸ "ื“ืขืคื™ื ื™ืจืŸ ืงืฉืจ ืคึผืึทืจืึทืžืขื˜ืขืจืก").

client_args = APIClientArgs(unsafe_auto_accept=True)

ืœืึธื’ื™ืŸ ืฆื• ืึทืคึผื™ ืกืขืจื•ื•ืขืจ

ะฃ APIClient ืขืก ื–ืขื ืขืŸ ื•ื•ื™ ืคื™ืœืข ื•ื•ื™ 3 ืžืขื˜ื”ืึธื“ืก ืคึฟืึทืจ ืœืึธื’ื™ื ื’ ืื™ืŸ ื“ื™ ืึทืคึผื™ ืกืขืจื•ื•ืขืจ, ืื•ืŸ ื™ืขื“ืขืจ ืคื•ืŸ ื–ื™ื™ ืคืืจืฉื˜ื™ื™ื˜ ื“ื™ ื˜ื™ื™ึทื˜ืฉ ืกื™ื“(ืกืขืกื™ืข-ืฉื™ื™ึทืŸ), ื•ื•ืึธืก ืื™ื– ื’ืขื ื™ืฆื˜ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืื™ืŸ ื™ืขื“ืขืจ ืกืึทื‘ืกืึทืงื•ื•ืึทื ื˜ ืึทืคึผื™ ืจื•ืคืŸ ืื™ืŸ ื“ื™ ื›ืขื“ืขืจ (ื“ืขืจ ื ืึธืžืขืŸ ืื™ืŸ ื“ื™ ื›ืขื“ืขืจ ืคื•ืŸ ื“ืขื ืคึผืึทืจืึทืžืขื˜ืขืจ ืื™ื– X-chkp-sid), ืึทื–ื•ื™ ืขืก ืื™ื– ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ืคืึธืจื–ืขืฆืŸ ื“ืขื ืคึผืึทืจืึทืžืขื˜ืขืจ.

ืœืึธื’ื™ืŸ ืื•ืคึฟืŸ

ืึธืคึผืฆื™ืข ื ื™ืฆืŸ ืœืึธื’ื™ืŸ ืื•ืŸ ืคึผืึทืจืึธืœ (ืื™ืŸ ื“ืขื ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ื™ ื ืืžืขืŸ ืึทื“ืžื™ืŸ ืื•ืŸ ืคึผืึทืจืึธืœ 1q2w3e ื–ืขื ืขืŸ ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ื•ื•ื™ ืคึผืึธืกื™ื˜ื™ืึธื ืึทืœ ืึทืจื’ื•ืžืขื ื˜ืŸ):

     login = client.login('admin', '1q2w3e')  

ื ืึธืš ืึทืคึผืฉืึทื ืึทืœ ืคึผืึทืจืึทืžืขื˜ืขืจืก ื–ืขื ืขืŸ ืื•ื™ืš ื‘ื ื™ืžืฆื ืื™ืŸ ื“ื™ ืœืึธื’ื™ืŸ ืื•ืคึฟืŸ ื“ืึธ ื–ืขื ืขืŸ ื–ื™ื™ืขืจ ื ืขืžืขืŸ ืื•ืŸ ืคืขืœื™ืงื™ื™ึทื˜ ื•ื•ืึทืœื•ืขืก:

continue_last_session=False, domain=None, read_only=False, payload=None

Login_with_api_key ืื•ืคึฟืŸ

ืึธืคึผืฆื™ืข ื ื™ืฆืŸ ืึทืŸ ืึทืคึผื™ ืฉืœื™ืกืœ (ื’ืขืฉื˜ื™ืฆื˜ ืกื˜ืึทืจื˜ื™ื ื’ ืคึฟื•ืŸ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ื•ื•ืขืจืกื™ืข R80.40/Management API v1.6, "3TsbPJ8ZKjaJGvFyoFqHFA==" ื“ืึธืก ืื™ื– ื“ื™ API ืฉืœื™ืกืœ ื•ื•ืขืจื˜ ืคึฟืึทืจ ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ื ื™ืฆืขืจืก ืื•ื™ืฃ ื“ื™ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืกืขืจื•ื•ืขืจ ืžื™ื˜ ื“ื™ API ืฉืœื™ืกืœ ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ ืื•ืคึฟืŸ):

     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==') 

ืื™ืŸ ืฉื™ื˜ื” login_with_api_key ื“ื™ ื–ืขืœื‘ืข ืึทืคึผืฉืึทื ืึทืœ ืคึผืึทืจืึทืžืขื˜ืขืจืก ื–ืขื ืขืŸ ื‘ื ื™ืžืฆื ื•ื•ื™ ืื™ืŸ ื“ืขื ืื•ืคึฟืŸ ืœืึธื’ื™ืŸ.

login_as_root ืื•ืคึฟืŸ

ืึธืคึผืฆื™ืข ืฆื• ืœืึธื’ื™ืŸ ืฆื• ืึท ื”ื™ื’ืข ืžืึทืฉื™ืŸ ืžื™ื˜ ืึทืŸ ืึทืคึผื™ ืกืขืจื•ื•ืขืจ:

     login = client.login_as_root()

ืขืก ื–ืขื ืขืŸ ื‘ืœื•ื™ื– ืฆื•ื•ื™ื™ ืึทืคึผืฉืึทื ืึทืœ ืคึผืึทืจืึทืžืขื˜ืขืจืก ื‘ื ื™ืžืฆื ืคึฟืึทืจ ื“ืขื ืื•ืคึฟืŸ:

domain=None, payload=None

ืื•ืŸ ืœืขืกืึธืฃ ื“ื™ API ืจื•ืคื˜ ื–ื™ืš

ืžื™ืจ ื”ืึธื‘ืŸ ืฆื•ื•ื™ื™ ืึธืคึผืฆื™ืขืก ืฆื• ืžืึทื›ืŸ ืึทืคึผื™ ืงืึทืœืœืก ื“ื•ืจืš ืžืขื˜ื”ืึธื“ืก ืึทืคึผื™_ืงืึทืœืœ ะธ ืึทืคึผื™_ืงื•ื•ืขืจื™. ื–ืืœ ืก ืจืขื›ืขื ืขืŸ ืื•ื™ืก ื•ื•ืึธืก ื“ื™ ื—ื™ืœื•ืง ืื™ื– ืฆื•ื•ื™ืฉืŸ ื–ื™ื™.

ืึทืคึผื™_ืงืึทืœืœ

ื“ืขื ืื•ืคึฟืŸ ืื™ื– ืึธื ื•ื•ืขื ื“ืœืขืš ืคึฟืึทืจ ืงื™ื™ืŸ ืงืึทืœืœืก. ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืคืึธืจืŸ ื“ื™ ืœืขืฆื˜ืข ื˜ื™ื™ืœ ืคึฟืึทืจ ื“ื™ ืึทืคึผื™ ืจื•ืคืŸ ืื•ืŸ ืคึผื™ื™ืœืึธื•ื“ ืื™ืŸ ื“ื™ ื‘ืขื˜ืŸ ื’ื•ืฃ ืื•ื™ื‘ ื ื™ื™ื˜ื™ืง. ืื•ื™ื‘ ืคึผื™ื™ืœืึธื•ื“ ืื™ื– ืœื™ื™ื“ื™ืง, ืขืก ืงืขืŸ ื ื™ืฉื˜ ื–ื™ื™ืŸ ื˜ืจืึทื ืกืžื™ื˜ื˜ืขื“ ื‘ื™ื™ึท ืึทืœืข:

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 ืงืขืจื˜ ืึท ืจืฉื™ืžื” ืคื•ืŸ 50 ืึทื‘ื“ื–ืฉืขืงืฅ ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜ (ืื™ืจ ืงืขื ืขืŸ ืคืึทืจื’ืจืขืกืขืจืŸ ื“ื™ ืฉื™ืขื•ืจ ืฆื• 500 ืึทื‘ื“ื–ืฉืขืงืฅ ืื™ืŸ ื“ืขืจ ืขื ื˜ืคืขืจ). ืื•ืŸ ืื™ืŸ ืกื“ืจ ื ื™ืฉื˜ ืฆื• ืฆื™ืขืŸ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืขื˜ืœืขื›ืข ืžืึธืœ ื“ื•ืจืš ื˜ืฉืึทื ื’ื™ื ื’ ื“ื™ ืคืึธื˜ืึธ ืคึผืึทืจืึทืžืขื˜ืขืจ ืื™ืŸ ื“ื™ ืึทืคึผื™ ื‘ืขื˜ืŸ, ืขืก ืื™ื– ืึทืŸ ืึทืคึผื™_ืงื•ื•ืขืจื™ ืื•ืคึฟืŸ ื•ื•ืึธืก ืึทืจื‘ืขื˜ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ. ื‘ื™ื™ืฉืคื™ืœืŸ ืคื•ืŸ ืงืึทืœืœืก ื•ื•ื• ื“ืขื ืื•ืคึฟืŸ ืื™ื– ื“ืืจืฃ: ื•ื•ื™ื™ึทื–ืŸ-ืกืขืกืฉืึทื ื–, ื•ื•ื™ื™ึทื–ืŸ-ืžื—ื ื•ืช, ื•ื•ื™ื™ึทื–ืŸ-ื ืขื˜ื•ื•ืึธืจืงืก, ื•ื•ื™ื™ึทื–ืŸ-ื•ื•ื™ืœื“ืงืึทืจื“ืก, ื•ื•ื™ื™ึทื–ืŸ-ื’ืจื•ืคึผืขืก, ื•ื•ื™ื™ึทื–ืŸ-ืึทื“ืจืขืก-ืจื™ื™ื ื“ื–ืฉื™ื–, ื•ื•ื™ื™ึทื–ืŸ-ืคึผืฉื•ื˜-ื’ื™ื™ื˜ื•ื•ื™ื™ื–, ื•ื•ื™ื™ึทื–ืŸ-ืคึผืฉื•ื˜-ืงืœื•ืกื˜ืขืจื–, ื•ื•ื™ื™ึทื–ืŸ-ืึทืงืกืขืก-ืจืึธืœืขืก, ื•ื•ื™ื™ึทื–ืŸ-ื˜ืจืึทืกื˜ื™ื“ ืงืœื™ื™ืึทื ืฅ, ื•ื•ื™ื™ึทื–ืŸ-ืคึผืึทืงืึทืœื–. ืื™ืŸ ืคืึทืงื˜, ืžื™ืจ ื–ืขืŸ ืžืขืจืฆืึธืœ ื•ื•ืขืจื˜ืขืจ ืื™ืŸ ื“ื™ ื ืึธืžืขืŸ ืคื•ืŸ ื“ื™ ืึทืคึผื™ ืงืึทืœืœืก, ืึทื–ื•ื™ ื“ื™ ืงืึทืœืœืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืจื™ื ื’ืขืจ ืฆื• ืฉืขืคึผืŸ ื“ื•ืจืš ืึทืคึผื™_ืงื•ื•ืขืจื™

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
})

ืคึผืจืึทืกืขืกื™ื ื’ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืคื•ืŸ ืึทืคึผื™ ืงืึทืœืœืก

ื ืึธืš ื“ืขื ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ื“ื™ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืื•ืŸ ืžืขื˜ื”ืึธื“ืก ืคื•ืŸ ื“ื™ ืงืœืึทืก APIResponse(ื‘ื™ื™ื“ืข ื™ืŸ ื“ืขืจ ืงืึธื ื˜ืขืงืกื˜ ืคืึทืจื•ื•ืึทืœื˜ืขืจ ืื•ืŸ ืึทืจื•ื™ืก). ืื™ืŸ ื“ื™ ืงืœืึทืก APIResponse 4 ืžืขื˜ื”ืึธื“ืก ืื•ืŸ 5 ื•ื•ืขืจื™ืึทื‘ืึทืœื– ื–ืขื ืขืŸ ืคึผืจืขื“ืขืคื™ื ืขื“, ืžื™ืจ ื•ื•ืขืœืŸ ื•ื•ื•ื™ื ืขืŸ ืื•ื™ืฃ ื“ื™ ืžืขืจืกื˜ ื•ื•ื™ื›ื˜ื™ืง ืึธื ืขืก ืื™ืŸ ืžืขืจ ื“ืขื˜ืึทืœ.

ืกื™ืžืคึผืœืึทืคื™ื™ื™ื ื’ ื“ื™ Check Point API ืžื™ื˜ ื“ื™ Python SDK

ื“ืขืจืคืึธืœื’

ืฆื• ืึธื ื”ื™ื™ื‘ืŸ ืžื™ื˜, ืขืก ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ืึท ื’ื•ื˜ืข ื’ืขื“ืึทื ืง ืฆื• ืžืึทื›ืŸ ื–ื™ื›ืขืจ ืึทื– ื“ื™ ืึทืคึผื™ ืจื•ืคืŸ ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืขืจืึธื˜ืŸ ืื•ืŸ ืื•ืžื’ืขืงืขืจื˜ ืึท ืจืขื–ื•ืœื˜ืึทื˜. ืขืก ืื™ื– ืึท ืื•ืคึฟืŸ ืคึฟืึทืจ ื“ืขื ื“ืขืจืคืึธืœื’:

In [49]: api_versions.success                                                   
Out[49]: True

ืงืขืจื˜ ืืžืช ืื•ื™ื‘ ื“ื™ ืึทืคึผื™ ืจื•ืคืŸ ืื™ื– ื’ืขืจืึธื˜ืŸ (ืขื ื˜ืคืขืจ ืงืึธื“ - 200) ืื•ืŸ ืคืึทืœืฉ ืื•ื™ื‘ ื ื™ื˜ ื’ืขืจืึธื˜ืŸ (ืงื™ื™ืŸ ืื ื“ืขืจืข ืขื ื˜ืคืขืจ ืงืึธื“). ืขืก ืื™ื– ื‘ืึทืงื•ื•ืขื ืฆื• ื ื•ืฆืŸ ื’ืœื™ื™ืš ื ืึธืš ืึท ืึทืคึผื™ ืจื•ืคืŸ ืฆื• ื•ื•ื™ื™ึทื–ืŸ ืคืึทืจืฉื™ื“ืขื ืข ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื“ื™ ืขื ื˜ืคืขืจ ืงืึธื“.

if api_ver.success: 
    print(api_versions.data) 
else: 
    print(api_versions.err_message) 

ืกื˜ืึทื˜ื•ืก ืงืึธื“

ืจืขื˜ื•ืจื ืก ื“ื™ ืขื ื˜ืคืขืจ ืงืึธื“ ื ืึธืš ืึท ืึทืคึผื™ ืจื•ืคืŸ ืื™ื– ื’ืขืžืื›ื˜.

In [62]: api_versions.status_code                                               
Out[62]: 400

ืžืขื’ืœืขืš ืขื ื˜ืคืขืจ ืงืึธื•ื“ื–: 200,400,401,403,404,409,500,501.

set_success_status

ืื™ืŸ ื“ืขื ืคืึทืœ, ืขืก ืงืขืŸ ื–ื™ื™ืŸ ื ื™ื™ื˜ื™ืง ืฆื• ื˜ื•ื™ืฉืŸ ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ื“ื™ ื”ืฆืœื—ื” ืกื˜ืึทื˜ื•ืก. ื˜ืขืงื ื™ืงืœื™, ืื™ืจ ืงืขื ืขืŸ ืฉื˜ืขืœืŸ ืขืคึผืขืก ื“ืึธืจื˜, ืืคื™ืœื• ืึท ืจืขื’ื•ืœืขืจ ืฉื˜ืจื™ืงืœ. ืื‘ืขืจ ืึท ืคืึทืงื˜ื™ืฉ ื‘ื™ื™ึทืฉืคึผื™ืœ ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืง ื“ืขื ืคึผืึทืจืึทืžืขื˜ืขืจ ืฆื• ืคืึทืœืฉ ืื•ื ื˜ืขืจ ื–ื™ื›ืขืจ ืึทืงืึทืžืคึผืึทื ื™ื™ื ื’ ื˜ื ืึธื™ื. ื•ื ื˜ืขืจ, ื‘ืึทืฆืึธืœืŸ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ื˜ ืฆื• ื“ืขื ื‘ื™ื™ึทืฉืคึผื™ืœ ื•ื•ืขืŸ ืขืก ื–ืขื ืขืŸ ื˜ืึทืกืงืก ืคืœื™ืกื ื“ื™ืง ืื•ื™ืฃ ื“ื™ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืกืขืจื•ื•ืขืจ, ืึธื‘ืขืจ ืžื™ืจ ื•ื•ืขืœืŸ ื‘ืึทื˜ืจืึทื›ื˜ืŸ ื“ืขื ื‘ืงืฉื” ื ื™ื˜ ื’ืขืจืึธื˜ืŸ (ืžื™ืจ ื•ื•ืขืœืŸ ืฉื˜ืขืœืŸ ื“ื™ ื”ืฆืœื—ื” ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืฆื• ืคืึทืœืฉ, ื˜ืจืึธืฅ ื“ืขืจ ืคืึทืงื˜ ืึทื– ื“ื™ ืึทืคึผื™ ืจื•ืคืŸ ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืขืจืึธื˜ืŸ ืื•ืŸ ืื•ืžื’ืขืงืขืจื˜ ืงืึธื“ 200).

for task in task_result.data["tasks"]:
    if task["status"] == "failed" or task["status"] == "partially succeeded":
        task_result.set_success_status(False)
        break

ืขื ื˜ืคืขืจ ()

ื“ืขืจ ืขื ื˜ืคืขืจ ืžืขื˜ืึธื“ ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื–ืขืŸ ื“ืขื ื•ื•ืขืจื˜ืขืจื‘ื•ืš ืžื™ื˜ ื“ื™ ืขื ื˜ืคืขืจ ืงืึธื“ (ืกื˜ืึทื˜ื•ืก_ืงืึธื“ืข) ืื•ืŸ ื“ืขืจ ืขื ื˜ืคืขืจ ื’ื•ืฃ (ื’ื•ืฃ).

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']}

error_message

ื“ื™ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืื™ื– ื‘ืืจืขื›ื˜ื™ื’ื˜ ื‘ืœื•ื™ื– ื•ื•ืขืŸ ืึท ื˜ืขื•ืช ืื™ื– ืคืืจื’ืขืงื•ืžืขืŸ ื‘ืฉืขืช ืคึผืจืึทืกืขืกื™ื ื’ ื“ื™ ืึทืคึผื™ ื‘ืขื˜ืŸ (ืขื ื˜ืคืขืจ ืงืึธื“ ืงื™ื™ืŸ 200). ื‘ื™ื™ึทืฉืคึผื™ืœ ืจืขื–ื•ืœื˜ืึทื˜

In [107]: api_versions.error_message                                            
Out[107]: 'code: generic_err_invalid_parameter_namenmessage: Unrecognized parameter [1]n'

ื ื•ืฆื™ืง ื‘ื™ื™ืฉืคื™ืœืŸ

ื“ื™ ืคืืœื’ืขื ื“ืข ื–ืขื ืขืŸ ื‘ื™ื™ืฉืคื™ืœืŸ ื•ื•ืึธืก ื ื•ืฆืŸ ื“ื™ ืึทืคึผื™ ืงืึทืœืœืก ื•ื•ืึธืก ื–ืขื ืขืŸ ืฆื•ื’ืขื’ืขื‘ืŸ ืื™ืŸ Management API 1.6.

ืขืจืฉื˜ืขืจ, ืœืึธื–ืŸ ืก ืงื•ืง ื•ื•ื™ ืงืึทืœืœืก ืึทืจื‘ืขื˜ ืœื™ื™ื’ืŸ-ื‘ืึทืœืขื‘ืึธืก ะธ ืœื™ื™ื’ืŸ-ืึทื“ืจืขืก-ืงื™ื™ื˜. ื–ืืœ ืก ื–ืึธื’ืŸ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉืึทืคึฟืŸ ืึทืœืข IP ืึทื“ืจืขืกืขืก ืคื•ืŸ ื“ื™ ืกื•ื‘ื ืขื˜ 192.168.0.0/24, ื“ื™ ืœืขืฆื˜ืข ืึธืงื˜ืขื˜ ืคื•ืŸ ื•ื•ืึธืก ืื™ื– 5, ื•ื•ื™ ืึทื‘ื“ื–ืฉืขืงืฅ ืคื•ืŸ ื“ืขืจ ื‘ืึทืœืขื‘ืึธืก ื˜ื™ืคึผ, ืื•ืŸ ืฉืจื™ื™ึทื‘ืŸ ืึทืœืข ืื ื“ืขืจืข IP ืึทื“ืจืขืกืขืก ื•ื•ื™ ืึทื‘ื“ื–ืฉืขืงืฅ ืคื•ืŸ ื“ื™ ืึทื“ืจืขืก ืงื™ื™ื˜ ื˜ื™ืคึผ. ืื™ืŸ ื“ืขื ืคืึทืœ, ื•ื™ืกืฉืœื™ืกืŸ ื“ื™ ืกื•ื‘ื ืขื˜ ืึทื“ืจืขืก ืื•ืŸ ื‘ืจืึธื“ืงืึทืกื˜ ืึทื“ืจืขืก.

ืึทื–ื•ื™, ืื•ื ื˜ืŸ ืื™ื– ืึท ืฉืจื™ืคื˜ ื•ื•ืึธืก ืกืึทืœื•ื•ื– ื“ืขื ืคึผืจืึธื‘ืœืขื ืื•ืŸ ืงืจื™ื™ื™ืฅ 50 ืึทื‘ื“ื–ืฉืขืงืฅ ืคื•ืŸ ื“ืขืจ ื‘ืึทืœืขื‘ืึธืก ื˜ื™ืคึผ ืื•ืŸ 51 ืึทื‘ื“ื–ืฉืขืงืฅ ืคื•ืŸ ื“ื™ ืึทื“ืจืขืก ืงื™ื™ื˜ ื˜ื™ืคึผ. ืฆื• ืกืึธืœื•ื•ืข ื“ืขื ืคึผืจืึธื‘ืœืขื, 101 ืึทืคึผื™ ืงืึทืœืœืก ื–ืขื ืขืŸ ืคืืจืœืื ื’ื˜ (ื ื™ื˜ ืงืึทื•ื ื˜ื™ื ื’ ื“ื™ ืœืขืฆื˜ ืึทืจื•ื™ืกื’ืขื‘ืŸ ืจื•ืคืŸ). ืื•ื™ืš, ื ื™ืฆืŸ ื“ื™ Timeit ืžืึธื“ื•ืœืข, ืžื™ืจ ืจืขื›ืขื ืขืŸ ื“ื™ ืฆื™ื™ื˜ ืขืก ื ืขืžื˜ ืฆื• ื•ื™ืกืคื™ืจืŸ ื“ืขื ืฉืจื™ืคื˜ ื‘ื™ื– ื“ื™ ืขื ื“ืขืจื•ื ื’ืขืŸ ื–ืขื ืขืŸ ืืจื•ื™ืก.

ืฉืจื™ืคื˜ ื ื™ืฆืŸ ืœื™ื™ื’ืŸ-ื‘ืึทืœืขื‘ืึธืก ืื•ืŸ ืœื™ื™ื’ืŸ-ืึทื“ืจืขืก-ืงื™ื™ื˜

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 ืกืขืงื•ื ื“ืขืก ืฆื• ื•ื™ืกืคื™ืจืŸ, ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื“ื™ ืžืึทืกืข ืื•ื™ืฃ ื“ื™ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืกืขืจื•ื•ืขืจ.

ืื™ืฆื˜ ืœืึธื–ืŸ ืก ื–ืขืŸ ื•ื•ื™ ืฆื• ืกืึธืœื•ื•ืข ื“ื™ ื–ืขืœื‘ืข ืคึผืจืึธื‘ืœืขื ื ื™ืฆืŸ ืึท API ืจื•ืคืŸ ืœื™ื™ื’ืŸ-ืึธื‘ื“ื–ืฉืขืงืฅ-ืคึผืขืงืœ, ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื•ื•ืึธืก ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ ืื™ืŸ API ื•ื•ืขืจืกื™ืข 1.6. ื“ืขื ืจื•ืฃ ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืฉืึทืคึฟืŸ ืคื™ืœืข ืึทื‘ื“ื–ืฉืขืงืฅ ืื™ืŸ ืึทืžืึธืœ ืื™ืŸ ืื™ื™ืŸ ืึทืคึผื™ ื‘ืขื˜ืŸ. ื“ืขืจืฆื•, ื“ื™ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืึทื‘ื“ื–ืฉืขืงืฅ ืคื•ืŸ ืคืึทืจืฉื™ื“ืขื ืข ื˜ื™ื™ืคึผืก (ืœืžืฉืœ, ืžื—ื ื•ืช, ืกื•ื‘ื ืขืฅ ืื•ืŸ ืึทื“ืจืขืก ืจื™ื™ื ื“ื–ืฉืึทื–). ืื–ื•ื™, ืื•ื ื“ื–ืขืจ ืึทืจื‘ืขื˜ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืกืึทืœื•ื•ื“ ืื™ืŸ ื“ื™ ืคืจื™ื™ืžื•ื•ืขืจืง ืคื•ืŸ ืื™ื™ืŸ ืึทืคึผื™ ืจื•ืคืŸ.

ืฉืจื™ืคื˜ ื ื™ืฆืŸ ืœื™ื™ื’ืŸ-ืึธื‘ื“ื–ืฉืขืงืฅ-ืคึผืขืงืœ

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 ืกืขืงื•ื ื“ืขืก, ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื“ื™ ืžืึทืกืข ืื•ื™ืฃ ื“ื™ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืกืขืจื•ื•ืขืจ. ืึทื– ืื™ื–, ืื™ืŸ ื“ื•ืจื›ืฉื ื™ื˜ืœืขืš, ืื•ื™ืฃ 101 ืึทืคึผื™ ืึทื‘ื“ื–ืฉืขืงืฅ, ืึท ืคึผืขืงืœ ื˜ื™ืคึผ ืจื•ืคืŸ ืœื•ื™ืคื˜ 10 ืžืืœ ืคืึทืกื˜ืขืจ. ืื•ื™ืฃ ืึท ื’ืจืขืกืขืจืข ื ื•ืžืขืจ ืคื•ืŸ ืึทื‘ื“ื–ืฉืขืงืฅ ื“ื™ ื—ื™ืœื•ืง ื•ื•ืขื˜ ื–ื™ื™ืŸ ืืคื™ืœื• ืžืขืจ ื™ืžืคึผืจืขืกื™ื•ื•.

ืื™ืฆื˜ ืœืึธื–ืŸ ืก ื–ืขืŸ ื•ื•ื™ ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ืฉื˜ืขืœืŸ-ืึธื‘ื“ื–ืฉืขืงืฅ-ืคึผืขืงืœ. ื ื™ืฆืŸ ื“ืขื ืึทืคึผื™ ืจื•ืคืŸ, ืžื™ืจ ืงืขื ืขืŸ ืคืึทืจื ืขื ื˜ื•ื™ืฉืŸ ืงื™ื™ืŸ ืคึผืึทืจืึทืžืขื˜ืขืจ. ืœืึธืžื™ืจ ืฉื˜ืขืœืŸ ื“ื™ ืขืจืฉื˜ืขืจ ื”ืขืœืคื˜ ืคื•ืŸ ื“ื™ ืึทื“ืจืขืกืขืก ืคื•ืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ื‘ื™ื™ืฉืคึผื™ืœ (ืึทืจื•ื™ืฃ ืฆื• .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")

ืื™ืจ ืงืขื ืขืŸ ื•ื™ืกืžืขืงืŸ ืงื™ื™ืคืœ ืึทื‘ื“ื–ืฉืขืงืฅ ืื™ืŸ ืื™ื™ืŸ ืึทืคึผื™ ืจื•ืคืŸ ื ื™ืฆืŸ ื•ื™ืกืžืขืงืŸ-ืึธื‘ื“ื–ืฉืขืงืฅ-ืคึผืขืงืœ. ืื™ืฆื˜ ืœืึธื–ืŸ ืก ืงื•ืง ืื™ืŸ ืึท ืงืึธื“ ื‘ื™ื™ืฉืคึผื™ืœ ืึทื– ื“ื™ืœื™ืฅ ืึทืœืข ืžื—ื ื•ืช ื‘ืืฉืืคืŸ ืคืจื™ืขืจ ื“ื•ืจืš ืœื™ื™ื’ืŸ-ืึธื‘ื“ื–ืฉืขืงืฅ-ืคึผืขืงืœ.

ื“ื™ืœื™ื˜ื™ื ื’ ืึทื‘ื“ื–ืฉืขืงืฅ ื ื™ืฆืŸ ื•ื™ืกืžืขืงืŸ-ืึธื‘ื“ื–ืฉืขืงืฅ-ืคึผืขืงืœ

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)

ืึทืœืข ืคืึทื ื’ืงืฉืึทื ื– ื•ื•ืึธืก ื“ืขืจืฉื™ื™ึทื ืขืŸ ืื™ืŸ ื ื™ื™ึท ืจื™ืœื™ืกื™ื– ืคื•ืŸ ื˜ืฉืขืง ืคึผื•ื™ื ื˜ ื•ื•ื™ื™ื›ื•ื•ืืจื’ ืžื™ื“ ื‘ืึทืงื•ืžืขืŸ ืึทืคึผื™ ืงืึทืœืœืก. ืื–ื•ื™, ืื™ืŸ R80.40 ืึทื–ืึท "ืคึฟืขื™ึดืงื™ื™ื˜ืŸ" ื•ื•ื™ ืฆื•ืจื™ืงืงื•ืžืขืŸ ืฆื• ืจืขื•ื•ื™ื–ื™ืข ืื•ืŸ ืกืžืึทืจื˜ ื˜ืึทืกืง ืืจื•ื™ืก, ืื•ืŸ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืึทืคึผื™ ืจื•ืคื˜ ื–ืขื ืขืŸ ื’ืœื™ื™ืš ืฆื•ื’ืขื’ืจื™ื™ื˜ ืคึฟืึทืจ ื–ื™ื™. ื“ืขืจืฆื•, ืึทืœืข ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ื•ื•ืขืŸ ืžืึธื•ื•ื™ื ื’ ืคื•ืŸ ืœืขื’ืึทืกื™ ืงืึทื ืกืึธื•ืœื– ืฆื• ื•ื ื™ืคื™ืขื“ ืคึผืึธืœื™ื˜ื™ืง ืžืึธื“ืข ืื•ื™ืš ืึทืงื•ื•ื™ื™ืขืจื– ืึทืคึผื™ ืฉื˜ื™ืฆืŸ. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ื™ ืœืึทื ื’-ืึทื•ื•ื™ื™ื˜ืึทื“ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ืื™ืŸ ื•ื•ื™ื™ื›ื•ื•ืืจื’ ื•ื•ืขืจืกื™ืข R80.40 ืื™ื– ื’ืขื•ื•ืขืŸ ื“ื™ ืžืึทืš ืคื•ืŸ ื“ื™ HTTPS ื™ื ืกืคึผืขืงื˜ื™ืึธืŸ ืคึผืึธืœื™ื˜ื™ืง ืคื•ืŸ ืœืขื’ืึทืกื™ ืžืึธื“ืข ืฆื• ื•ื ื™ืคื™ืขื“ ืคึผืึธืœื™ื˜ื™ืง ืžืึธื“ืข, ืื•ืŸ ื“ื™ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ื’ืœื™ื™ืš ื‘ืืงื•ืžืขืŸ ืึทืคึผื™ ืงืึทืœืœืก. ื“ืึธ ืื™ื– ืึท ื‘ื™ื™ืฉืคึผื™ืœ ืคื•ืŸ ืงืึธื“ ื•ื•ืึธืก ืžื•ืกื™ืฃ ืึท ื”ืขืจืฉืŸ ืฆื• ื“ื™ ืฉืคึผื™ืฅ ืฉื˜ืขืœืข ืคื•ืŸ โ€‹โ€‹ื“ื™ 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")

ืคืœื™ืกื ื“ื™ืง ืคึผื™ื˜ื”ืึธืŸ ืกืงืจื™ืคึผืก ืื•ื™ืฃ ื“ื™ ื˜ืฉืขืง ืคึผื•ื™ื ื˜ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืกืขืจื•ื•ืขืจ

ืึทืœืฅ ืื™ื– ื“ื™ ื–ืขืœื‘ืข README.md ื›ึผื•ืœืœ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืื•ื™ืฃ ื•ื•ื™ ืฆื• ืœื•ื™ืคืŸ Python ืกืงืจื™ืคึผืก ื’ืœื™ื™ึทืš ืคึฟื•ืŸ ื“ื™ ืงืึธื ื˜ืจืึธืœ ืกืขืจื•ื•ืขืจ. ื“ืึธืก ืงืขืŸ ื–ื™ื™ืŸ ื‘ืึทืงื•ื•ืขื ื•ื•ืขืŸ ืื™ืจ ืงืขื ืขืŸ ื ื™ืฉื˜ ืคืึทืจื‘ื™ื ื“ืŸ ืฆื• ื“ื™ ืึทืคึผื™ ืกืขืจื•ื•ืขืจ ืคึฟื•ืŸ ืืŸ ืื ื“ืขืจ ืžืึทืฉื™ืŸ. ืื™ืš ืจืขืงืึธืจื“ืขื“ ืึท ื–ืขืงืก-ืžื™ื ื•ื˜ ื•ื•ื™ื“ืขื ืื™ืŸ ื•ื•ืึธืก ืื™ืš ืงื•ืง ืื™ืŸ ื™ื ืกื˜ืึธืœื™ื ื’ ื“ื™ ืžืึธื“ื•ืœืข cpapi ืื•ืŸ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืคื•ืŸ ืคืœื™ืกื ื“ื™ืง ืคึผื™ื˜ื”ืึธืŸ ืกืงืจื™ืคึผืก ืื•ื™ืฃ ื“ื™ ืงืึธื ื˜ืจืึธืœ ืกืขืจื•ื•ืขืจ. ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ, ืึท ืฉืจื™ืคื˜ ืื™ื– ืœื•ื™ืคืŸ ืึทื– ืึธื˜ืึทืžื™ื™ืฅ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคื•ืŸ ืึท ื ื™ื™ึท ื’ื™ื™ื˜ื•ื•ื™ื™ ืคึฟืึทืจ ืึท ืึทืจื‘ืขื˜ ืึทื–ืึท ื•ื•ื™ ื ืขืฅ ืึทื“ืึทื˜ื™ื ื’ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’. ืฆื•ื•ื™ืฉืŸ ื“ื™ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ื•ื•ืึธืก ืื™ืš ื’ืขื”ืื˜ ืฆื• ื”ืึทื ื“ืœืขืŸ ืžื™ื˜: ื“ื™ ืคื•ื ืงืฆื™ืข ืื™ื– ื ืึธืš ื ื™ืฉื˜ ืืจื•ื™ืก ืื™ืŸ Python 2.7 ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘, ืึทื–ื•ื™ ืฆื• ืคึผืจืึธืฆืขืก ื“ื™ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืึธืก ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ื’ื™ื™ื˜ ืืจื™ื™ืŸ, ืึท ืคึฟื•ื ืงืฆื™ืข ืื™ื– ื’ืขื ื™ืฆื˜ raw_input. ืึทื ื“ืขืจืฉ, ื“ื™ ืงืึธื“ ืื™ื– ื“ื™ ื–ืขืœื‘ืข ื•ื•ื™ ืคึฟืึทืจ ืœืึธื ื˜ืฉื™ื ื’ ืคึฟื•ืŸ ืื ื“ืขืจืข ืžืืฉื™ื ืขืŸ, ื ืึธืจ ืขืก ืื™ื– ืžืขืจ ื‘ืึทืงื•ื•ืขื ืฆื• ื ื•ืฆืŸ ื“ื™ ืคื•ื ืงืฆื™ืข login_as_root, ืึทื–ื•ื™ ื ื™ืฉื˜ ืฆื• ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข ื ืืžืขืŸ, ืคึผืึทืจืึธืœ ืื•ืŸ IP ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืกืขืจื•ื•ืขืจ ื•ื•ื™ื“ืขืจ.

ืฉืคึผื™ืœ ื•ื•ื™ื“ืขื

ืฉืจื™ืคื˜ ืคึฟืึทืจ ืฉื ืขืœ ืกืขื˜ืึทืคึผ ืคื•ืŸ ื–ื™ื›ืขืจื”ื™ื™ื˜ ื˜ืฉืขืงื•ืคึผ

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()

ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ ื˜ืขืงืข ืžื™ื˜ ืึท ืคึผืึทืจืึธืœ ื•ื•ืขืจื˜ืขืจื‘ื•ืš additional_pass.conf
{
"passwords" : ["malware","malicious","infected","Infected"],
"phrases" : ["password","Password","Pass","pass","codigo","key","pwd","ะฟะฐั€ะพะปัŒ","ะŸะฐั€ะพะปัŒ","ะšะปัŽั‡","ะบะปัŽั‡","ัˆะธั„ั€","ะจะธั„ั€"]
}

ืกืึธืฃ

ื“ืขืจ ืึทืจื˜ื™ืงืœ ื™ื’ื–ืึทืžืึทื ื– ื‘ืœื•ื™ื– ื“ื™ ื’ืจื•ื ื˜ ืคึผืึทืกืึทื‘ื™ืœืึทื˜ื™ื– ืคื•ืŸ ืึทืจื‘ืขื˜ Python SDK ืื•ืŸ ืžืึธื“ื•ืœืข cpapi(ื•ื•ื™ ืื™ืจ ืงืขืŸ ื”ืึธื‘ืŸ ื’ืขืกื˜, ื“ืึธืก ื–ืขื ืขืŸ ืึทืงืฉืœื™ ืกื™ื ืึธื ื™ืžืก), ืื•ืŸ ื“ื•ืจืš ืœืขืจื ืขืŸ ื“ืขื ืงืึธื“ ืื™ืŸ ื“ืขื ืžืึธื“ื•ืœืข ืื™ืจ ื•ื•ืขื˜ ืึทื ื˜ื“ืขืงืŸ ืืคื™ืœื• ืžืขืจ ืคึผืึทืกืึทื‘ื™ืœืึทื˜ื™ื– ืื™ืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืื™ื. ืขืก ืื™ื– ืžืขื’ืœืขืš ืึทื– ืื™ืจ ื•ื•ืขื˜ ื•ื•ืขืœืŸ ืฆื• ื”ืขืกืึธืคืข ืขืก ืžื™ื˜ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืงืœืืกืŸ, ืคืึทื ื’ืงืฉืึทื ื–, ืžืขื˜ื”ืึธื“ืก ืื•ืŸ ื•ื•ืขืจื™ืึทื‘ืึทืœื–. ืื™ืจ ืงืขื ื˜ ืฉื˜ืขื ื“ื™ืง ื˜ื™ื™ืœืŸ ื“ื™ื™ืŸ ืึทืจื‘ืขื˜ ืื•ืŸ ื–ืขืŸ ืื ื“ืขืจืข ืกืงืจื™ืคึผืก ืคึฟืึทืจ ื˜ืฉืขืง ืคึผื•ื™ื ื˜ ืื™ืŸ ื“ืขืจ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืงืึธื“ืขื”ื•ื‘ ืื™ืŸ ื“ืขืจ ืงื”ื™ืœื” CheckMates, ื•ื•ืึธืก ื‘ืจืขื ื’ื˜ ืฆื•ื–ืึทืžืขืŸ ื‘ื™ื™ื“ืข ืคึผืจืึธื“ื•ืงื˜ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืื•ืŸ ื™ื•ื–ืขืจื–.

ื’ืœื™ืงืœืขืš ืงืึธื“ื™ืจื•ื ื’ ืื•ืŸ ื“ืึทื ืงืขืŸ ืคึฟืึทืจ ืœื™ื™ืขื ืขืŸ ืฆื• ื“ื™ ืกื•ืฃ!

ืžืงื•ืจ: www.habr.com

ืงื•ื™ืคืŸ ืคืึทืจืœืึธื–ืœืขืš ื”ืึธืกื˜ื™ื ื’ ืคึฟืึทืจ ื–ื™ื™ื˜ืœืขืš ืžื™ื˜ DDoS ืฉื•ืฅ, VPS VDS ืกืขืจื•ื•ืขืจืก ๐Ÿ”ฅ ืงื•ื™ืคื˜ ืคืึทืจืœืขืกืœืขื›ืข ื•ื•ืขื‘ื–ื™ื™ื˜ืœ ื”ืึธืกื˜ื™ื ื’ ืžื™ื˜ DDoS ืฉื•ืฅ, VPS VDS ืกืขืจื•ื•ืขืจืก | ProHoster