เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‡เปˆเบฒเบเบ‚เบญเบ‡ Check Point API เบเบฑเบš Python SDK

เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‡เปˆเบฒเบเบ‚เบญเบ‡ Check Point API เบเบฑเบš Python SDKเบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบญเบฑเบ™เป€เบ•เบฑเบกเบ—เบตเปˆเบ‚เบญเบ‡เบ›เบฐเบ•เบดเบชเปเบฒเบžเบฑเบ™เบเบฑเบš APIs เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เป€เบœเบตเบเป€เบกเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™เบเบฑเบšเบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™, เป€เบกเบทเปˆเบญเบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป API เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบกเบทเปƒเบ™เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡ API. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบฑเบ™เบเบฑเบ‡เบ„เบปเบ‡ unnoticeable เบŠเบธเบ”เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบญเบšเปเบง Python (เบ•เปเปˆเป„เบ›เบ™เบตเป‰เป€เบญเบตเป‰เบ™เบงเปˆเบฒ Python SDK) เบชเปเบฒเบฅเบฑเบš Check Point Management API, เปเบ•เปˆเปƒเบ™ vain. เบกเบฑเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ เปเบฅเบฐเบœเบนเป‰เบ—เบตเปˆเบกเบฑเบเปƒเบŠเป‰เบฅเบฐเบšเบปเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป„เบ”เป‰เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™. Python เป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบฒเบกเบ™เบดเบเบปเบกเบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเปƒเบ™เบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰เปเบฅเบฐเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ•เบทเปˆเบกเบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡เปเบฅเบฐเบ—เบปเบšเบ—เบงเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ•เบปเป‰เบ™เบ•เป. Check Point API เบŠเบธเบ”เบžเบฑเบ”เบ—เบฐเบ™เบฒ Python. เบšเบปเบ”โ€‹เบ„เบงเบฒเบกโ€‹เบ™เบตเป‰โ€‹เป€เบ›เบฑเบ™โ€‹เบเบฒเบ™โ€‹เป€เบžเบตเปˆเบกโ€‹เป€เบ•เบตเบกโ€‹เบ—เบตเปˆโ€‹เบ”เบตโ€‹เป€เบฅเบตเบ”โ€‹เบเบฑเบšโ€‹เบšเบปเบ”โ€‹เบ„เบงเบฒเบกโ€‹เบญเบทเปˆเบ™โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบš Habrรฉโ€‹ เบเบงเบ”เป€เบšเบดเปˆเบ‡เบˆเบธเบ” R80.10 API. เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบœเปˆเบฒเบ™ CLI, scripts เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ‚เบฝเบ™เบชเบฐเบ„เบดเบšเป‚เบ”เบเปƒเบŠเป‰ Python SDK เปเบฅเบฐเป€เบšเบดเปˆเบ‡เบ—เบตเปˆเปƒเบเป‰เบŠเบดเบ”เบขเบนเปˆเปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเปƒเบซเบกเปˆเบ‚เบญเบ‡ Management API เปƒเบ™เบฎเบธเปˆเบ™ 1.6 (เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบ R80.40). เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบšเบปเบ”เบ„เบงเบฒเบก, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบกเบตเบ„เบงเบฒเบกเบฎเบนเป‰เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš APIs เปเบฅเบฐ Python.

Check Point เบเปเบฒเบฅเบฑเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒ API เบขเปˆเบฒเบ‡เบˆเบดเบ‡เบˆเบฑเบ‡ เปเบฅเบฐเปƒเบ™เบ‚เบฐเบ™เบฐเบ™เบตเป‰เบชเบดเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒเปเบฅเป‰เบง:

Python SDK เบ›เบฐเบˆเบธเบšเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบเบฑเบš API เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เปเบฅเบฐ Gaia API. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เบซเป‰เบญเบ‡เบฎเบฝเบ™, เบงเบดเบ—เบตเบเบฒเบ™เปเบฅเบฐเบ•เบปเบงเปเบ›เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”เปƒเบ™เป‚เบกเบ”เบนเบ™เบ™เบตเป‰.

เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‡เปˆเบฒเบเบ‚เบญเบ‡ Check Point API เบเบฑเบš Python SDK

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป‚เบกเบ”เบนเบ™

เป‚เบกเบ”เบนเบ™ cpapi เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เบขเปˆเบฒเบ‡โ€‹เบงเปˆเบญเบ‡โ€‹เป„เบงโ€‹เปเบฅเบฐโ€‹เป„เบ”เป‰โ€‹เบขเปˆเบฒเบ‡โ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹เบˆเบฒเบโ€‹ เบžเบทเป‰เบ™เบ—เบตเปˆเป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ Check Point เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เปƒเบ™ github เป‚เบ”เบเบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญ pip. เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เปเบกเปˆเบ™เบกเบตเบขเบนเปˆเปƒเบ™ README.md. เป‚เบกเบ”เบนเบ™เบ™เบตเป‰เบ–เบทเบเบ”เบฑเบ”เปเบ›เบ‡เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Python เบฎเบธเปˆเบ™ 2.7 เปเบฅเบฐ 3.7. เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰, เบˆเบฐเบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡เป‚เบ”เบเปƒเบŠเป‰ Python 3.7. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, Python SDK เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป„เบ”เป‰เป‚เบ”เบเบเบปเบ‡เบˆเบฒเบ Check Point Management Server (Smart Management), เปเบ•เปˆเบžเบงเบเป€เบ‚เบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ Python 2.7, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบฒเบเบชเบธเบ”เบ—เป‰เบฒเบเบˆเบฐเปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบฎเบธเปˆเบ™ 2.7. เบ—เบฑเบ™เบ—เบตเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป‚เบกเบ”เบนเบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต example_python2 ะธ example_python3.

เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™

เป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เป‚เบกเบ”เบนเบ™ cpapi, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบˆเบฒเบเป‚เบกเบ”เบนเบ™ cpapi เบขเปˆเบฒเบ‡โ€‹เบซเบ™เป‰เบญเบโ€‹เบชเบญเบ‡โ€‹เบซเป‰เบญเบ‡โ€‹เบฎเบฝเบ™โ€‹เบ—เบตเปˆโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹:

APIClient ะธ APIClientArgs

from cpapi import APIClient, APIClientArgs

ะšะปะฐัั APIClientArgs เบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ API, เปเบฅเบฐเบŠเบฑเป‰เบ™ APIClient เบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ•เปเปˆเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบเบฑเบš API.

เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ

เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ•เปˆเบฒเบ‡เป†เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš API, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบฎเบฝเบ™ APIClientArgs. เปƒเบ™เบซเบผเบฑเบเบเบฒเบ™, เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ‚เบญเบ‡เบกเบฑเบ™เบ–เบทเบ เบเบณ เบ™เบปเบ”เป„เบงเป‰เบฅเปˆเบงเบ‡ เปœเป‰เบฒ เปเบฅเบฐเป€เบกเบทเปˆเบญเปเบฅเปˆเบ™เบชเบฐเบ„เบดเบšเปƒเบ™เป€เบŠเบตเบšเป€เบงเบตเบ„เบงเบšเบ„เบธเบก, เบžเบงเบเบกเบฑเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฅเบฐเบšเบธ.

client_args = APIClientArgs()

เปเบ•เปˆเป€เบกเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เป‚เบฎเบ”เบ‚เบญเบ‡เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบก, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฅเบฐเบšเบธเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบ—เบตเปˆเบขเบนเปˆ IP เบซเบผเบทเบŠเบทเปˆเป‚เบฎเบ”เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ API (เบเบฑเบ‡เป€เบญเบตเป‰เบ™เบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™). เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ”เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปเบฅเบฐเบเปเบฒเบ™เบปเบ”เบกเบฑเบ™เบ—เบตเปˆเบขเบนเปˆ 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 เปเบกเปˆเบ™ intuitive เบเบฑเบšเบœเบนเป‰เบšเปเบฅเบดเบซเบฒเบ™ Check Point เปเบฅเบฐเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบ„เปเบฒเป€เบซเบฑเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก.

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบœเปˆเบฒเบ™ APIClient เปเบฅเบฐเบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบšเปเบฅเบดเบšเบปเบ”

ะšะปะฐัั APIClient เบงเบดเบ—เบตเบ—เบตเปˆเบชเบฐเบ”เบงเบเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบกเบฑเบ™เปเบกเปˆเบ™เบœเปˆเบฒเบ™เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™. เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡เบเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบŠเบฑเป‰เบ™ APIClient เปเบกเปˆเบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบ–เบทเบเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ.

with APIClient(client_args) as client:

เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบšเปเบฅเบดเบšเบปเบ”เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เบเบฒเบ™เป‚เบ—เป€เบ‚เบปเป‰เบฒเบฅเบฐเบšเบปเบšเป„เบ›เบซเบฒเป€เบŠเบตเบšเป€เบงเบต API เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เปเบ•เปˆเบกเบฑเบ™เบˆเบฐเป‚เบ—เบญเบญเบเป€เบกเบทเปˆเบญเบญเบญเบเบˆเบฒเบเบกเบฑเบ™. เบ–เป‰เบฒเบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบญเบญเบเบˆเบฒเบเบฅเบฐเบšเบปเบšเบซเบผเบฑเบ‡เบˆเบฒเบเบชเปเบฒเป€เบฅเบฑเบ”เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบเบฒเบ™เป‚เบ— API, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฅเบตเปˆเบกเป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เปƒเบŠเป‰เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™:

client = APIClient(clieng_args)

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ

เบงเบดเบ—เบตเบ—เบตเปˆเบ‡เปˆเบฒเบเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบˆเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบปเบ‡เบเบฑเบšเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปเบกเปˆเบ™เปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™ check_fingerprint. เบ–เป‰เบฒเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡ sha1 hash เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบ™เบดเป‰เบงเบกเบทเบ‚เบญเบ‡เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™ API เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบฅเบปเป‰เบกเป€เบซเบฅเบง (เบงเบดเบ—เบตเบเบฒเบ™เบชเบปเปˆเบ‡เบ„เบทเบ™ เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡), เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ™เบตเป‰เบกเบฑเบเบˆเบฐเป€เบเบตเบ”เบˆเบฒเบเบšเบฑเบ™เบซเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบขเบธเบ”เป€เบŠเบปเบฒเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เป‚เบ„เบ‡เบเบฒเบ™ (เบซเบผเบทเปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰เป‚เบญเบเบฒเบ”เบ—เบตเปˆเบˆเบฐเปเบเป‰เป„เบ‚เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ):

    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, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒเบ•เบทเปˆเบกเบญเบตเบเป€เบฅเบฑเบเบ™เป‰เบญเบ) เปƒเบšเบฎเบฑเบšเบฎเบญเบ‡ sha1 fingerprint เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ API. เปเบ•เปˆเบ–เป‰เบฒ, เป€เบกเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบฅเบฒเบเบ™เบดเป‰เบงเบกเบท sha1 เบ‚เบญเบ‡เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เป€เบŠเบตเบšเป€เบงเบต API, เบเบงเบ”เบžเบปเบšเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ” (เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบšเปเปˆเบฎเบนเป‰เบˆเบฑเบเบซเบผเบทเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡), เบงเบดเบ—เบตเบเบฒเบ™. check_fingerprint เบˆเบฐเปƒเบซเป‰เป‚เบญเบเบฒเบ”เบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบก / เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™ (เปเบ•เปˆเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เปเบ™เบฐเบ™เปเบฒเบžเบฝเบ‡เปเบ•เปˆเบ–เป‰เบฒเบชเบฐเบ„เบดเบšเบ–เบทเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ API เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡, เป€เบกเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš 127.0.0.1), เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ APIClientArgs - unsafe_auto_เบเบญเบกเบฎเบฑเบš (เป€เบšเบดเปˆเบ‡เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบš APIClientArgs เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เปƒเบ™ "เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ").

client_args = APIClientArgs(unsafe_auto_accept=True)

เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš API server

ะฃ APIClient เบกเบตเบซเบผเบฒเบเป€เบ–เบดเบ‡ 3 เบงเบดเบ—เบตเบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš API server, เปเบฅเบฐเปเบ•เปˆเบฅเบฐเบ„เบปเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเบ„เบงเบฒเบกเบซเบกเบฒเบ sid(session-id), เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปƒเบ™เปเบ•เปˆเบฅเบฐเบเบฒเบ™เป‚เบ— API เบ•เปเปˆเป„เบ›เปƒเบ™ header (เบŠเบทเปˆเปƒเบ™ header เบ‚เบญเบ‡เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰เปเบกเปˆเบ™. X-chkp-sid), เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰.

เบงเบดเบ—เบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš

เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบชเบนเปˆโ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เปเบฅเบฐโ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบœเปˆเบฒเบ™ (เปƒเบ™โ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡โ€‹, เบŠเบทเปˆโ€‹เบœเบนเป‰โ€‹เบšเปโ€‹เบฅเบดโ€‹เบซเบฒเบ™โ€‹เปเบฅเบฐโ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบœเปˆเบฒเบ™ 1q2w3e เบ–เบทเบโ€‹เบœเปˆเบฒเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบเบฒเบ™โ€‹เป‚เบ•เป‰โ€‹เบ–เบฝเบ‡โ€‹เบ•เปเบฒโ€‹เปเบซเบ™เปˆเบ‡โ€‹)โ€‹:

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

เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปเบกเปˆเบ™เบกเบตเบขเบนเปˆเปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš, เบ™เบตเป‰เปเบกเปˆเบ™เบŠเบทเปˆเปเบฅเบฐเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบžเบงเบเบกเบฑเบ™:

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

เบงเบดเบ—เบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš_with_api_key

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเปƒเบŠเป‰ api key (เบฎเบญเบ‡เบฎเบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเป€เบงเบตเบŠเบฑเบ™เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™ R80.40/Management API v1.6, "3TsbPJ8ZKjaJGvFyoFqHFA==" เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปˆเบฒเบซเบผเบฑเบ API เบชเปเบฒเบฅเบฑเบšเบซเบ™เบถเปˆเบ‡เปƒเบ™เบœเบนเป‰เปƒเบŠเป‰เปƒเบ™เป€เบŠเบตเบšเป€เบงเบตเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ”เป‰เบงเบเบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบซเบผเบฑเบ API):

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

เปƒเบ™โ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹ login_with_api_key เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ”เบฝเบงเบเบฑเบ™เปเบกเปˆเบ™เบกเบตเบขเบนเปˆเปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™ เป€เบ‚เบปเป‰เบฒโ€‹เบชเบนเปˆโ€‹เบฅเบฐโ€‹เบšเบปเบš.

เบงเบดเบ—เบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš_as_root

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเป€เบ„เบทเปˆเบญเบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ”เป‰เบงเบเป€เบŠเบตเบšเป€เบงเบต API:

     login = client.login_as_root()

เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบชเบญเบ‡เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบกเบตเบขเบนเปˆเบชเปเบฒเบฅเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰:

domain=None, payload=None

เปเบฅเบฐเบชเบธเบ”เบ—เป‰เบฒเบ API เป€เบญเบตเป‰เบ™เบ•เบปเบงเป€เบญเบ‡

เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบชเบญเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป‚เบ— API เบœเปˆเบฒเบ™เบงเบดเบ—เบตเบเบฒเบ™ api_call ะธ api_query. เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เบญเบญเบเบงเปˆเบฒเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบžเบงเบเบกเบฑเบ™เปเบกเปˆเบ™เบซเบเบฑเบ‡.

api_call

เบงเบดเบ—เบตเบ™เบตเป‰เปเบกเปˆเบ™เปƒเบŠเป‰เป„เบ”เป‰เบเบฑเบšเบเบฒเบ™เป‚เบ—เปƒเบ”เป†. เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบœเปˆเบฒเบ™เบžเบฒเบเบชเปˆเบงเบ™เบชเบธเบ”เบ—เป‰เบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบ—เบซเบฒ api เปเบฅเบฐ payload เปƒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™. เบ–เป‰เบฒ payload เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ, เบกเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เป‚เบญเบ™เป„เบ”เป‰เบ—เบฑเบ‡เบซเบกเบปเบ”:

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, เบกเบตเบงเบดเบ—เบตเบเบฒเบ™ api_query เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบ™เบตเป‰เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป‚เบ—เบ—เบตเปˆเบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบ•เป‰เบญเบ‡เบเบฒเบ™: show-sessions, show-hosts, show-networks, show-wildcards, show-group, show-address-ranges, show-simple-gateways, show-simple-clusters, show-access-roles, show-trusted-client, เบŠเบธเบ”เบชเบฐเปเบ”เบ‡. เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบ„เปเบฒเบซเบผเบฒเบเปƒเบ™เบŠเบทเปˆเบ‚เบญเบ‡เบเบฒเบ™เป‚เบ— 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

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบตเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเปเบ›เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบฎเบฝเบ™ APIResponse(เบ—เบฑเบ‡เบžเบฒเบเปƒเบ™เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบšเปเบฅเบดเบšเบปเบ” เปเบฅเบฐเบžเบฒเบเบ™เบญเบ). เบขเบนเปˆเบ—เบตเปˆเบซเป‰เบญเบ‡เบฎเบฝเบ™ APIResponse 4 เบงเบดเบ—เบตเบเบฒเบ™เปเบฅเบฐ 5 เบ•เบปเบงเปเบ›เปเบกเปˆเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบฅเปˆเบงเบ‡เบซเบ™เป‰เบฒ;

เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‡เปˆเบฒเบเบ‚เบญเบ‡ Check Point API เบเบฑเบš Python SDK

เบ„เบงเบฒเบกเบชเปเบฒเป€เบฅเบฑเบ”

เป€เบžเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ, เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบˆเบฐเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบเบฒเบ™เป‚เบ— API เบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เปเบฅเบฐเบชเบปเปˆเบ‡เบ„เบทเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš. เบกเบตเบงเบดเบ—เบตเบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰ เบ„เบงเบฒเบกเบชเปเบฒเป€เบฅเบฑเบ”:

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

เบชเบปเปˆเบ‡เบ„เบทเบ™เป€เบ›เบฑเบ™ True เบ–เป‰เบฒเบเบฒเบ™เป‚เบ— API เบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ” (เบฅเบฐเบซเบฑเบ”เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡ - 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']}

error_message

เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบกเบตโ€‹เปƒเบซเป‰โ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เป„เบ”เป‰โ€‹เป€เบเบตเบ”โ€‹เบ‚เบถเป‰เบ™โ€‹เปƒเบ™โ€‹เบ‚เบฐโ€‹เบ™เบฐโ€‹เบ—เบตเปˆโ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบ API (เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบ•เบญเบšโ€‹เบชเบฐโ€‹เบซเบ™เบญเบ‡โ€‹ เบšเปเปˆ 200). เบ•เบปเบงเบขเปˆเบฒเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ”

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

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”

เบ•เปเปˆเป„เบ›เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเปƒเบŠเป‰เบเบฒเบ™เป‚เบ— API เบ—เบตเปˆเบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™ Management API 1.6.

เบ—เปเบฒเบญเบดเบ”, เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป‚เบ—เป€เบฎเบฑเบ”เบงเบฝเบ add-host ะธ add-address-range. เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบขเบนเปˆ IP เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบเปˆเบญเบ 192.168.0.0/24, octet เบชเบธเบ”เบ—เป‰เบฒเบเปเบกเปˆเบ™ 5, เป€เบ›เบฑเบ™เบงเบฑเบ”เบ–เบธเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เป€เบˆเบปเป‰เบฒเบžเบฒเบš, เปเบฅเบฐเบ‚เบฝเบ™เบ—เบตเปˆเบขเบนเปˆ IP เบญเบทเปˆเบ™เป†เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบ›เบฑเบ™เบงเบฑเบ”เบ–เบธเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบŠเปˆเบงเบ‡เบ—เบตเปˆเบขเบนเปˆ. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบเบปเบเป€เบงเบฑเป‰เบ™เบ—เบตเปˆเบขเบนเปˆ subnet เปเบฅเบฐเบ—เบตเปˆเบขเบนเปˆเบญเบญเบเบญเบฒเบเบฒเบ”.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเบ„เบดเบšเบ—เบตเปˆเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เปเบฅเบฐเบชเป‰เบฒเบ‡ 50 เบงเบฑเบ”เบ–เบธเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เป€เบˆเบปเป‰เบฒเบžเบฒเบšเปเบฅเบฐ 51 เบงเบฑเบ”เบ–เบธเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบขเบนเปˆ. เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ, 101 เบเบฒเบ™เป‚เบ— API เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ (เบšเปเปˆเบ™เบฑเบšเบเบฒเบ™เป‚เบ—เบญเบญเบเบชเบธเบ”เบ—เป‰เบฒเบ). เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป‚เบกเบ”เบนเบ™ timeit, เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เป„เบฅเปˆเป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ” script เบˆเบปเบ™เบเปˆเบงเบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบˆเบฐเบ–เบทเบเป€เบœเบตเบเปเบœเปˆ.

เบชเบฐเบ„เบฃเบดเบšเป‚เบ”เบเปƒเบŠเป‰ 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')

เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบซเป‰เบญเบ‡เบ—เบปเบ”เบฅเบญเบ‡เบ‚เบญเบ‡เบ‚เป‰เบญเบ, script เบ™เบตเป‰เปƒเบŠเป‰เป€เบงเบฅเบฒเบฅเบฐเบซเบงเปˆเบฒเบ‡ 30 เบซเบฒ 50 เบงเบดเบ™เบฒเบ—เบตเป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”, เบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เป‚เบซเบผเบ”เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™.

เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ”เบฝเบงเบเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เป‚เบ— API add-objects-batch, เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ—เบตเปˆเป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™ API เบฎเบธเปˆเบ™ 1.6. เบเบฒเบ™เป‚เบ—เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเป‰เบฒเบ‡เบงเบฑเบ”เบ–เบธเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เปƒเบ™เบซเบ™เบถเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป API. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบงเบฑเบ”เบ–เบธเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป† (เบ•เบปเบงเบขเปˆเบฒเบ‡, hosts, subnets เปเบฅเบฐเป„เบฅเบเบฐเบ—เบตเปˆเบขเบนเปˆ). เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบ”เป‰เบžเบฒเบเปƒเบ™เบเบญเบšเบ‚เบญเบ‡เบเบฒเบ™เป‚เบ— 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 เบงเบดเบ™เบฒเบ—เบต, เบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เป‚เบซเบผเบ”เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เป‚เบ”เบเบชเบฐเป€เบฅเปˆเบ, เปƒเบ™ 101 เบงเบฑเบ”เบ–เบธ API, เบเบฒเบ™เป‚เบ—เบ›เบฐเป€เบžเบ” batch เปเบฅเปˆเบ™เป„เบงเบเบงเปˆเบฒ 10 เป€เบ—เบปเปˆเบฒ. เปƒเบ™เบˆเปเบฒเบ™เบงเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธ, เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฐเบ›เบฐเบ—เบฑเบšเปƒเบˆเบซเบผเบฒเบ.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปƒเบซเป‰เป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบฎเปˆเบงเบกเบเบฑเบš set-objects-batch. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เป‚เบ— API เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเป€เบ›เบฑเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบผเบงเบ‡เบซเบผเบฒเบ. เปƒเบซเป‰เบเปเบฒเบ™เบปเบ”เป€เบ„เบดเปˆเบ‡เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบ—เบตเปˆเบขเบนเปˆเบˆเบฒเบเบ•เบปเบงเบขเปˆเบฒเบ‡เบเปˆเบญเบ™เบซเบ™เป‰เบฒ (เป€เบ–เบดเบ‡ .124 hosts, เปเบฅเบฐ ranges เป€เบเบตเบ™เป„เบ›) เป„เบ›เบซเบฒ color sienna, เปเบฅเบฐเบเปเบฒเบซเบ™เบปเบ”เบชเบต khaki เบเบฑเบšเป€เบ„เบดเปˆเบ‡เบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เบ—เบตเปˆเบขเบนเปˆ.

เบเบฒเบ™เบ›เปˆเบฝเบ™เบชเบตเบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ

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 เบ”เบฝเบงเป‚เบ”เบเปƒเบŠเป‰ delete-objects-batch. เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบฅเบถเบšเป‚เบฎเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบชเป‰เบฒเบ‡เบœเปˆเบฒเบ™เบกเบฒเบœเปˆเบฒเบ™ 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)

เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบฅเบธเป‰เบ™เปƒเปเปˆเบ‚เบญเบ‡เบŠเบญเบšเปเบง Check Point เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป‚เบ— API เบ—เบฑเบ™เบ—เบต. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบ™ R80.40 "เบฅเบฑเบเบชเบฐเบ™เบฐ" เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบ›เบฑเบ™ Revert to revision เปเบฅเบฐ Smart Task เบ›เบฒเบเบปเบ”, เปเบฅเบฐเบเบฒเบ™เป‚เบ— API เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบเบฐเบเบฝเบกเบ—เบฑเบ™เบ—เบตเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒ. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเป‰เบฒเบเบˆเบฒเบ Legacy consoles เบเบฑเบšเบฎเบนเบšเปเบšเบšเบ™เบฐเป‚เบเบšเบฒเบ Unified เบเบฑเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ API. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”เบ—เบตเปˆเบฅเปเบ„เบญเบเบกเบฒเบ”เบปเบ™เบ™เบฒเบ™เปƒเบ™เบŠเบญเบšเปเบงเป€เบงเบตเบŠเบฑเปˆเบ™ R80.40 เปเบกเปˆเบ™เบเบฒเบ™เบเป‰เบฒเบเบ™เบฐเป‚เบเบšเบฒเบเบเบฒเบ™เบเบงเบ”เบชเบญเบš HTTPS เบˆเบฒเบเป‚เปเบ” Legacy เป„เบ›เบชเบนเปˆเป‚เปเบ”เบ™เบฐเป‚เบเบšเบฒเบเบฅเบงเบก, เปเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป‚เบ— 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")

เปเบฅเปˆเบ™เบชเบฐเบ„เบฃเบดเบš Python เบขเบนเปˆเปƒเบ™เป€เบŠเบตเบšเป€เบงเบตเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™ Check Point

เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ„เบทเบเบฑเบ™ README.md เบกเบตเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเปเบฅเปˆเบ™เบชเบฐเบ„เบฃเบดเบš Python เป‚เบ”เบเบเบปเบ‡เบˆเบฒเบเป€เบŠเบตเบšเป€เบงเบตเบ„เบงเบšเบ„เบธเบก. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบชเบฐเบ”เบงเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ API เบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เบญเบทเปˆเบ™. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบšเบฑเบ™เบ—เบถเบเบงเบดเบ”เบตเป‚เบญเบซเบปเบเบ™เบฒเบ—เบตเบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบšเบดเปˆเบ‡เบขเบนเปˆเปƒเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป‚เบกเบ”เบนเบ™ cpapi เปเบฅเบฐเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰เบชเบฐเบ„เบฃเบดเบš Python เปƒเบ™เป€เบŠเบตเบšเป€เบงเบตเบ„เบงเบšเบ„เบธเบก. เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™, script เปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบตเปˆเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ›เบฐเบ•เบนเปƒเบซเบกเปˆเบชเปเบฒเบฅเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบ„เบทเบญเบ‚เปˆเบฒเบ. เบเบงเบ”เบเบฒเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž. เปƒเบ™เบšเบฑเบ™เบ”เบฒเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบš: เบŸเบฑเบ‡เบŠเบฑเบ™เบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™ Python 2.7 เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบžเบทเปˆเบญเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เป€เบ‚เบปเป‰เบฒเบกเบฒ, เบซเบ™เป‰เบฒเบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰ raw_input. เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบฅเบฐเบซเบฑเบ”เปเบกเปˆเบ™เบ„เบทเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เบญเบทเปˆเบ™เป†, เบžเบฝเบ‡เปเบ•เปˆเบกเบฑเบ™เบชเบฐเบ”เบงเบเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™ login_as_root, เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบฅเบฐเบšเบธเบŠเบทเปˆเบœเบนเป‰เปƒเบŠเป‰เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡, เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เปเบฅเบฐเบ—เบตเปˆเบขเบนเปˆ IP เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡.

เบซเบผเบดเป‰เบ™เบงเบดเบ”เบตเป‚เบญ

Script เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป„เบงเบ‚เบญเบ‡ Security CheckUp

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(เบ•เบฒเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบ„เบฒเบ”เป€เบ”เบปเบฒ, เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ„เปเบฒเบชเบฑเบšเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™), เปเบฅเบฐเป‚เบ”เบเบเบฒเบ™เบชเบถเบเบชเบฒเบฅเบฐเบซเบฑเบ”เปƒเบ™เป‚เบกเบ”เบนเบ™เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเบฐเบ„เบปเป‰เบ™เบžเบปเบšเป‚เบญเบเบฒเบ”เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบกเบฑเบ™. เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบชเบตเบกเบกเบฑเบ™เบ”เป‰เบงเบเบซเป‰เบญเบ‡เบฎเบฝเบ™, เบซเบ™เป‰เบฒเบ—เบตเปˆ, เบงเบดเบ—เบตเบเบฒเบ™เปเบฅเบฐเบ•เบปเบงเปเบ›เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบšเปˆเบ‡เบ›เบฑเบ™เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเป€เบšเบดเปˆเบ‡เบชเบฐเบ„เบดเบšเบญเบทเปˆเบ™เบชเปเบฒเบฅเบฑเบš Check Point เปƒเบ™เบชเปˆเบงเบ™ CodeHub เบขเบนเปˆเปƒเบ™เบŠเบธเบกเบŠเบปเบ™ CheckMates, เป€เบŠเบดเปˆเบ‡เบ™เปเบฒเป€เบญเบปเบฒเบ—เบฑเบ‡เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™.

เบเบดเบ™เบ”เบต coding เปเบฅเบฐเบ‚เปเบ‚เบญเบšเปƒเบˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบปเบ™เบˆเบปเบš!

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เบŠเบทเป‰เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ DDoS, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ VPS VDS ๐Ÿ”ฅ เบŠเบทเป‰เป€เบงเบฑเบšเป„เบŠเบ—เปŒเป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบ”เป‰เบงเบเบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™ DDoS, เป€เบŠเบตเบšเป€เบงเบต VPS VDS | ProHoster