ืื ืคืื ืืึทืื ืคืื ืื ืืขืจืึทืงืฉืึทื ืืื APIs ืืื ืื ืืคืืขืงื ืืืขื ืืขืืืืื ื ืฆืืืึทืืขื ืืื ืคึผืจืึธืืจืึทื ืงืึธื, ืืืขื ืขืก ืืื ืืขืืืขื ืฆื ืืื ืึทืืืงืึทืืื ืืืฉืขื ืขืจืืื API ืจืืงืืืขืก ืืื ืืืฉืืจืื ืคึฟืึทืจ ืึทื ืึทืืืืืื ื API ืจืขืกืคึผืึธื ืกืขืก. ืึธืืขืจ, ืขืก ื ืึธื ืืืืืื ืึทื ื ืึธืืืืกืึทืืึทื ืคึผืืืืึธื ืืืืืืืืืจื ืึทื ืืืืืงืืื ื ืงืื (ืืขืจื ืึธื ืจืืคืขืจื ืฆื ืืื Python SDK) ืคึฟืึทืจ ืืฉืขืง ืคึผืืื ื ืืึทื ืึทืืขืืขื ื ืึทืคึผื, ืืืข ืจ ืืืืืืกื . ืขืก ืกืืืคึผืืึทืคืืื ืืืืืืืืง ืื ืืขืื ืคืื ืืขืืืขืืึธืคึผืขืจืก ืืื ืึธืืึทืืืืฉืึทื ืขื ืืืืืึทืกืฅ. ืคึผืืืืึธื ืืื ืคืืจืืื ื ืจืืืืง ืคึผืึธืคึผืืืึทืจืืืขื ืืขืฆืื ืก ืืื ืืื ืืึทืฉืืึธืกื ืฆื ืคึผืืึธืืืืจื ืืขื ืจืืก ืืื ืึธืคึผืฉืึทืฆื ืื ืืืืคึผื ืคึฟืขืึดืงืืืื. . ืืขืจ ืึทืจืืืงื ืืื ื ืืื ืึท ืืืกืืขืฆืืืื ื ืืขืจืฆื ืฆื ืื ืื ืืขืจ ืึทืจืืืงื ืืืืฃ Habrรฉ . ืืืจ ืืืขืื ืงืืงื ืืื ืฆื ืฉืจืืึทืื ืกืงืจืืคึผืก ื ืืฆื ืื Python SDK ืืื ื ืขืืขื ืึท ื ืขืขื ืืขืจ ืงืืง ืืื ืื ื ืืึทืข ืืึทื ืึทืืขืืขื ื ืึทืคึผื ืคืึทื ืืงืฉืึทื ืึทืืืื ืืื ืืืขืจืกืืข 1.6 (ืืขืฉืืืฆื ืกืืึทืจืืื ื ืคืื R80.40). ืฆื ืคึฟืึทืจืฉืืืื ืืขื ืึทืจืืืงื, ืืืจ ืืืขื ืืึทืจืคึฟื ืืงืขืจืืืง ืืืืกื ืคืื ืืจืืขืื ืืื APIs ืืื Python.
Check Point ืืื ืึทืงืืืืืื ืืขืืืขืืึธืคึผืื ื ืื API ืืื ืืื ืืขื ืืึธืืขื ื ืื ืคืืืืขื ืืข ืืขื ืขื ืืืคืจืืื:
- - ืึทืจืืขื ืืื ืื ืงืึธื ืืจืึธื ืกืขืจืืืขืจ ืืืจื ืึทืคึผื (ืืื ืื ืคืืืืงืืื ืฆื ืืืกืคืืจื ืกืงืจืืคึผืก ืืืืฃ ืืืืืืืืื ืงืึทื ืืจืึธืืื ืืืจื ืื ืงืึธื ืืจืึธื ืกืขืจืืืขืจ)
- - ืึทืจืืขื ืืื ืืืืขืจืืืื ืืืืืืืืื
- โ ืืจืืขืื ืืื ืึท ืืึทืืืงืึทืกืื ืืื ืื ืืฉืขืง ืคึผืืื ื ืืืึธืืงื
- - ืืจืืขืื ืืื ืืืืขื ืืืืขื ืืืืกืืงืืึทื ืืืืื ืืืืฃ ืืืืืืืืื
- - ืึทืจืืขื ืืื ืื SMB ืืืืืืืื ืคืึทืจืืืึทืืืื ื ืืืืขืจ ()
- - ืื ืืขืจืึทืงืฉืึทื ืืื IoT ืงืึทื ืืจืึธืืืขืจื
- - ืึทืจืืขื ืืื (SD-WAN ืืืืขืจืืืื ืืืืืื ื)
- - ืึทืจืืขื ืืื
ืื Python SDK ืืขืจืืืืึทื ืฉืืืฆื ืืืืื ืื ืืขืจืึทืงืฉืึทื ืืื ืื ืืึทื ืึทืืขืืขื ื ืึทืคึผื ืืื Gaia API. ืืืจ ืืืขืื ืงืืงื ืืื ืื ืืขืจืกื ืืืืืืืง ืงืืืกื, ืืขืืืึธืืก ืืื ืืืขืจืืึทืืึทืื ืืื ืืขื ืืึธืืืืข.

ืืึธืืืืข ืื ืกืืึทืืืจืื ื
ืืึธืืืืข cpapi ืื ืกืืึธืื ืืขืฉืืืื ื ืืื ืืืืื ืคึฟืื ืืืจื ืคึผืืคึผ. ืืืืืืื ืืึทื ืืึธื ืืืจืื ื ืื ืกืืจืึทืงืฉืึทื ื ืืขื ืขื ืื ืืืฆื ืืื . ืืขืจ ืืึธืืืืข ืืื ืฆืืืขืคืืกื ืฆื ืึทืจืืขืื ืืื 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=NoneLogin_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 ืืืขืจืืึทืืึทืื ืืขื ืขื ืคึผืจืขืืขืคืื ืขื, ืืืจ ืืืขืื ืืืืื ืขื ืืืืฃ ืื ืืขืจืกื ืืืืืืืง ืึธื ืขืก ืืื ืืขืจ ืืขืืึทื.

ืืขืจืคืึธืื
ืฆื ืึธื ืืืืื ืืื, ืขืก ืืืึธืื ืืืื ืึท ืืืืข ืืขืืึทื ืง ืฆื ืืึทืื ืืืืขืจ ืึทื ืื ืึทืคึผื ืจืืคื ืืื ืืขืืืขื ืืขืจืึธืื ืืื ืืืืืขืงืขืจื ืึท ืจืขืืืืืึทื. ืขืก ืืื ืึท ืืืคึฟื ืคึฟืึทืจ ืืขื ืืขืจืคืึธืื:
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")
ืคืืืกื ืืืง ืคึผืืืืึธื ืกืงืจืืคึผืก ืืืืฃ ืื ืืฉืขืง ืคึผืืื ื ืคืึทืจืืืึทืืืื ื ืกืขืจืืืขืจ
ืึทืืฅ ืืื ืื ืืขืืืข ืึผืืื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืืฃ ืืื ืฆื ืืืืคื 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(ืืื ืืืจ ืงืขื ืืึธืื ืืขืกื, ืืึธืก ืืขื ืขื ืึทืงืฉืื ืกืื ืึธื ืืืก), ืืื ืืืจื ืืขืจื ืขื ืืขื ืงืึธื ืืื ืืขื ืืึธืืืืข ืืืจ ืืืขื ืึทื ืืืขืงื ืืคืืื ืืขืจ ืคึผืึทืกืึทืืืืึทืืื ืืื ืืจืืขืื ืืื ืืื. ืขืก ืืื ืืขืืืขื ืึทื ืืืจ ืืืขื ืืืขืื ืฆื ืืขืกืึธืคืข ืขืก ืืื ืืืื ืืืืืขื ืข ืงืืืกื, ืคืึทื ืืงืฉืึทื ื, ืืขืืืึธืืก ืืื ืืืขืจืืึทืืึทืื. ืืืจ ืงืขื ื ืฉืืขื ืืืง ืืืืื ืืืื ืึทืจืืขื ืืื ืืขื ืื ืืขืจืข ืกืงืจืืคึผืก ืคึฟืึทืจ ืืฉืขืง ืคึผืืื ื ืืื ืืขืจ ืึธืคึผืืืืืื ื ืืื ืืขืจ ืงืืืื , ืืืึธืก ืืจืขื ืื ืฆืืืึทืืขื ืืืืืข ืคึผืจืึธืืืงื ืืขืืืขืืึธืคึผืขืจืก ืืื ืืืืขืจื.
ืืืืงืืขื ืงืึธืืืจืื ื ืืื ืืึทื ืงืขื ืคึฟืึทืจ ืืืืขื ืขื ืฆื ืื ืกืืฃ!
ืืงืืจ: www.habr.com
