API-āĻāϰ āϏāĻžāĻĨā§ āĻŽāĻŋāĻĨāϏā§āĻā§āϰāĻŋāϝāĻŧāĻž āĻāϰāĻžāϰ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻļāĻā§āϤāĻŋ āϝāĻāύ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽ āĻā§āĻĄā§āϰ āϏāĻžāĻĨā§ āĻāĻāϏāĻžāĻĨā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ āϤāĻāύ āĻĒā§āϰāĻāĻžāĻļāĻŋāϤ āĻšāϝāĻŧ, āϝāĻāύ API āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻž āĻŦāĻŋāĻļā§āϞā§āώāĻŖā§āϰ āĻāύā§āϝ āĻāϤāĻŋāĻļā§āϞāĻāĻžāĻŦā§ API āĻ
āύā§āϰā§āϧ āĻāĻŦāĻ āϏāϰāĻā§āĻāĻžāĻŽāĻā§āϞāĻŋ āϤā§āϰāĻŋ āĻāϰāĻž āϏāĻŽā§āĻāĻŦ āĻšāϝāĻŧāĨ¤ āϝāĻžāĻāĻšā§āĻ, āĻāĻāĻŋ āĻāĻāύāĻ āĻ
āϞāĻā§āώāĻŋāϤ āĻĨā§āĻā§ āϝāĻžāϝāĻŧ āĻĒāĻžāĻāĻĨāύ āϏāĻĢāĻāĻāϝāĻŧā§āϝāĻžāϰ āĻĄā§āĻā§āϞāĻĒāĻŽā§āύā§āĻ āĻāĻŋāĻ (āĻāϰ āĻĒāϰ⧠āĻĒāĻžāĻāĻĨāύ SDK āĻšāĻŋāϏāĻžāĻŦā§ āĻāϞā§āϞā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§) āĻāϰ āĻāύā§āϝ āĻĒāϝāĻŧā§āύā§āĻ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ API āĻā§āĻ āĻāϰā§āύ, āĻāĻŋāύā§āϤ⧠āύāĻŋāϰāϰā§āĻĨāĻ. āĻāĻāĻŋ āĻāϞā§āϞā§āĻāϝā§āĻā§āϝāĻāĻžāĻŦā§ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāϰ⧠āĻāĻŦāĻ āĻ
āĻā§āĻŽā§āĻļāύ āĻāϤā§āϏāĻžāĻšā§āĻĻā§āϰ āĻā§āĻŦāύāĻā§ āϏāĻšāĻ āĻāϰ⧠āϤā§āϞā§āĨ¤ āĻĒāĻžāĻāĻĨāύ āϏāĻŽā§āĻĒā§āϰāϤāĻŋ āĻĒā§āϰāĻā§āϰ āĻāύāĻĒā§āϰāĻŋāϝāĻŧāϤāĻž āĻ
āϰā§āĻāύ āĻāϰā§āĻā§ āĻāĻŦāĻ āĻāĻŽāĻŋ āĻļā§āύā§āϝāϏā§āĻĨāĻžāύ āĻĒā§āϰāĻŖ āĻāϰāĻžāϰ āĻāĻŦāĻ āĻĒā§āϰāϧāĻžāύ āĻŦā§āĻļāĻŋāώā§āĻā§āϝāĻā§āϞāĻŋ āĻĒāϰā§āϝāĻžāϞā§āĻāύāĻž āĻāϰāĻžāϰ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāϝāĻŧā§āĻāĻŋāĨ¤ . āĻāĻ āύāĻŋāĻŦāύā§āϧāĻāĻŋ HabrÊ-āĻāϰ āĻāĻĒāϰ āĻāϰā§āĻāĻāĻŋ āύāĻŋāĻŦāύā§āϧ⧠āĻāĻāĻāĻŋ āĻāĻŽā§āĻāĻžāϰ āϏāĻāϝā§āĻāύ āĻšāĻŋāϏā§āĻŦā§ āĻāĻžāĻ āĻāϰ⧠. āĻāĻŽāϰāĻž āĻĒāĻžāĻāĻĨāύ SDK āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻā§āĻāĻžāĻŦā§ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āϞāĻŋāĻāϤ⧠āĻšāϝāĻŧ āϤāĻž āĻĻā§āĻāĻŦ āĻāĻŦāĻ 1.6 āϏāĻāϏā§āĻāϰāĻŖā§ (R80.40 āĻĨā§āĻā§ āϏāĻŽāϰā§āĻĨāĻŋāϤ) āύāϤā§āύ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ API āĻāĻžāϰā§āϝāĻāĻžāϰāĻŋāϤāĻžāĻāĻŋ āĻāύāĻŋāώā§āĻ āĻāĻžāĻŦā§ āĻĻā§āĻāĻŦāĨ¤ āύāĻŋāĻŦāύā§āϧāĻāĻŋ āĻŦā§āĻāϤā§, āĻāĻĒāύāĻžāϰ API āĻāĻŦāĻ āĻĒāĻžāĻāĻĨāύā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāĻžāϰ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āĻā§āĻāĻžāύ āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤
āĻā§āĻ āĻĒāϝāĻŧā§āύā§āĻ āϏāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ API āĻŦāĻŋāĻāĻžāĻļ āĻāϰāĻā§ āĻāĻŦāĻ āĻāĻ āĻŽā§āĻšā§āϰā§āϤ⧠āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤāĻā§āϞāĻŋ āĻĒā§āϰāĻāĻžāĻļ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§:
- â API āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāύā§āĻā§āϰā§āϞ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰā§āύ (āĻāĻŦāĻ āĻāύā§āĻā§āϰā§āϞ āϏāĻžāϰā§āĻāĻžāϰ āĻĻā§āĻŦāĻžāϰāĻž āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŋāϤ āĻā§āĻāĻāϝāĻŧā§āϤ⧠āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāĻžāϞāĻžāύā§āϰ āĻā§āώāĻŽāϤāĻž)
- - āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž āĻā§āĻāĻāϝāĻŧā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰā§āύ
- â āĻā§āĻ āĻĒāϝāĻŧā§āύā§āĻ āĻā§āϞāĻžāĻāĻĄā§ āĻāĻāĻāĻŋ āϏā§āϝāĻžāύā§āĻĄāĻŦāĻā§āϏā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāĻž
- â āĻā§āĻāĻāϝāĻŧā§āϤ⧠āĻāĻāĻĄā§āύā§āĻāĻŋāĻāĻŋ āĻ ā§āϝāĻžāĻāϝāĻŧāĻžāϰāύā§āϏ āĻŦā§āϞā§āĻĄ āĻĻāĻŋāϝāĻŧā§ āĻāĻžāĻ āĻāϰāĻž
- - āĻāϏāĻāĻŽāĻŦāĻŋ āĻā§āĻāĻāϝāĻŧā§ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ āĻĒā§āϰā§āĻāĻžāϞā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰā§āύ ()
- - āĻāĻāĻāĻāĻŋ āĻāύā§āĻā§āϰā§āϞāĻžāϰā§āϰ āϏāĻžāĻĨā§ āĻŽāĻŋāĻĨāϏā§āĻā§āϰāĻŋāϝāĻŧāĻž
- - āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰ⧠(SD-WAN āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž āϏāĻŽāĻžāϧāĻžāύ)
- - āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰā§
Python SDK āĻŦāϰā§āϤāĻŽāĻžāύ⧠āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ āĻāĻĒāĻŋāĻāĻ āĻāĻŦāĻ āĻāϰ āϏāĻžāĻĨā§ āĻŽāĻŋāĻĨāϏā§āĻā§āϰāĻŋāϝāĻŧāĻž āϏāĻŽāϰā§āĻĨāύ āĻāϰ⧠Gaia API. āĻāĻŽāϰāĻž āĻāĻ āĻŽāĻĄāĻŋāĻāϞ⧠āϏāĻŦāĻā§āϝāĻŧā§ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻā§āϞāĻžāϏ, āĻĒāĻĻā§āϧāϤāĻŋ āĻāĻŦāĻ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻĻā§āĻāĻŦāĨ¤

āĻŽāĻĄāĻŋāĻāϞ āĻāύāϏā§āĻāϞ āĻāϰāĻž āĻšāĻā§āĻā§
āĻŽāĻĄāĻŋāĻāϞ cpapi āĻĨā§āĻā§ āĻĻā§āϰā§āϤ āĻāĻŦāĻ āϏāĻšāĻā§ āĻāύāϏā§āĻāϞ āĻāϰ⧠āϏāĻžāĻšāĻžāϝā§āϝ⧠āĻŦā§āĻāĻŋ. āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ āĻāύāϏā§āĻāϞā§āĻļāύ āύāĻŋāϰā§āĻĻā§āĻļāĻžāĻŦāϞ⧠āĻĒāĻžāĻāϝāĻŧāĻž āϝāĻžāϝāĻŧ . āĻāĻ āĻŽāĻĄāĻŋāĻāϞāĻāĻŋ āĻĒāĻžāĻāĻĨāύ āϏāĻāϏā§āĻāϰāĻŖ 2.7 āĻāĻŦāĻ 3.7 āĻāϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāĻžāϰ āĻāύā§āϝ āĻ āĻāĻŋāϝā§āĻāĻŋāϤ āĻšāϝāĻŧā§āĻā§āĨ¤ āĻāĻ āύāĻŋāĻŦāύā§āϧā§, āĻĒāĻžāĻāĻĨāύ 3.7 āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻĻāĻžāĻšāϰāĻŖ āĻĻā§āĻāϝāĻŧāĻž āĻšāĻŦā§āĨ¤ āϝāĻžāĻāĻšā§āĻ, Python SDK āĻā§āĻ āĻĒāϝāĻŧā§āύā§āĻ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ āϏāĻžāϰā§āĻāĻžāϰ (āϏā§āĻŽāĻžāϰā§āĻ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ) āĻĨā§āĻā§ āϏāϰāĻžāϏāϰāĻŋ āĻāĻžāϞāĻžāύ⧠āϝā§āϤ⧠āĻĒāĻžāϰā§, āĻāĻŋāύā§āϤ⧠āϤāĻžāϰāĻž āĻļā§āϧā§āĻŽāĻžāϤā§āϰ Python 2.7 āϏāĻŽāϰā§āĻĨāύ āĻāϰā§, āϤāĻžāĻ āĻļā§āώ āĻŦāĻŋāĻāĻžāĻāĻāĻŋ 2.7 āϏāĻāϏā§āĻāϰāĻŖā§āϰ āĻā§āĻĄ āĻĒā§āϰāĻĻāĻžāύ āĻāϰāĻŦā§āĨ¤ āĻŽāĻĄāĻŋāĻāϞ āĻāύāϏā§āĻāϞ āĻāϰāĻžāϰ āĻ āĻŦāĻŋāϞāĻŽā§āĻŦā§, āĻāĻŽāĻŋ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋāϰ āĻāĻĻāĻžāĻšāϰāĻŖāĻā§āϞāĻŋ āĻĻā§āĻāĻžāϰ āĻĒāϰāĻžāĻŽāϰā§āĻļ āĻĻāĻŋāĻ āĻāĻĻāĻžāĻšāϰāĻŖ_āĻĒāĻžāĻāĻĨāύ⧍ и āĻāĻĻāĻžāĻšāϰāĻŖ_āĻĒāĻžāĻāĻĨāύ⧍.
āĻā§āĻāĻŋāĻ āϏā§āĻāĻžāϰā§āĻā§āĻĄ
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')āĻāĻĒāĻŋāĻāĻ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰ⧠āĻāĻŽāύ āϏāĻŽāϏā§āϤ āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋ āĻāĻŦāĻ āϤāĻžāĻĻā§āϰ āĻĄāĻŋāĻĢāϞā§āĻ āĻŽāĻžāύāĻā§āϞāĻŋ āĻĻā§āĻā§āύ:
APIClientArgs āĻā§āϞāĻžāϏā§āϰ __init__ āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻāϰā§āĻā§āĻŽā§āύā§āĻ
class APIClientArgs:
"""
This class provides arguments for APIClient configuration.
All the arguments are configured with their default values.
"""
# port is set to None by default, but it gets replaced with 443 if not specified
# context possible values - web_api (default) or gaia_api
def __init__(self, port=None, fingerprint=None, sid=None, server="127.0.0.1", http_debug_level=0,
api_calls=None, debug_file="", proxy_host=None, proxy_port=8080,
api_version=None, unsafe=False, unsafe_auto_accept=False, context="web_api"):
self.port = port
# management server fingerprint
self.fingerprint = fingerprint
# session-id.
self.sid = sid
# management server name or IP-address
self.server = server
# debug level
self.http_debug_level = http_debug_level
# an array with all the api calls (for debug purposes)
self.api_calls = api_calls if api_calls else []
# name of debug file. If left empty, debug data will not be saved to disk.
self.debug_file = debug_file
# HTTP proxy server address (without "http://")
self.proxy_host = proxy_host
# HTTP proxy port
self.proxy_port = proxy_port
# Management server's API version
self.api_version = api_version
# Indicates that the client should not check the server's certificate
self.unsafe = unsafe
# Indicates that the client should automatically accept and save the server's certificate
self.unsafe_auto_accept = unsafe_auto_accept
# The context of using the client - defaults to web_api
self.context = contextāĻāĻŽāĻŋ āĻŦāĻŋāĻļā§āĻŦāĻžāϏ āĻāϰāĻŋ āϝ⧠APIClientArgs āĻā§āϞāĻžāϏā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖāĻā§āϞāĻŋāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰ⧠āĻāĻŽāύ āϝā§āĻā§āϤāĻŋāĻā§āϞāĻŋ āĻā§āĻ āĻĒāϝāĻŧā§āύā§āĻ āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύāĻŋāϏā§āĻā§āϰā§āĻāϰāĻĻā§āϰ āĻāύā§āϝ āϏā§āĻŦāĻā§āĻāĻžāϤ āĻāĻŦāĻ āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻŽāύā§āϤāĻŦā§āϝā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āύā§āĻ⧎
APIClient āĻāĻŦāĻ āĻĒā§āϰāϏāĻā§āĻ āĻĒāϰāĻŋāĻāĻžāϞāĻā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϏāĻāϝā§āĻ āĻāϰāĻž āĻšāĻā§āĻā§
ĐĐģаŅŅ APIClient āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āϏāĻŦāĻā§āϝāĻŧā§ āϏā§āĻŦāĻŋāϧāĻžāĻāύāĻ āĻāĻĒāĻžāϝāĻŧ āĻšāϞ āĻĒā§āϰāϏāĻā§āĻ āĻĒāϰāĻŋāĻāĻžāϞāĻā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§āĨ¤ APIClient āĻā§āϞāĻžāϏā§āϰ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖā§ āϝāĻž āĻĒāĻžāϏ āĻāϰāϤ⧠āĻšāĻŦā§ āϤāĻž āĻšāϞ āϏāĻāϝā§āĻ āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋ āϝāĻž āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āϧāĻžāĻĒā§ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤
with APIClient(client_args) as client:
āĻāύāĻā§āĻā§āϏāĻ āĻŽā§āϝāĻžāύā§āĻāĻžāϰ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ API āϏāĻžāϰā§āĻāĻžāϰ⧠āĻāĻāĻāĻŋ āϞāĻāĻāύ āĻāϞ āĻāϰāĻŦā§ āύāĻž, āϤāĻŦā§ āĻāĻāĻŋ āĻĨā§āĻā§ āĻĒā§āϰāϏā§āĻĨāĻžāύ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāĻāĻŋ āĻāĻāĻāĻŋ āϞāĻāĻāĻāĻ āĻāϞ āĻāϰāĻŦā§āĨ¤ āϝāĻĻāĻŋ āĻā§āύ⧠āĻāĻžāϰāĻŖā§ API āĻāϞāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻļā§āώ āĻāϰāĻžāϰ āĻĒāϰ⧠āϞāĻāĻāĻāĻā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āύāĻž āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻžāĻā§ āĻĒā§āϰāϏāĻā§āĻ āĻĒāϰāĻŋāĻāĻžāϞāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻž āĻāϰā§āĻ āĻāĻžāĻ āĻļā§āϰ⧠āĻāϰāϤ⧠āĻšāĻŦā§:
client = APIClient(clieng_args)āϏāĻāϝā§āĻ āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻž āĻšāĻā§āĻā§
āϏāĻāϝā§āĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋ āĻĒā§āϰāĻŖ āĻāϰ⧠āĻāĻŋāύāĻž āϤāĻž āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻžāϰ āϏāĻŦāĻā§āϝāĻŧā§ āϏāĻšāĻ āĻāĻĒāĻžāϝāĻŧ āĻšāϞ āĻĒāĻĻā§āϧāϤāĻŋāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻā§āĻ_āĻāĻā§āĻā§āϞā§āϰ āĻāĻžāĻĒ. āϏāĻžāϰā§āĻāĻžāϰ API āĻļāĻāϏāĻžāĻĒāϤā§āϰā§āϰ āĻāĻā§āĻā§āϞā§āϰ āĻāĻžāĻĒā§āϰ āĻāύā§āϝ sha1 āĻšā§āϝāĻžāĻļ āϏāĻŽāώā§āĻāĻŋāϰ āϝāĻžāĻāĻžāĻāĻāϰāĻŖ āĻŦā§āϝāϰā§āĻĨ āĻšāϞ⧠(āĻĒāĻĻā§āϧāϤāĻŋāĻāĻŋ āĻĢā§āϰāϤ āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧā§āĻā§ āĻŽāĻŋāĻĨā§āϝāĻž), āϤāĻžāĻšāϞ⧠āĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖāϤ āϏāĻāϝā§āĻ āϏāĻŽāϏā§āϝāĻžāϰ āĻāĻžāϰāĻŖā§ āĻšāϝāĻŧ āĻāĻŦāĻ āĻāĻŽāϰāĻž āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻāĻŋāϰ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻŦāύā§āϧ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋ (āĻŦāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āϏāĻāϝā§āĻ āĻĄā§āĻāĻž āϏāĻāĻļā§āϧāύ āĻāϰāĻžāϰ āϏā§āϝā§āĻ āĻĻāĻŋāϤ⧠āĻĒāĻžāϰāĻŋ):
if client.check_fingerprint() is False:
print("Could not get the server's fingerprint - Check connectivity with the server.")
exit(1)
āĻĻāϝāĻŧāĻž āĻāϰ⧠āύā§āĻ āĻāϰā§āύ āϝ⧠āĻāĻŦāĻŋāώā§āϝāϤ⧠āĻā§āϞāĻžāϏ APIClient āĻĒā§āϰāϤāĻŋāĻāĻŋ API āĻāϞ āĻā§āĻ āĻāϰāĻŦā§ (āĻĒāĻĻā§āϧāϤāĻŋ āĻāĻĒāĻŋāĻāĻ_āĻāϞ и api_query, āĻāĻŽāϰāĻž āϤāĻžāĻĻā§āϰ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϰāĻ āĻāĻŋāĻā§ āĻāĻĨāĻž āĻŦāϞāĻŦ) API āϏāĻžāϰā§āĻāĻžāϰ⧠sha1 āĻĢāĻŋāĻā§āĻāĻžāϰāĻĒā§āϰāĻŋāύā§āĻ āĻļāĻāϏāĻžāĻĒāϤā§āϰāĨ¤ āĻāĻŋāύā§āϤ⧠āϝāĻĻāĻŋ, API āϏāĻžāϰā§āĻāĻžāϰ āϏāĻžāϰā§āĻāĻŋāĻĢāĻŋāĻā§āĻā§āϰ sha1 āĻĢāĻŋāĻā§āĻāĻžāϰāĻĒā§āϰāĻŋāύā§āĻ āĻā§āĻ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻāĻāĻŋ āϤā§āϰā§āĻāĻŋ āϏāύāĻžāĻā§āϤ āĻāϰāĻž āĻšāϝāĻŧ (āĻļāĻāϏāĻžāĻĒāϤā§āϰāĻāĻŋ āĻ āĻāĻžāύāĻž āĻŦāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§), āĻĒāĻĻā§āϧāϤāĻŋāĻāĻŋ āĻā§āĻ_āĻāĻā§āĻā§āϞā§āϰ āĻāĻžāĻĒ āϏā§āĻĨāĻžāύā§āϝāĻŧ āĻŽā§āĻļāĻŋāύ⧠āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻāĻāĻŋ āϏāĻŽā§āĻĒāϰā§āĻā§ āϤāĻĨā§āϝ āϝā§āĻ/āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻžāϰ āϏā§āϝā§āĻ āĻĒā§āϰāĻĻāĻžāύ āĻāϰāĻŦā§āĨ¤ āĻāĻ āĻā§āĻāĻāĻŋ āϏāĻŽā§āĻĒā§āϰā§āĻŖāϰā§āĻĒā§ āύāĻŋāώā§āĻā§āϰāĻŋāϝāĻŧ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰ⧠(āĻāĻŋāύā§āϤ⧠āĻāĻāĻŋ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϤāĻāύāĻ āϏā§āĻĒāĻžāϰāĻŋāĻļ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰ⧠āϝāĻĻāĻŋ āϏā§āĻā§āϰāĻŋāĻĒā§āĻāĻā§āϞāĻŋ API āϏāĻžāϰā§āĻāĻžāϰ⧠āĻāĻžāϞāĻžāύ⧠āĻšāϝāĻŧ, āϝāĻāύ 127.0.0.1-āĻāϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧ), APIClientArgs āϝā§āĻā§āϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠- unsafe_auto_accept (APIClientArgs āϏāĻŽā§āĻŦāύā§āϧ⧠āĻāϰāĻ āĻĻā§āĻā§āύ āĻāĻā§ "āϏāĻāϝā§āĻā§āϰ āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰāĻž" āĻ)āĨ¤
client_args = APIClientArgs(unsafe_auto_accept=True)API āϏāĻžāϰā§āĻāĻžāϰ⧠āϞāĻāĻāύ āĻāϰā§āύ
ĐŖ APIClient API āϏāĻžāϰā§āĻāĻžāϰ⧠āϞāĻ āĻāύ āĻāϰāĻžāϰ āĻāύā§āϝ 3āĻāĻŋāϰ āĻŽāϤ⧠āĻĒāĻĻā§āϧāϤāĻŋ āϰāϝāĻŧā§āĻā§ āĻāĻŦāĻ āϤāĻžāĻĻā§āϰ āĻĒā§āϰāϤā§āϝā§āĻāĻāĻŋ āĻ āϰā§āĻĨ āĻŦā§āĻā§ āϏāĻŋāĻĻ(āϏā§āĻļāύ-āĻāĻāĻĄāĻŋ), āϝāĻž āĻšā§āĻĄāĻžāϰ⧠āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒāϰāĻŦāϰā§āϤ⧠API āĻāϞ⧠āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāϝāĻŧ (āĻāĻ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰā§āϰ āĻšā§āĻĄāĻžāϰ⧠āύāĻžāĻŽ X-chkp-sid), āϤāĻžāĻ āĻāĻ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰāĻāĻŋ āĻāϰāĻ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻāϰāĻžāϰ āĻĻāϰāĻāĻžāϰ āύā§āĻāĨ¤
āϞāĻāĻāύ āĻĒāĻĻā§āϧāϤāĻŋ
āϞāĻāĻāύ āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻŦāĻŋāĻāϞā§āĻĒ (āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āύāĻžāĻŽ āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύ āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ 1q2w3e āĻ āĻŦāϏā§āĻĨāĻžāύāĻāϤ āĻāϰā§āĻā§āĻŽā§āύā§āĻ āĻšāĻŋāϏāĻžāĻŦā§ āĻĒāĻžāϏ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§):
login = client.login('admin', '1q2w3e') āϞāĻāĻāύ āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻāĻā§āĻāĻŋāĻ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰāĻā§āϞāĻŋāĻ āĻĒāĻžāĻāϝāĻŧāĻž āϝāĻžāϝāĻŧ; āĻāĻāĻžāύ⧠āϤāĻžāĻĻā§āϰ āύāĻžāĻŽ āĻāĻŦāĻ āĻĄāĻŋāĻĢāϞā§āĻ āĻŽāĻžāύ āϰāϝāĻŧā§āĻā§:
continue_last_session=False, domain=None, read_only=False, payload=NoneāĻŽā§āĻĨāĻĄ āϞāĻāĻāύ_with_api_key
āĻāĻāĻāĻŋ api āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻŦāĻŋāĻāϞā§āĻĒ (āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ āϏāĻāϏā§āĻāϰāĻŖ R80.40/Management API v1.6 āĻĨā§āĻā§ āĻļā§āϰ⧠āĻāϰ⧠āϏāĻŽāϰā§āĻĨāĻŋāϤ, "3TsbPJ8ZKjaJGvFyoFqHFA==" āĻāĻāĻŋ API āĻā§ āĻ āύā§āĻŽā§āĻĻāύ āĻĒāĻĻā§āϧāϤāĻŋ āϏāĻš āĻŦā§āϝāĻŦāϏā§āĻĨāĻžāĻĒāύāĻž āϏāĻžāϰā§āĻāĻžāϰ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻāĻāĻāύā§āϰ āĻāύā§āϝ API āĻā§ āĻŽāĻžāύ:
login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==') āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠api_key āĻĻāĻŋāϝāĻŧā§ āϞāĻāĻāύ āĻāϰā§āύ āĻāĻāĻ āĻāĻā§āĻāĻŋāĻ āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋ āĻĒāĻĻā§āϧāϤāĻŋ āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻĒāϞāĻŦā§āϧ āϞāĻāĻāύ.
login_as_root āĻĒāĻĻā§āϧāϤāĻŋ
āĻāĻāĻāĻŋ API āϏāĻžāϰā§āĻāĻžāϰ āϏāĻš āĻāĻāĻāĻŋ āϏā§āĻĨāĻžāύā§āϝāĻŧ āĻŽā§āĻļāĻŋāύ⧠āϞāĻāĻāύ āĻāϰāĻžāϰ āĻŦāĻŋāĻāϞā§āĻĒ:
login = client.login_as_root()āĻāĻ āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻāύā§āϝ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĻā§āĻāĻŋ āĻāĻā§āĻāĻŋāĻ āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋ āĻāĻĒāϞāĻŦā§āϧ āĻāĻā§:
domain=None, payload=NoneāĻāĻŦāĻ āĻ āĻŦāĻļā§āώ⧠API āύāĻŋāĻā§āĻĻā§āϰ āĻāϞ
āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻŽāĻžāϧā§āϝāĻŽā§ API āĻāϞ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻžāĻā§ āĻĻā§āĻāĻŋ āĻŦāĻŋāĻāϞā§āĻĒ āϰāϝāĻŧā§āĻā§ āĻāĻĒāĻŋāĻāĻ_āĻāϞ и api_query. āĻāϏā§āύ āϤāĻžāĻĻā§āϰ āĻŽāϧā§āϝ⧠āĻĒāĻžāϰā§āĻĨāĻā§āϝ āĻāĻŋ āϤāĻž āĻā§āĻāĻā§ āĻŦā§āϰ āĻāϰāĻž āϝāĻžāĻāĨ¤
āĻāĻĒāĻŋāĻāĻ_āĻāϞ
āĻāĻ āĻĒāĻĻā§āϧāϤāĻŋ āϝā§āĻā§āύ⧠āĻāϞā§āϰ āĻāύā§āϝ āĻĒā§āϰāϝā§āĻā§āϝāĨ¤ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻĒāĻŋāĻāĻ āĻāϞā§āϰ āĻāύā§āϝ āĻļā§āώ āĻ āĻāĻļāĻāĻŋ āĻĒāĻžāϏ āĻāϰāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ āĻĒā§āϰāϝāĻŧā§āĻāύ⧠āĻ āύā§āϰā§āϧā§āϰ āĻŦāĻĄāĻŋāϤ⧠āĻĒā§āϞā§āĻĄ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āϝāĻĻāĻŋ āĻĒā§āϞā§āĻĄ āĻāĻžāϞāĻŋ āĻĨāĻžāĻā§, āϤāĻŦā§ āĻāĻāĻŋ āĻŽā§āĻā§āĻ āϏā§āĻĨāĻžāύāĻžāύā§āϤāϰ āĻāϰāĻž āϝāĻžāĻŦā§ āύāĻž:
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 āĻĒāĻĻā§āϧāϤāĻŋ āϰāϝāĻŧā§āĻā§ āϝāĻž āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§āĨ¤ āĻāϞā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖ āϝā§āĻāĻžāύ⧠āĻāĻ āĻĒāĻĻā§āϧāϤāĻŋāĻāĻŋ āĻĒā§āϰāϝāĻŧā§āĻāύ: āĻļā§-āϏā§āĻļāύ, āĻļā§-āĻšā§āϏā§āĻ, āĻļā§-āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ, āĻļā§-āĻāϝāĻŧāĻžāĻāϞā§āĻĄāĻāĻžāϰā§āĻĄ, āĻļā§-āĻā§āϰā§āĻĒ, āĻļā§-āĻ ā§āϝāĻžāĻĄā§āϰā§āϏ-āϰā§āĻā§āĻ, āĻļā§-āϏāĻŋāĻŽā§āĻĒāϞ-āĻā§āĻāĻāϝāĻŧā§, āĻļā§-āϏāĻŋāĻŽā§āĻĒāϞ-āĻā§āϞāĻžāϏā§āĻāĻžāϰ, āĻļā§-āĻ ā§āϝāĻžāĻā§āϏā§āϏ-āϰā§āϞāϏ, āĻļā§-āĻŦāĻŋāĻļā§āĻŦāϏā§āϤ-āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ, āĻĒā§āϰāĻĻāϰā§āĻļāύ-āĻĒā§āϝāĻžāĻā§āĻ. āĻāϏāϞā§, āĻāĻŽāϰāĻž āĻāĻ API āĻāϞāĻā§āϞāĻŋāϰ āύāĻžāĻŽā§ āĻŦāĻšā§āĻŦāĻāύ āĻļāĻŦā§āĻĻ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻ, āϤāĻžāĻ āĻāĻ āĻāϞāĻā§āϞāĻŋ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāĻž āϏāĻšāĻ āĻšāĻŦā§ api_query
show_hosts = client.api_query('show-hosts') āĻāĻžāĻāĻž āύā§āĻā§ āĻāĻ āĻ āύā§āϰā§āϧā§āϰ āĻāύā§āϝ āĻāĻāĻāĻĒā§āĻ:
In [21]: show_hosts
Out[21]:
APIResponse({
"data": [
{
"domain": {
"domain-type": "domain",
"name": "SMC User",
"uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
},
"ipv4-address": "192.168.47.1",
"name": "h_192.168.47.1",
"type": "host",
"uid": "5d7d7086-d70b-4995-971a-0583b15a2bfc"
},
{
"domain": {
"domain-type": "domain",
"name": "SMC User",
"uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
},
"ipv4-address": "8.8.8.8",
"name": "h_8.8.8.8",
"type": "host",
"uid": "c210af07-1939-49d3-a351-953a9c471d9e"
}
],
"res_obj": {
"data": {
"from": 1,
"objects": [
{
"domain": {
"domain-type": "domain",
"name": "SMC User",
"uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
},
"ipv4-address": "192.168.47.1",
"name": "h_192.168.47.1",
"type": "host",
"uid": "5d7d7086-d70b-4995-971a-0583b15a2bfc"
},
{
"domain": {
"domain-type": "domain",
"name": "SMC User",
"uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
},
"ipv4-address": "8.8.8.8",
"name": "h_8.8.8.8",
"type": "host",
"uid": "c210af07-1939-49d3-a351-953a9c471d9e"
}
],
"to": 2,
"total": 2
},
"status_code": 200
},
"status_code": 200,
"success": true
})
API āĻāϞā§āϰ āĻĢāϞāĻžāĻĢāϞ āĻĒā§āϰāϏā§āϏ āĻāϰāĻž āĻšāĻā§āĻā§
āĻāϰ āĻĒāϰ⧠āĻāĻĒāύāĻŋ āĻā§āϞāĻžāϏā§āϰ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻāĻŦāĻ āĻĒāĻĻā§āϧāϤāĻŋāĻā§āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ API āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻž(āĻĒā§āϰāϏāĻā§āĻ āĻĒāϰāĻŋāĻāĻžāϞāĻā§āϰ āĻāĻŋāϤāϰ⧠āĻāĻŦāĻ āĻŦāĻžāĻāϰ⧠āĻāĻāϝāĻŧāĻ)āĨ¤ āĻā§āϞāĻžāϏ⧠API āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻž 4āĻāĻŋ āĻĒāĻĻā§āϧāϤāĻŋ āĻāĻŦāĻ 5āĻāĻŋ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻĒā§āϰā§āĻŦāύāĻŋāϰā§āϧāĻžāϰāĻŋāϤ; āĻāĻŽāϰāĻž āĻāϰāĻ āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤāĻāĻžāĻŦā§ āϏāĻŦāĻā§āϝāĻŧā§ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖāĻā§āϞāĻŋāϰ āĻāĻĒāϰ āĻāϞā§āĻāύāĻž āĻāϰāĻŦāĨ¤

āϏāĻžāĻĢāϞā§āϝ
āĻļā§āϰā§āϤā§, API āĻāϞāĻāĻŋ āϏāĻĢāϞ āĻšāϝāĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĢāϞāĻžāĻĢāϞ āĻĢāĻŋāϰāĻŋāϝāĻŧā§ āĻĻāĻŋāϝāĻŧā§āĻā§ āϤāĻž āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāĻž āĻāĻāĻāĻŋ āĻāĻžāϞ āϧāĻžāϰāĻŖāĻž āĻšāĻŦā§āĨ¤ āĻāĻ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻĒāĻĻā§āϧāϤāĻŋ āĻāĻā§ āϏāĻžāĻĢāϞā§āϝ:
In [49]: api_versions.success
Out[49]: True
API āĻāϞ āϏāĻĢāϞ āĻšāϞ⧠āϏāϤā§āϝ (āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻž āĻā§āĻĄ - 200) āĻāĻŦāĻ āϏāĻĢāϞ āύāĻž āĻšāϞ⧠āĻŽāĻŋāĻĨā§āϝāĻž (āĻ āύā§āϝ āϝā§āĻā§āύ⧠āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻž āĻā§āĻĄ) āĻĢā§āϰāϤ āĻĻā§āϝāĻŧāĨ¤ āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻž āĻā§āĻĄā§āϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰ⧠āĻŦāĻŋāĻāĻŋāύā§āύ āϤāĻĨā§āϝ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ 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-āĻ āϰāĻŋāϏā§āĻ āĻāϰāĻž āĻšāĻŦā§ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻŋāĻā§ āĻļāϰā§āϤā§āϰ āĻ āϧā§āύā§āĨ¤ āύā§āĻā§, āϝāĻāύ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ āϏāĻžāϰā§āĻāĻžāϰ⧠āĻāĻžāĻāĻā§āϞāĻŋ āĻāϞāĻŽāĻžāύ āĻĨāĻžāĻā§ āϤāĻāύ āĻāĻĻāĻžāĻšāϰāĻŖā§āϰ āĻĻāĻŋāĻā§ āĻŽāύā§āϝā§āĻ āĻĻāĻŋāύ, āĻāĻŋāύā§āϤ⧠āĻāĻŽāϰāĻž āĻāĻ āĻ āύā§āϰā§āϧāĻāĻŋāĻā§ āĻ āϏāĻĢāϞ āĻŦāϞ⧠āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰāĻŦ (āĻāĻŽāϰāĻž āϏāĻĢāϞāϤāĻžāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻļā§āϞ āϏā§āĻ āĻāϰāĻŦ āĻŽāĻŋāĻĨā§āϝāĻž, āĻāĻĒāĻŋāĻāĻ āĻāϞ āϏāĻĢāϞ āĻšāĻāϝāĻŧāĻž āϏāϤā§āϤā§āĻŦā§āĻ āĻāĻŦāĻ āĻā§āĻĄ 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']}
āĻā§āϞ āĻŦāĻžāϰā§āϤāĻž
āĻāĻ āϤāĻĨā§āϝāĻāĻŋ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϤāĻāύāĻ āĻĒāĻžāĻāϝāĻŧāĻž āϝāĻžāϝāĻŧ āϝāĻāύ API āĻ āύā§āϰā§āϧ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāĻāĻāĻŋ āϤā§āϰā§āĻāĻŋ āĻāĻā§ (āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻž āĻā§āĻĄ āύāĻž 200)āĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖ āĻāĻāĻāĻĒā§āĻ
In [107]: api_versions.error_message
Out[107]: 'code: generic_err_invalid_parameter_namenmessage: Unrecognized parameter [1]n'
āĻĻāϰāĻāĻžāϰ⧠āĻāĻĻāĻžāĻšāϰāĻŖ
āĻŦā§āϝāĻŦāϏā§āĻĨāĻžāĻĒāύāĻž API 1.6-āĻ āϝā§āĻ āĻāϰāĻž API āĻāϞāĻā§āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻŽāύ āĻāĻĻāĻžāĻšāϰāĻŖ āύāĻŋāĻā§ āĻĻā§āĻāϝāĻŧāĻž āĻšāϞāĨ¤
āĻĒā§āϰāĻĨāĻŽāϤ, āĻāϞā§āύ āĻĻā§āĻāĻŋ āĻāϞ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰ⧠āĻ ā§āϝāĻžāĻĄ-āĻšā§āϏā§āĻ Đ¸ āϝā§āĻ-āĻ āĻŋāĻāĻžāύāĻž-āĻĒāϰāĻŋāϏā§āĻŽāĻž. āϧāϰāĻž āϝāĻžāĻ āĻāĻŽāĻžāĻĻā§āϰ āϏāĻžāĻŦāύā§āĻ 192.168.0.0/24-āĻāϰ āϏāĻŽāϏā§āϤ āĻāĻāĻĒāĻŋ āĻ ā§āϝāĻžāĻĄā§āϰā§āϏ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§, āϝāĻžāϰ āĻļā§āώ āĻ āĻā§āĻā§āĻ āĻšāϞ 5, āĻšā§āϏā§āĻ āĻāĻžāĻāĻĒā§āϰ āĻ āĻŦāĻā§āĻā§āĻ āĻšāĻŋāϏāĻžāĻŦā§, āĻāĻŦāĻ āĻ āύā§āϝ āϏāĻŽāϏā§āϤ āĻāĻāĻĒāĻŋ āĻ ā§āϝāĻžāĻĄā§āϰā§āϏāĻā§ āĻ ā§āϝāĻžāĻĄā§āϰā§āϏ āϰā§āĻā§āĻ āĻāĻžāĻāĻĒā§āϰ āĻ āĻŦāĻā§āĻā§āĻ āĻšāĻŋāϏāĻžāĻŦā§ āϞāĻŋāĻāϤ⧠āĻšāĻŦā§āĨ¤ āĻāĻ āĻā§āώā§āϤā§āϰā§, āϏāĻžāĻŦāύā§āĻ āĻ āĻŋāĻāĻžāύāĻž āĻāĻŦāĻ āϏāĻŽā§āĻĒā§āϰāĻāĻžāϰ āĻ āĻŋāĻāĻžāύāĻž āĻŦāĻžāĻĻ āĻĻāĻŋāύāĨ¤
āϏā§āϤāϰāĻžāĻ, āύā§āĻā§ āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āϰāϝāĻŧā§āĻā§ āϝāĻž āĻāĻ āϏāĻŽāϏā§āϝāĻžāϰ āϏāĻŽāĻžāϧāĻžāύ āĻāϰ⧠āĻāĻŦāĻ āĻšā§āϏā§āĻ āĻāĻžāĻāĻĒā§āϰ 50āĻāĻŋ āĻ āĻŦāĻā§āĻā§āĻ āĻāĻŦāĻ āĻ ā§āϝāĻžāĻĄā§āϰā§āϏ āϰā§āĻā§āĻ āĻāĻžāĻāĻĒā§āϰ 51āĻāĻŋ āĻ āĻŦāĻā§āĻā§āĻ āϤā§āϰāĻŋ āĻāϰā§āĨ¤ āϏāĻŽāϏā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύā§āϰ āĻāύā§āϝ, 101āĻāĻŋ API āĻāϞ āĻĒā§āϰāϝāĻŧā§āĻāύ (āĻā§āĻĄāĻŧāĻžāύā§āϤ āĻĒā§āϰāĻāĻžāĻļ āĻāϞ āĻāĻŖāύāĻž āύāĻž)āĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ, 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 āĻ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ āĻāĻ āĻāϞāĻāĻŋ āĻāĻĒāύāĻžāĻā§ āĻāĻāĻāĻŋ API āĻ āύā§āϰā§āϧ⧠āĻāĻāϏāĻžāĻĨā§ āĻ āύā§āĻāĻā§āϞāĻŋ āĻŦāϏā§āϤ⧠āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻĻā§āϝāĻŧāĨ¤ āϤāĻĻā§āĻĒāϰāĻŋ, āĻāĻā§āϞāĻŋ āĻŦāĻŋāĻāĻŋāύā§āύ āϧāϰāĻŖā§āϰ āĻŦāϏā§āϤ⧠āĻšāϤ⧠āĻĒāĻžāϰ⧠(āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āĻšā§āϏā§āĻ, āϏāĻžāĻŦāύā§āĻ āĻāĻŦāĻ āĻ āĻŋāĻāĻžāύāĻž āĻĒāϰāĻŋāϏā§āĻŽāĻž)āĨ¤ āϏā§āϤāϰāĻžāĻ, āĻāĻŽāĻžāĻĻā§āϰ āĻāĻžāĻāĻāĻŋ āĻāĻāĻāĻŋ API āĻāϞā§āϰ āĻāĻžāĻ āĻžāĻŽā§āϰ āĻŽāϧā§āϝ⧠āϏāĻŽāĻžāϧāĻžāύ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻ ā§āϝāĻžāĻĄ-āĻ āĻŦāĻā§āĻā§āĻ-āĻŦā§āϝāĻžāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏā§āĻā§āϰāĻŋāĻĒā§āĻ
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 āĻ āĻŦāĻā§āĻā§āĻā§, āĻāĻāĻāĻŋ āĻŦā§āϝāĻžāĻ āĻāĻžāĻāĻĒ āĻāϞ 10 āĻā§āĻŖ āĻĻā§āϰā§āϤ āĻāϞā§āĨ¤ āĻŦā§āĻšāϤā§āϤāϰ āϏāĻāĻā§āϝāĻ āĻŦāϏā§āϤā§āϤ⧠āĻĒāĻžāϰā§āĻĨāĻā§āϝāĻāĻŋ āĻāϰāĻ āĻŦā§āĻļāĻŋ āĻāĻŋāϤā§āϤāĻžāĻāϰā§āώāĻ āĻšāĻŦā§āĨ¤
āĻāĻāύ āĻĻā§āĻāĻž āϝāĻžāĻ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰāϤ⧠āĻšāϝāĻŧ āϏā§āĻ-āĻ āĻŦāĻā§āĻā§āĻ-āĻŦā§āϝāĻžāĻ. āĻāĻ API āĻāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āĻāĻŽāϰāĻž āϝā§āĻā§āύ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻŦāĻžāϞā§āĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋāĨ¤ āĻāĻā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖ āĻĨā§āĻā§ āĻ ā§āϝāĻžāĻĄā§āϰā§āϏā§āϰ āĻĒā§āϰāĻĨāĻŽ āĻ āϰā§āϧā§āĻ āϏā§āĻ āĻāϰāĻž āϝāĻžāĻ (.124 āĻšā§āϏā§āĻ āĻĒāϰā§āϝāύā§āϤ, āĻāĻŦāĻ āϰā§āĻā§āĻāĻ) āĻāĻžāϞāĻžāϰ āϏāĻŋāϝāĻŧā§āύāĻžāϤā§, āĻāĻŦāĻ āĻ ā§āϝāĻžāĻĄā§āϰā§āϏā§āϰ āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧāĻžāϰā§āϧ⧠āĻāĻžāϞāĻžāϰ āĻāĻžāĻāĻŋ āĻŦāϰāĻžāĻĻā§āĻĻ āĻāϰāĻŋāĨ¤
āĻāĻā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖā§ āϤā§āϰāĻŋ āĻāϰāĻž āĻŦāϏā§āϤā§āϰ āϰāĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻž
from cpapi import APIClient, APIClientArgs
client_args = APIClientArgs(server="192.168.47.240")
objects_list_ip_first = []
objects_list_range_first = []
objects_list_ip_second = []
objects_list_range_second = []
for ip in range(5,125,5):
data = {"name": f'h_192.168.0.{ip}', "color": "sienna"}
objects_list_ip_first.append(data)
for ip in range(125,255,5):
data = {"name": f'h_192.168.0.{ip}', "color": "khaki"}
objects_list_ip_second.append(data)
first_ip = 1
last_ip = 4
while last_ip < 125:
data = {"name": f"r_192.168.0.{first_ip}-{last_ip}", "color": "sienna"}
objects_list_range_first.append(data)
first_ip+=5
last_ip+=5
while last_ip < 255:
data = {"name": f"r_192.168.0.{first_ip}-{last_ip}", "color": "khaki"}
objects_list_range_second.append(data)
first_ip+=5
last_ip+=5
data_for_batch_first = {
"objects" : [ {
"type" : "host",
"list" : objects_list_ip_first
}, {
"type" : "address-range",
"list" : objects_list_range_first
}]
}
data_for_batch_second = {
"objects" : [ {
"type" : "host",
"list" : objects_list_ip_second
}, {
"type" : "address-range",
"list" : objects_list_range_second
}]
}
with APIClient(client_args) as client:
login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
set_objects_batch_first = client.api_call("set-objects-batch", data_for_batch_first)
set_objects_batch_second = client.api_call("set-objects-batch", data_for_batch_second)
publish = client.api_call("publish")
āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ API āĻāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻžāϧāĻŋāĻ āĻŦāϏā§āϤ⧠āĻŽā§āĻā§ āĻĢā§āϞāϤ⧠āĻĒāĻžāϰā§āύ āĻĄāĻŋāϞāĻŋāĻ-āĻ āĻŦāĻā§āĻā§āĻ-āĻŦā§āϝāĻžāĻ. āĻāĻāύ āĻāϏā§āύ āĻāĻāĻāĻŋ āĻā§āĻĄ āĻāĻĻāĻžāĻšāϰāĻŖ āĻĻā§āĻāĻŋ āϝāĻž āĻĒā§āϰā§āĻŦā§ āϤā§āϰāĻŋ āĻāϰāĻž āϏāĻŽāϏā§āϤ āĻšā§āϏā§āĻ āĻŽā§āĻā§ āĻĻā§āϝāĻŧ āϝā§āĻ-āĻ āĻŦāĻā§āĻā§āĻ-āĻŦā§āϝāĻžāĻ.
āĻĄāĻŋāϞāĻŋāĻ-āĻ āĻŦāĻā§āĻā§āĻ-āĻŦā§āϝāĻžāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻŦāϏā§āϤ⧠āĻŽā§āĻā§ āĻĢā§āϞāĻž āĻšāĻā§āĻā§
from cpapi import APIClient, APIClientArgs
client_args = APIClientArgs(server="192.168.47.240")
objects_list_ip = []
objects_list_range = []
for ip in range(5,255,5):
data = {"name": f'h_192.168.0.{ip}'}
objects_list_ip.append(data)
first_ip = 1
last_ip = 4
while last_ip < 255:
data = {"name": f"r_192.168.0.{first_ip}-{last_ip}"}
objects_list_range.append(data)
first_ip+=5
last_ip+=5
data_for_batch = {
"objects" : [ {
"type" : "host",
"list" : objects_list_ip
}, {
"type" : "address-range",
"list" : objects_list_range
}]
}
with APIClient(client_args) as client:
login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
delete_objects_batch = client.api_call("delete-objects-batch", data_for_batch)
publish = client.api_call("publish")
print(delete_objects_batch.data)
āĻā§āĻ āĻĒāϝāĻŧā§āύā§āĻ āϏāĻĢā§āĻāĻāϝāĻŧā§āϝāĻžāϰā§āϰ āύāϤā§āύ āϰāĻŋāϞāĻŋāĻā§ āĻāĻĒāϏā§āĻĨāĻŋāϤ āϏāĻŽāϏā§āϤ āĻĢāĻžāĻāĻļāύ āĻ āĻŦāĻŋāϞāĻŽā§āĻŦā§ API āĻāϞāĻā§āϞāĻŋ āĻ āϰā§āĻāύ āĻāϰā§āĨ¤ āĻāĻāĻāĻžāĻŦā§, R80.40-āĻ āϰāĻŋāĻāĻžāϰā§āĻ āĻā§ āϰāĻŋāĻāĻŋāĻļāύ āĻāĻŦāĻ āϏā§āĻŽāĻžāϰā§āĻ āĻāĻžāϏā§āĻā§āϰ āĻŽāϤ⧠"āĻŦā§āĻļāĻŋāώā§āĻā§āϝāĻā§āϞāĻŋ" āĻāĻĒāϏā§āĻĨāĻŋāϤ āĻšāϝāĻŧā§āĻāĻŋāϞ, āĻāĻŦāĻ āϏāĻāĻļā§āϞāĻŋāώā§āĻ API āĻāϞāĻā§āϞāĻŋ āĻ āĻŦāĻŋāϞāĻŽā§āĻŦā§ āϤāĻžāĻĻā§āϰ āĻāύā§āϝ āĻĒā§āϰāϏā§āϤā§āϤ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āĻ āϧāĻŋāĻāύā§āϤā§, āϞāĻŋāĻā§āϝāĻžāϏāĻŋ āĻāύāϏā§āϞ āĻĨā§āĻā§ āĻāĻāύāĻŋāĻĢāĻžāĻāĻĄ āĻĒāϞāĻŋāϏāĻŋ āĻŽā§āĻĄā§ āϝāĻžāĻāϝāĻŧāĻžāϰ āϏāĻŽāϝāĻŧ āϏāĻŽāϏā§āϤ āĻāĻžāϰā§āϝāĻāĻžāϰāĻŋāϤāĻžāĻ API āϏāĻŽāϰā§āĻĨāύ āĻ āϰā§āĻāύ āĻāϰā§āĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āϏāĻĢā§āĻāĻāϝāĻŧā§āϝāĻžāϰ āϏāĻāϏā§āĻāϰāĻŖ R80.40-āĻāϰ āĻĻā§āϰā§āĻ-āĻĒā§āϰāϤā§āĻā§āώāĻŋāϤ āĻāĻĒāĻĄā§āĻāĻāĻŋ āĻšāϞ āϞāĻŋāĻā§āϝāĻžāϏāĻŋ āĻŽā§āĻĄ āĻĨā§āĻā§ āĻāĻāύāĻŋāĻĢāĻžāĻāĻĄ āĻĒāϞāĻŋāϏāĻŋ āĻŽā§āĻĄā§ HTTPS āĻĒāϰāĻŋāĻĻāϰā§āĻļāύ āύā§āϤāĻŋāϰ āϏā§āĻĨāĻžāύāĻžāύā§āϤāϰ, āĻāĻŦāĻ āĻāĻ āĻāĻžāϰā§āϝāĻāĻžāϰāĻŋāϤāĻž āĻ āĻŦāĻŋāϞāĻŽā§āĻŦā§ API āĻāϞāĻā§āϞāĻŋ āĻĒā§āϝāĻŧā§āĻā§ā§ˇ āĻāĻāĻžāύ⧠āĻā§āĻĄā§āϰ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āϰāϝāĻŧā§āĻā§ āϝāĻž HTTPS āĻĒāϰāĻŋāĻĻāϰā§āĻļāύ āύā§āϤāĻŋāϰ āĻļā§āϰā§āώ āĻ āĻŦāϏā§āĻĨāĻžāύ⧠āĻāĻāĻāĻŋ āύāĻŋāϝāĻŧāĻŽ āϝā§āĻā§āϤ āĻāϰ⧠āϝāĻž āĻĒāϰāĻŋāĻĻāϰā§āĻļāύ āĻĨā§āĻā§ 3āĻāĻŋ āĻŦāĻŋāĻāĻžāĻ āĻŦāĻžāĻĻ āĻĻā§āϝāĻŧ (āϏā§āĻŦāĻžāϏā§āĻĨā§āϝ, āĻ āϰā§āĻĨ, āϏāϰāĻāĻžāϰ⧠āĻĒāϰāĻŋāώā§āĻŦāĻž), āϝāĻž āĻŦā§āĻļ āĻāϝāĻŧā§āĻāĻāĻŋ āĻĻā§āĻļā§ āĻāĻāύ āĻ āύā§āϏāĻžāϰ⧠āĻĒāϰāĻŋāĻĻāϰā§āĻļāύ āĻĨā§āĻā§ āύāĻŋāώāĻŋāĻĻā§āϧāĨ¤
HTTPS āĻĒāϰāĻŋāĻĻāϰā§āĻļāύ āύā§āϤāĻŋāϤ⧠āĻāĻāĻāĻŋ āύāĻŋāϝāĻŧāĻŽ āϝā§āĻ āĻāϰā§āύ
from cpapi import APIClient, APIClientArgs
client_args = APIClientArgs(server="192.168.47.240")
data = {
"layer" : "Default Layer",
"position" : "top",
"name" : "Legal Requirements",
"action": "bypass",
"site-category": ["Health", "Government / Military", "Financial Services"]
}
with APIClient(client_args) as client:
login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
add_https_rule = client.api_call("add-https-rule", data)
publish = client.api_call("publish")
āĻā§āĻ āĻĒāϝāĻŧā§āύā§āĻ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ āϏāĻžāϰā§āĻāĻžāϰ⧠āĻĒāĻžāĻāĻĨāύ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāĻžāϞāĻžāύ⧠āĻšāĻā§āĻā§
āϏāĻŦāĻ āĻāĻāϰāĻāĻŽ āĻāύā§āĻā§āϰā§āϞ āϏāĻžāϰā§āĻāĻžāϰ āĻĨā§āĻā§ āϏāϰāĻžāϏāϰāĻŋ āĻĒāĻžāĻāĻĨāύ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāĻžāϞāĻžāύā§āϰ āϤāĻĨā§āϝ āϰāϝāĻŧā§āĻā§āĨ¤ āĻāĻĒāύāĻŋ āϝāĻāύ āĻ āύā§āϝ āĻŽā§āĻļāĻŋāύ āĻĨā§āĻā§ API āϏāĻžāϰā§āĻāĻžāϰā§āϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻ āĻāϰāϤ⧠āĻ āĻā§āώāĻŽ āĻšāύ āϤāĻāύ āĻāĻāĻŋ āϏā§āĻŦāĻŋāϧāĻžāĻāύāĻ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻāϝāĻŧ āĻŽāĻŋāύāĻŋāĻā§āϰ āĻāĻŋāĻĄāĻŋāĻ āϰā§āĻāϰā§āĻĄ āĻāϰā§āĻāĻŋ āϝāĻžāϤ⧠āĻāĻŽāĻŋ āĻŽāĻĄāĻŋāĻāϞāĻāĻŋ āĻāύāϏā§āĻāϞ āĻāϰāϤ⧠āĻĻā§āĻāĻŋ cpapi āĻāĻŦāĻ āĻāύā§āĻā§āϰā§āϞ āϏāĻžāϰā§āĻāĻžāϰ⧠āĻĒāĻžāĻāĻĨāύ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāĻžāϞāĻžāύā§āϰ āĻŦā§āĻļāĻŋāώā§āĻā§āϝāĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖ āĻšāĻŋāϏā§āĻŦā§, āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāĻžāϞāĻžāύ⧠āĻšāϝāĻŧ āϝāĻž āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āĻ āĻĄāĻŋāĻāĻŋāĻāϝāĻŧā§āϰ āĻŽāϤ⧠āĻāĻāĻāĻŋ āĻāĻžāĻā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āύāϤā§āύ āĻā§āĻāĻāϝāĻŧā§āϰ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻāϰā§āĨ¤ āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž āĻā§āĻāĻāĻĒ. āĻāĻŽāĻžāĻā§ āϝ⧠āĻŦā§āĻļāĻŋāώā§āĻā§āϝāĻā§āϞāĻŋ āĻŽā§āĻāĻžāĻŦā§āϞāĻž āĻāϰāϤ⧠āĻšāϝāĻŧā§āĻāĻŋāϞ āϤāĻžāϰ āĻŽāϧā§āϝā§: āĻĢāĻžāĻāĻļāύāĻāĻŋ āĻāĻāύāĻ āĻĒāĻžāĻāĻĨāύ 2.7 āĻ āĻāĻĒāϏā§āĻĨāĻŋāϤ āĻšāϝāĻŧāύāĻŋ āĻāύāĻĒā§āĻ, āϤāĻžāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻĒā§āϰāĻŦā§āĻļ āĻāϰāĻž āϤāĻĨā§āϝ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻžāĻāĻāĻž āύāĻŋāĻŦā§āĻļ. āĻ āύā§āϝāĻĨāĻžāϝāĻŧ, āĻā§āĻĄāĻāĻŋ āĻ āύā§āϝāĻžāύā§āϝ āĻŽā§āĻļāĻŋāύ āĻĨā§āĻā§ āĻāĻžāϞ⧠āĻāϰāĻžāϰ āĻŽāϤā§āĻ, āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĢāĻžāĻāĻļāύāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻāϰāĻ āϏā§āĻŦāĻŋāϧāĻžāĻāύāĻ 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() āĻāĻāĻāĻŋ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻ
āĻāĻŋāϧāĻžāύ āĻ
āϤāĻŋāϰāĻŋāĻā§āϤ_pass.conf āϏāĻš āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āĻĢāĻžāĻāϞ
{
"passwords" : ["malware","malicious","infected","Infected"],
"phrases" : ["password","Password","Pass","pass","codigo","key","pwd","ĐŋаŅĐžĐģŅ","ĐаŅĐžĐģŅ","ĐĐģŅŅ","ĐēĐģŅŅ","ŅиŅŅ","ШиŅŅ"]
}
āĻāĻĒāϏāĻāĻšāĻžāϰ
āĻāĻ āύāĻŋāĻŦāύā§āϧāĻāĻŋ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻžāĻā§āϰ āĻŽā§āϞāĻŋāĻ āϏāĻŽā§āĻāĻžāĻŦāύāĻžāĻā§āϞāĻŋ āĻĒāϰā§āĻā§āώāĻž āĻāϰ⧠āĻĒāĻžāĻāĻĨāύ āĻāϏāĻĄāĻŋāĻā§ āĻāĻŦāĻ āĻŽāĻĄāĻŋāĻāϞ cpapi(āϝā§āĻŽāύ āĻāĻĒāύāĻŋ āĻ āύā§āĻŽāĻžāύ āĻāϰā§āĻā§āύ, āĻāĻā§āϞāĻŋ āĻāϏāϞ⧠āĻĒā§āϰāϤāĻŋāĻļāĻŦā§āĻĻ), āĻāĻŦāĻ āĻāĻ āĻŽāĻĄāĻŋāĻāϞā§āϰ āĻā§āĻĄ āĻ āϧā§āϝāϝāĻŧāύ āĻāϰ⧠āĻāĻĒāύāĻŋ āĻāĻāĻŋāϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāĻžāϰ āĻāϰāĻ āĻŦā§āĻļāĻŋ āϏāĻŽā§āĻāĻžāĻŦāύāĻž āĻā§āĻāĻā§ āĻĒāĻžāĻŦā§āύāĨ¤ āĻāĻāĻž āϏāĻŽā§āĻāĻŦ āϝ⧠āĻāĻĒāύāĻŋ āĻāĻāĻŋāĻā§ āĻāĻĒāύāĻžāϰ āύāĻŋāĻāϏā§āĻŦ āĻā§āϞāĻžāϏ, āĻĢāĻžāĻāĻļāύ, āĻĒāĻĻā§āϧāϤāĻŋ āĻāĻŦāĻ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞā§āϰ āϏāĻžāĻĨā§ āϏāĻŽā§āĻĒā§āϰāĻ āĻāϰāϤ⧠āĻāĻžāĻāĻŦā§āύāĨ¤ āĻāĻĒāύāĻŋ āϏāĻŦāϏāĻŽāϝāĻŧ āĻāĻĒāύāĻžāϰ āĻāĻžāĻ āĻļā§āϝāĻŧāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āĻāĻŦāĻ āĻŦāĻŋāĻāĻžāĻā§ āĻā§āĻ āĻĒāϝāĻŧā§āύā§āĻā§āϰ āĻāύā§āϝ āĻ āύā§āϝāĻžāύā§āϝ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻĻā§āĻāϤ⧠āĻĒāĻžāϰā§āύ āĻāĻŽāĻŋāĻāύāĻŋāĻāĻŋ , āϝāĻž āĻĒāĻŖā§āϝ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāϰ⧠āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻāĻāϝāĻŧāĻā§ āĻāĻāϤā§āϰāĻŋāϤ āĻāϰā§āĨ¤
āĻļā§āĻ āĻā§āĻĄāĻŋāĻ āĻāĻŦāĻ āĻļā§āώ āĻĒāϰā§āϝāύā§āϤ āĻĒāĻĄāĻŧāĻžāϰ āĻāύā§āϝ āϧāύā§āϝāĻŦāĻžāĻĻ!
āĻāϤā§āϏ: www.habr.com
