เดชเตˆเดคเตเดคเตบ SDK เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดšเต†เด•เตเด•เต เดชเต‹เดฏเดฟเดจเตเดฑเต API เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต

เดชเตˆเดคเตเดคเตบ SDK เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดšเต†เด•เตเด•เต เดชเต‹เดฏเดฟเดจเตเดฑเต API เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเตAPI เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเตเด‚ API เดชเตเดฐเดคเดฟเด•เดฐเดฃเด™เตเด™เตพ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด‰เดชเด•เดฐเดฃเด™เตเด™เดณเตเด‚ เดšเดฒเดจเดพเดคเตเดฎเด•เดฎเดพเดฏเดฟ เดœเดจเดฑเต‡เดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดธเดพเดงเตเดฏเดฎเดพเด•เตเดฎเตเดชเต‹เตพ, เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เด•เต‹เดกเดฟเดจเตŠเดชเตเดชเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ API-เด•เดณเตเดฎเดพเดฏเตเดณเตเดณ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเดคเตเดคเดฟเดจเตเดฑเต† เดชเต‚เตผเดฃเตเดฃ เดถเด•เตเดคเดฟ เดตเต†เดณเดฟเดชเตเดชเต†เดŸเตเด‚. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เด…เดคเต เด‡เดชเตเดชเต‹เดดเตเด‚ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เดชเตเดชเต†เดŸเดพเดคเต† เดคเตเดŸเดฐเตเดจเตเดจเต เดชเตˆเดคเตเดคเตบ เดธเต‹เดซเตเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ เดกเต†เดตเดฒเดชเตโ€Œเดฎเต†เดจเตเดฑเต เด•เดฟเดฑเตเดฑเต (เด‡เดจเดฟ เดฎเตเดคเตฝ เดชเตˆเดคเตเดคเตบ SDK เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต) เดŽเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดชเต‹เดฏเดฟเดจเตเดฑเต เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต API เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•, เดชเด•เตเดทเต‡ เดตเต†เดฑเตเดคเต†. เด‡เดคเต เดกเดตเดฒเดชเตเดชเตผเดฎเดพเดฐเตเดŸเต†เดฏเตเด‚ เด“เดŸเตเดŸเต‹เดฎเต‡เดทเตป เดชเตเดฐเต‡เดฎเดฟเด•เดณเตเดŸเต†เดฏเตเด‚ เดœเต€เดตเดฟเดคเดคเตเดคเต† เด—เดฃเตเดฏเดฎเดพเดฏเดฟ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต. เดชเตˆเดคเตเดคเดฃเดฟเดจเต เดˆเดฏเดฟเดŸเต† เดตเดฒเดฟเดฏ เดœเดจเดชเตเดฐเต€เดคเดฟ เดฒเดญเดฟเดšเตเดšเต, เดˆ เดตเดฟเดŸเดตเต เดจเดฟเด•เดคเตเดคเดพเดจเตเด‚ เดชเตเดฐเดงเดพเดจ เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ เด…เดตเดฒเต‹เด•เดจเด‚ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดžเดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต. เดšเต†เด•เตเด•เต เดชเต‹เดฏเดฟเดจเตเดฑเต API เดชเตˆเดคเตเดคเตบ เดตเดฟเด•เดธเดจ เด•เดฟเดฑเตเดฑเต. เดˆ เดฒเต‡เด–เดจเด‚ เดนเดฌเตเดฐเต†เดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดฎเดฑเตเดฑเตŠเดฐเต เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เดฎเดฟเด•เดšเตเดš เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เดฒเดพเดฏเดฟ เดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต เดšเต†เด•เตเด•เต เดชเต‹เดฏเดฟเดจเตเดฑเต R80.10 API. CLI, เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เดŽเดจเตเดจเดฟเดตเดฏเตเด‚ เดฎเดฑเตเดฑเตเด‚ เดตเดดเดฟเดฏเตเดณเตเดณ เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต. เดชเตˆเดคเตเดคเตบ SDK เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เดŽเด™เตเด™เดจเต† เดŽเดดเตเดคเดพเดฎเต†เดจเตเดจเตเด‚ เดชเดคเดฟเดชเตเดชเต 1.6-เดฒเต† (R80.40 เดฎเตเดคเตฝ เดชเดฟเดจเตเดคเตเดฃเดฏเตโ€Œเด•เตเด•เตเดจเตเดจ) เดชเตเดคเดฟเดฏ เดฎเดพเดจเต‡เดœเตโ€Œเดฎเต†เดจเตเดฑเต API เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเต† เดธเต‚เด•เตเดทเตเดฎเดฎเดพเดฏเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เดžเด™เตเด™เตพ เดจเต‹เด•เตเด•เตเด‚. เดฒเต‡เด–เดจเด‚ เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเตป, API-เด•เดณเตเด‚ เดชเตˆเดคเตเดคเดฃเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด…เดŸเดฟเดธเตเดฅเดพเดจ เด…เดฑเดฟเดตเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฃเต.

เดšเต†เด•เตเด•เต เดชเต‹เดฏเดฟเดจเตเดฑเต เดธเดœเต€เดตเดฎเดพเดฏเดฟ API เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดชเตเดชเต‹เตพ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดฑเดฟเดฒเต€เดธเต เดšเต†เดฏเตโ€Œเดคเต:

เดชเตˆเดคเตเดคเตบ SDK เดจเดฟเดฒเดตเดฟเตฝ เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต API เดฏเตเดฎเดพเดฏเตเดณเตเดณ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเดคเตเดคเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเต Gaia API. เดˆ เดฎเตŠเดกเตเดฏเต‚เดณเดฟเดฒเต† เดเดฑเตเดฑเดตเตเด‚ เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸ เด•เตเดฒเดพเดธเตเด•เดณเตเด‚ เดฐเต€เดคเดฟเด•เดณเตเด‚ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเด‚ เดžเด™เตเด™เตพ เดจเต‹เด•เตเด•เตเด‚.

เดชเตˆเดคเตเดคเตบ SDK เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดšเต†เด•เตเด•เต เดชเต‹เดฏเดฟเดจเตเดฑเต API เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต

เดฎเตŠเดกเตเดฏเต‚เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

ะ”ัƒะปัŒะพะดัƒะปัŒ cpapi เดตเต‡เด—เดคเตเดคเดฟเดฒเตเด‚ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเดฒเตเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเต github-เดฒเต† เด”เดฆเตเดฏเต‹เด—เดฟเด• เดšเต†เด•เตเด•เต เดชเต‹เดฏเดฟเดจเตเดฑเต เดถเต‡เด–เดฐเด‚ เดธเดนเดพเดฏเดคเตเดคเต‹เดŸเต† PIP. เดตเดฟเดถเดฆเดฎเดพเดฏ เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเตป เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เดฒเดญเตเดฏเดฎเดพเดฃเต README.md. เดˆ เดฎเตŠเดกเตเดฏเต‚เตพ เดชเตˆเดคเตเดคเตบ เดชเดคเดฟเดชเตเดชเตเด•เตพ 2.7, 3.7 เดŽเดจเตเดจเดฟเดตเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฃเต. เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ, เดชเตˆเดคเตเดคเตบ 3.7 เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ เดจเตฝเด•เตเด‚. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดชเตˆเดคเตเดคเตบ SDK เดšเต†เด•เตเด•เต เดชเต‹เดฏเดฟเดจเตเดฑเต เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต เดธเต†เตผเดตเดฑเดฟเตฝ (เดธเตเดฎเดพเตผเดŸเตเดŸเต เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต) เดจเดฟเดจเตเดจเต เดจเต‡เดฐเดฟเดŸเตเดŸเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚, เดŽเดจเตเดจเดพเตฝ เด…เดต เดชเตˆเดคเตเดคเตบ 2.7 เดจเต† เดฎเดพเดคเตเดฐเดฎเต‡ เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เต‚, เด…เดคเดฟเดจเดพเตฝ เด…เดตเดธเดพเดจ เดญเดพเด—เด‚ เดชเดคเดฟเดชเตเดชเต 2.7-เดจเตเดณเตเดณ เด•เต‹เดกเต เดจเตฝเด•เตเด‚. เดฎเตŠเดกเตเดฏเต‚เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดค เด‰เดŸเดจเต†, เดกเดฏเดฑเด•เตเดŸเดฑเดฟเด•เดณเดฟเดฒเต† เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ เดจเต‹เด•เตเด•เดพเตป เดžเดพเตป เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเต เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ_เดชเตˆเดคเตเดคเตบ2 ะธ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ_เดชเตˆเดคเตเดคเตบ3.

เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต

cpapi เดฎเตŠเดกเตเดฏเต‚เดณเดฟเดจเตเดฑเต† เด˜เดŸเด•เด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพเด•เตเด•เต, เดฎเตŠเดกเตเดฏเต‚เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. cpapi เด•เตเดฑเดžเตเดžเดคเต เดฐเดฃเตเดŸเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เด•เตเดฒเดพเดธเตเด•เดณเต†เด™เตเด•เดฟเดฒเตเด‚:

APClient ะธ APIClientArgs

from cpapi import APIClient, APIClientArgs

เด•เตเดฒเดพเดธเต APIClientArgs API เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เตเด‚ เด•เตเดฒเดพเดธเดฟเดฒเต‡เด•เตเด•เตเด‚ เด•เดฃเด•เตเดทเตป เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพเด•เตเด•เต เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดคเดฎเตเดฃเตเดŸเต APClient API-เดฏเตเดฎเดพเดฏเตเดณเตเดณ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเดคเตเดคเดฟเดจเตเดฑเต† เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดคเด‚.

เด•เดฃเด•เตเดทเตป เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เตเดจเตเดจเต

API-เดฏเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดตเดฟเดตเดฟเดง เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดจเดฟเตผเดตเดšเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพ เด•เตเดฒเดพเดธเดฟเดจเตเดฑเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต APIClientArgs. เดคเดคเตเดตเดคเตเดคเดฟเตฝ, เด…เดคเดฟเดจเตเดฑเต† เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เดจเดฟเดถเตเดšเดฏเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต, เดจเดฟเดฏเดจเตเดคเตเดฐเดฃ เดธเต†เตผเดตเดฑเดฟเตฝ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด…เดต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ.

client_args = APIClientArgs()

เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดฎเต‚เดจเตเดจเดพเด‚ เด•เด•เตเดทเดฟ เดนเต‹เดธเตเดฑเตเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, API เดธเต†เตผเดตเดฑเดฟเดจเตเดฑเต† (เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต เดธเต†เตผเดตเตผ เดŽเดจเตเดจเตเด‚ เด…เดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต) เด•เตเดฑเดžเตเดžเดคเต IP เดตเดฟเดฒเดพเดธเดฎเต‹ เดนเต‹เดธเตเดฑเตเดฑเต เดจเดพเดฎเดฎเต‹ เดจเดฟเด™เตเด™เตพ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดšเตเดตเดŸเต†เดฏเตเดณเตเดณ เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เดžเด™เตเด™เตพ เดธเต†เตผเดตเตผ เด•เดฃเด•เตเดทเตป เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดจเดฟเตผเดตเตเดตเดšเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต เดธเต†เตผเดตเดฑเดฟเดจเตเดฑเต† IP เดตเดฟเดฒเดพเดธเด‚ เด’เดฐเต เดธเตเดŸเตเดฐเดฟเด‚เด—เต เด†เดฏเดฟ เดจเตฝเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

client_args = APIClientArgs(server='192.168.47.241')

API เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดตเตเดจเตเดจ เดŽเดฒเตเดฒเดพ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเตเด‚ เด…เดตเดฏเตเดŸเต† เดธเตเดฅเดฟเดฐ เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตเด‚ เดจเต‹เด•เตเด•เดพเด‚:

APIClientArgs เด•เตเดฒเดพเดธเดฟเดจเตเดฑเต† __init__ เดฐเต€เดคเดฟเดฏเตเดŸเต† เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเตเด•เตพ

class APIClientArgs:
    """
    This class provides arguments for APIClient configuration.
    All the arguments are configured with their default values.
    """

    # port is set to None by default, but it gets replaced with 443 if not specified
    # context possible values - web_api (default) or gaia_api
    def __init__(self, port=None, fingerprint=None, sid=None, server="127.0.0.1", http_debug_level=0,
                 api_calls=None, debug_file="", proxy_host=None, proxy_port=8080,
                 api_version=None, unsafe=False, unsafe_auto_accept=False, context="web_api"):
        self.port = port
        # management server fingerprint
        self.fingerprint = fingerprint
        # session-id.
        self.sid = sid
        # management server name or IP-address
        self.server = server
        # debug level
        self.http_debug_level = http_debug_level
        # an array with all the api calls (for debug purposes)
        self.api_calls = api_calls if api_calls else []
        # name of debug file. If left empty, debug data will not be saved to disk.
        self.debug_file = debug_file
        # HTTP proxy server address (without "http://")
        self.proxy_host = proxy_host
        # HTTP proxy port
        self.proxy_port = proxy_port
        # Management server's API version
        self.api_version = api_version
        # Indicates that the client should not check the server's certificate
        self.unsafe = unsafe
        # Indicates that the client should automatically accept and save the server's certificate
        self.unsafe_auto_accept = unsafe_auto_accept
        # The context of using the client - defaults to web_api
        self.context = context

APIClientArgs เด•เตเดฒเดพเดธเดฟเดจเตเดฑเต† เดธเดจเตเดฆเตผเดญเด™เตเด™เดณเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดตเตเดจเตเดจ เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเตเด•เตพ เดšเต†เด•เตเด•เต เดชเต‹เดฏเดฟเดจเตเดฑเต เด…เดกเตเดฎเดฟเดจเดฟเดธเตเดŸเตเดฐเต‡เดฑเตเดฑเตผเดฎเดพเตผเด•เตเด•เต เด…เดตเดฌเต‹เดงเดœเดจเตเดฏเดฎเดพเดฃเต†เดจเตเดจเตเด‚ เด…เดงเดฟเด• เด…เดญเดฟเดชเตเดฐเดพเดฏเด™เตเด™เตพ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเต†เดจเตเดจเตเด‚ เดžเดพเตป เดตเดฟเดถเตเดตเดธเดฟเด•เตเด•เตเดจเตเดจเต.

APClient เดตเดดเดฟเดฏเตเด‚ เดธเดจเตเดฆเตผเดญ เดฎเดพเดจเต‡เดœเตผ เดตเดดเดฟเดฏเตเด‚ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต

เด•เตเดฒเดพเดธเต APClient เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด‚ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏ เดฎเดพเตผเด—เด‚ เดธเดจเตเดฆเตผเดญ เดฎเดพเดจเต‡เดœเตผ เดตเดดเดฟเดฏเดพเดฃเต. 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)

เดญเดพเดตเดฟเดฏเดฟเตฝ เด•เตเดฒเดพเดธเต เดŽเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด• APClient เด“เดฐเต‹ API เด•เต‹เดณเตเด‚ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด‚ (เดฐเต€เดคเดฟเด•เตพ api_call ะธ api_query, เดžเด™เตเด™เตพ เด…เดตเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด•เตเดฑเดšเตเดšเตเด•เต‚เดŸเดฟ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด‚) API เดธเต†เตผเดตเดฑเดฟเดฒเต† sha1 เดซเดฟเด‚เด—เตผเดชเตเดฐเดฟเดจเตเดฑเต เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเต. เดŽเดจเตเดจเดพเตฝ, API เดธเต†เตผเดตเตผ เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเดฟเดจเตเดฑเต† sha1 เดซเดฟเด‚เด—เตผเดชเตเดฐเดฟเดจเตเดฑเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด’เดฐเต เดชเดฟเดถเด•เต เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏเดพเตฝ (เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเต เด…เดœเตเดžเดพเดคเดฎเดพเดฃเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฎเดพเดฑเตเดฑเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต), เดฐเต€เดคเดฟ เดšเต†เด•เตเด•เต_เดซเดฟเด‚เด—เตผเดชเตเดฐเดฟเดจเตเดฑเต เดฒเต‹เด•เตเด•เตฝ เดฎเต†เดทเต€เดจเดฟเตฝ เด…เดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เดธเตเดตเดฏเดฎเต‡เดต เดšเต‡เตผเด•เตเด•เดพเดจเตเด‚ เดฎเดพเดฑเตเดฑเดพเดจเตเด‚ เด…เดตเดธเดฐเด‚ เดจเตฝเด•เตเด‚. เดˆ เดชเดฐเดฟเดถเต‹เดงเดจ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ (เดŽเดจเตเดจเดพเตฝ 127.0.0.1 เดฒเต‡เด•เตเด•เต เด•เดฃเด•เตโ€Œเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ, API เดธเต†เตผเดตเดฑเดฟเตฝ เดคเดจเตเดจเต† เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต‡ เด‡เดคเต เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเต‚), APIClientArgs เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต - เดธเตเดฐเด•เตเดทเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค_เดธเตเดตเดฏเด‚_เด…เด‚เด—เต€เด•เดฐเดฟเด•เตเด•เตเด• ("เด•เดฃเด•เตเดทเตป เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดจเดฟเตผเดตเดšเดฟเด•เตเด•เตเดจเตเดจเต" เดŽเดจเตเดจเดคเดฟเตฝ เดจเต‡เดฐเดคเตเดคเต† APIClientArgs-เดจเต† เด•เตเดฑเดฟเดšเตเดšเต เด•เต‚เดŸเตเดคเตฝ เด•เดพเดฃเตเด•).

client_args = APIClientArgs(unsafe_auto_accept=True)

API เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเตเด•

ะฃ APClient API เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต 3 เดฐเต€เดคเดฟเด•เตพ เด‰เดฃเตเดŸเต, เด…เดต เด“เดฐเต‹เดจเตเดจเตเด‚ เด…เตผเดคเตเดฅเด‚ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต เดธเดฟเดกเต(เดธเต†เดทเตป-เดเดกเดฟ), เด‡เดคเต เดนเต†เดกเดฑเดฟเดฒเต† เด“เดฐเต‹ เดคเตเดŸเตผเดจเตเดจเตเดณเตเดณ เดŽเดชเดฟเด เด•เต‹เดณเดฟเดฒเตเด‚ เดธเตเดตเดฏเดฎเต‡เดต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต (เดˆ เดชเดฐเดพเดฎเต€เดฑเตเดฑเดฑเดฟเดจเตเดฑเต† เดคเดฒเด•เตเด•เต†เดŸเตเดŸเดฟเดฒเต† เดชเต‡เดฐเต X-chkp-sid), เด…เดคเดฟเดจเดพเตฝ เดˆ เดชเดฐเดพเดฎเต€เดฑเตเดฑเตผ เด•เต‚เดŸเตเดคเตฝ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ.

เดฒเต‹เด—เดฟเตป เดฐเต€เดคเดฟ

เดฒเต‹เด—เดฟเดจเตเด‚ เดชเดพเดธเตโ€Œเดตเต‡เดกเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด“เดชเตเดทเตป (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเดตเตเด‚ เด…เดกเตเดฎเดฟเตป เดชเดพเดธเตโ€Œเดตเต‡เดกเตเด‚ 1q2w3e เดชเตŠเดธเดฟเดทเดฃเตฝ เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเตเด•เดณเดพเดฏเดฟ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเต):

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

เดฒเต‹เด—เดฟเตป เดฐเต€เดคเดฟเดฏเดฟเตฝ เด…เดงเดฟเด• เด“เดชเตโ€Œเดทเดฃเตฝ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเตเด‚ เดฒเดญเตเดฏเดฎเดพเดฃเต; เด…เดตเดฏเตเดŸเต† เดชเต‡เดฐเตเด•เดณเตเด‚ เดกเดฟเดซเต‹เตพเดŸเตเดŸเต เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตเด‚ เด‡เดตเดฟเดŸเต†เดฏเตเดฃเตเดŸเต:

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

Api_key เดฐเต€เดคเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต_เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเตเด•

เด’เดฐเต เดŽเดชเดฟเด เด•เต€ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด“เดชเตเดทเตป (เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต เดชเดคเดฟเดชเตเดชเต R80.40/เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต API v1.6 เดฎเตเดคเตฝ เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเต, "3TsbPJ8ZKjaJGvFyoFqHFA==" API เด•เต€ เด…เด‚เด—เต€เด•เดพเดฐ เดฐเต€เดคเดฟเดฏเตเดณเตเดณ เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต เดธเต†เตผเดตเดฑเดฟเดฒเต† เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเดฟเตฝ เด’เดฐเดพเดณเตเดŸเต† API เด•เต€ เดฎเต‚เดฒเตเดฏเดฎเดพเดฃเดฟเดคเต:

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

เดฐเต€เดคเดฟเดฏเดฟเดฒเดพเดฃเต api_key เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต_เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเตเด• เดฐเต€เดคเดฟเดฏเดฟเดฒเตเดณเตเดณ เด…เดคเต‡ เด“เดชเตเดทเดฃเตฝ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดฒเดญเตเดฏเดฎเดพเดฃเต เดฒเต‡เดพเด—เดฟเตป.

เดฒเต‹เด—เดฟเตป_เด†เดธเต_เดฑเต‚เดŸเตเดŸเต เดฐเต€เดคเดฟ

API เดธเต†เตผเดตเตผ เด‰เดณเตเดณ เด’เดฐเต เดฒเต‹เด•เตเด•เตฝ เดฎเต†เดทเต€เดจเดฟเดฒเต‡เด•เตเด•เต เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เด“เดชเตเดทเตป:

     login = client.login_as_root()

เดˆ เดฐเต€เดคเดฟเด•เตเด•เต เดฐเดฃเตเดŸเต เด“เดชเตเดทเดฃเตฝ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดฎเดพเดคเตเดฐเดฎเต‡ เดฒเดญเตเดฏเดฎเดพเด•เต‚:

domain=None, payload=None

เด’เดŸเตเดตเดฟเตฝ API เดธเตเดตเดฏเด‚ เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต

เดฐเต€เดคเดฟเด•เดณเดฟเดฒเต‚เดŸเต† API เด•เต‹เดณเตเด•เตพ เดšเต†เดฏเตเดฏเดพเตป เดžเด™เตเด™เตพเด•เตเด•เต เดฐเดฃเตเดŸเต เด“เดชเตเดทเดจเตเด•เดณเตเดฃเตเดŸเต api_call ะธ api_query. เด…เดต เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดตเตเดฏเดคเตเดฏเดพเดธเด‚ เดŽเดจเตเดคเดพเดฃเต†เดจเตเดจเต เดจเดฎเตเด•เตเด•เต เดจเต‹เด•เตเด•เดพเด‚.

api_call

เดเดคเต เด•เต‹เดณเตเด•เตพเด•เตเด•เตเด‚ เดˆ เดฐเต€เดคเดฟ เดฌเดพเดงเด•เดฎเดพเดฃเต. เด†เดตเดถเตเดฏเดฎเต†เด™เตเด•เดฟเตฝ เดฑเดฟเด•เตเดตเดธเตเดฑเตเดฑเต เดฌเต‹เดกเดฟเดฏเดฟเตฝ 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_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 เด•เต‹เดณเตเด•เดณเตเดŸเต† เดซเดฒเด™เตเด™เตพ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เด‡เดคเดฟเดจเตเดถเต‡เดทเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เตเดฒเดพเดธเดฟเดจเตเดฑเต† เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเด‚ เดฐเต€เดคเดฟเด•เดณเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚ APIR เดชเตเดฐเดคเดฟเด•เดฐเดฃเด‚(เดธเดจเตเดฆเตผเดญ เดฎเดพเดจเต‡เดœเดฑเดฟเดจเด•เดคเตเดคเตเด‚ เดชเตเดฑเดคเตเดคเตเด‚). เด•เตเดฒเดพเดธเตเดธเดฟเตฝ APIR เดชเตเดฐเดคเดฟเด•เดฐเดฃเด‚ 4 เดฐเต€เดคเดฟเด•เดณเตเด‚ 5 เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเด‚ เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เดจเดฟเดถเตเดšเดฏเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต; เดžเด™เตเด™เตพ เดเดฑเตเดฑเดตเตเด‚ เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸเดตเดฏเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดธเดฟเด•เตเด•เตเด‚.

เดชเตˆเดคเตเดคเตบ SDK เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดšเต†เด•เตเด•เต เดชเต‹เดฏเดฟเดจเตเดฑเต API เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต

เดตเดฟเดœเดฏเด‚

เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, API เด•เต‹เตพ เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฃเต†เดจเตเดจเตเด‚ เด’เดฐเต เดซเดฒเด‚ เดจเตฝเด•เดฟเดฏเต†เดจเตเดจเตเด‚ เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเดจเตเดจเดคเต เดจเดฒเตเดฒ เด†เดถเดฏเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. เด‡เดคเดฟเดจเตŠเดฐเต เดฐเต€เดคเดฟเดฏเตเดฃเตเดŸเต เดตเดฟเดœเดฏเด‚:

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

API เด•เต‹เตพ เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฃเต†เด™เตเด•เดฟเตฝ True เดจเตฝเด•เตเดจเตเดจเต (เดชเตเดฐเดคเดฟเด•เดฐเดฃ เด•เต‹เดกเต - 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

เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดตเดฟเดœเดฏ เดจเดฟเดฒเดฏเตเดŸเต† เดฎเต‚เดฒเตเดฏเด‚ เดฎเดพเดฑเตเดฑเต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดจเตเดจเต‡เด•เตเด•เดพเด‚. เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดฎเดพเดฏเดฟ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดตเดฟเดŸเต† เดŽเดจเตเดคเตเด‚ เดธเตเดฅเดพเดชเดฟเด•เตเด•เดพเด‚, เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เดธเตเดŸเตเดฐเดฟเด‚เด—เต เดชเต‹เดฒเตเด‚. เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดฏเดฅเดพเตผเดคเตเดฅ เด‰เดฆเดพเดนเดฐเดฃเด‚ เดšเดฟเดฒ เด…เดจเตเดฌเดจเตเดง เดตเตเดฏเดตเดธเตเดฅเด•เดณเดฟเตฝ เดˆ เดชเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดคเต†เดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเตเดจเดƒเดธเดœเตเดœเดฎเดพเด•เตเด•เตเดจเตเดจเดคเดพเดฃเต. เดคเดพเดดเต†, เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต เดธเต†เตผเดตเดฑเดฟเตฝ เดŸเดพเดธเตเด•เตเด•เตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด‰เดฆเดพเดนเดฐเดฃเด‚ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•, เดŽเดจเตเดจเดพเตฝ เดˆ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดชเดฐเดพเดœเดฏเดชเตเดชเต†เดŸเตเดŸเดคเดพเดฏเดฟ เดžเด™เตเด™เตพ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เตเด‚ (เดžเด™เตเด™เตพ เดตเดฟเดœเดฏ เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดธเดœเตเดœเดฎเดพเด•เตเด•เตเด‚ เดคเต†เดฑเตเดฑเดพเดฏ, 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']}

เดชเดฟเดถเด•เต เดธเดจเตเดฆเต‡เดถเด‚

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 เดŽเดจเตเดจ เดธเดฌเตโ€Œเดจเต†เดฑเตเดฑเดฟเดจเตเดฑเต† เดŽเดฒเตเดฒเดพ IP เดตเดฟเดฒเดพเดธเด™เตเด™เดณเตเด‚ เดžเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต†เดจเตเดจเต เดชเดฑเดฏเดพเด‚, เด…เดคเดฟเตฝ เด…เดตเดธเดพเดจเดคเตเดคเต† เด’เด•เตโ€Œเดฑเตเดฑเดฑเตเดฑเต 5 เด†เดฃเต, เดนเต‹เดธเตเดฑเตเดฑเต เดคเดฐเดคเตเดคเดฟเดจเตเดฑเต† เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเตเด•เดณเดพเดฏเดฟ, เด•เต‚เดŸเดพเดคเต† เดฎเดฑเตเดฑเต เดŽเดฒเตเดฒเดพ IP เดตเดฟเดฒเดพเดธเด™เตเด™เดณเตเด‚ เดตเดฟเดฒเดพเดธ เดถเตเดฐเต‡เดฃเดฟ เดคเดฐเดคเตเดคเดฟเดจเตเดฑเต† เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเตเด•เดณเดพเดฏเดฟ เดŽเดดเตเดคเตเด•. เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดธเดฌเตเดจเต†เดฑเตเดฑเต เดตเดฟเดฒเดพเดธเดตเตเด‚ เดชเตเดฐเด•เตเดทเต‡เดชเดฃ เดตเดฟเดฒเดพเดธเดตเตเด‚ เด’เดดเดฟเดตเดพเด•เตเด•เตเด•.

เด…เดคเดฟเดจเดพเตฝ, เดˆ เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเตเดตเดŸเต†เดฏเตเดฃเตเดŸเต, เด•เต‚เดŸเดพเดคเต† เดนเต‹เดธเตเดฑเตเดฑเต เดคเดฐเดคเตเดคเดฟเดจเตเดฑเต† 50 เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเตเด•เดณเตเด‚ เดตเดฟเดฒเดพเดธ เดถเตเดฐเต‡เดฃเดฟเดฏเตเดŸเต† 51 เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเตเด•เดณเตเด‚ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเต. เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเตป, 101 API เด•เต‹เดณเตเด•เตพ เด†เดตเดถเตเดฏเดฎเดพเดฃเต (เด…เดตเดธเดพเดจเด‚ เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เดณเดฟเดจเต† เด•เดฃเด•เตเด•เดพเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ). เด•เต‚เดŸเดพเดคเต†, เดŸเตˆเด‚เด‡เดฑเตเดฑเต เดฎเตŠเดกเตเดฏเต‚เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเตเดตเดฐเต† เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเดพเตป เดŽเดŸเตเด•เตเด•เตเดจเตเดจ เดธเดฎเดฏเด‚ เดžเด™เตเด™เตพ เด•เดฃเด•เตเด•เดพเด•เตเด•เตเดจเตเดจเต.

เด†เดกเต-เดนเต‹เดธเตเดฑเตเดฑเตเด‚ เด†เดกเต-เด…เดกเตเดฐเดธเต-เดฑเต‡เดžเตเดšเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเตเดณเตเดณ เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต

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 เด•เต‹เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด…เดคเต‡ เดชเตเดฐเดถเตเดจเด‚ เดŽเด™เตเด™เดจเต† เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเต เดจเต‹เด•เตเด•เดพเด‚ add-objects-batch, API เดชเดคเดฟเดชเตเดชเต 1.6-เตฝ เด‡เดคเดฟเดจเตเดณเตเดณ เดชเดฟเดจเตเดคเตเดฃ เดšเต‡เตผเดคเตเดคเต. เด’เดฐเต API เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเดฟเตฝ เด’เดฐเต‡เดธเดฎเดฏเด‚ เดจเดฟเดฐเดตเดงเดฟ เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเตเด•เตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดพเตป เดˆ เด•เต‹เตพ เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เด‡เดต เดตเตเดฏเดคเตเดฏเดธเตเดค เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเตเด•เดณเดพเด•เดพเด‚ (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดนเต‹เดธเตเดฑเตเดฑเตเด•เตพ, เดธเดฌเตโ€Œเดจเต†เดฑเตเดฑเตเด•เตพ, เดตเดฟเดฒเดพเดธ เดถเตเดฐเต‡เดฃเดฟเด•เตพ). เด…เด™เตเด™เดจเต†, เดžเด™เตเด™เดณเตเดŸเต† เดšเตเดฎเดคเดฒ เด’เดฐเต 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 เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเตเด•เดณเดฟเตฝ, เด’เดฐเต เดฌเดพเดšเตเดšเต เดŸเตˆเดชเตเดชเต เด•เต‹เตพ 10 เดฎเดŸเด™เตเด™เต เดตเต‡เด—เดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต. เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเตเด•เดณเตเดŸเต† เด’เดฐเต เดตเดฒเดฟเดฏ เดธเด‚เด–เตเดฏเดฏเดฟเตฝ, เดตเตเดฏเดคเตเดฏเดพเดธเด‚ เด•เต‚เดŸเตเดคเตฝ เดถเตเดฐเดฆเตเดงเต‡เดฏเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚.

เด‡เดชเตเดชเต‹เตพ เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเต เดจเต‹เด•เตเด•เดพเด‚ set-objects-batch. เดˆ 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 เด•เต‹เดณเดฟเตฝ เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เด’เดฌเตโ€Œเดœเด•เตโ€Œเดฑเตเดฑเตเด•เตพ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดพเด‚ delete-objects-batch. เดฎเตเดฎเตเดชเต เดธเตƒเดทเตเดŸเดฟเดšเตเดš เดŽเดฒเตเดฒเดพ เดนเต‹เดธเตเดฑเตเดฑเตเด•เดณเต†เดฏเตเด‚ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด•เต‹เดกเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดจเต‹เด•เตเด•เดพเด‚ add-objects-batch.

เดกเดฟเดฒเต€เดฑเตเดฑเต-เด’เดฌเตเดœเด•เตเดฑเตเดฑเตเดธเต-เดฌเดพเดšเตเดšเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฌเตเดœเด•เตเดฑเตเดฑเตเด•เตพ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดจเตเดจเต

from cpapi import APIClient, APIClientArgs

client_args = APIClientArgs(server="192.168.47.240")

objects_list_ip = []
objects_list_range = []

for ip in range(5,255,5):
    data = {"name": f'h_192.168.0.{ip}'}
    objects_list_ip.append(data)

first_ip = 1
last_ip = 4
while last_ip < 255:
    data = {"name": f"r_192.168.0.{first_ip}-{last_ip}"}
    objects_list_range.append(data)
    first_ip+=5
    last_ip+=5

data_for_batch = {
  "objects" : [ {
    "type" : "host",
    "list" : objects_list_ip
}, {
    "type" : "address-range",
    "list" : objects_list_range
  }]
}

with APIClient(client_args) as client: 
     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
     delete_objects_batch = client.api_call("delete-objects-batch", data_for_batch)
     publish = client.api_call("publish")

print(delete_objects_batch.data)

เดšเต†เด•เตเด•เต เดชเต‹เดฏเดฟเดจเตเดฑเต เดธเต‹เดซเตโ€Œเดฑเตเดฑเตโ€Œเดตเต†เดฏเดฑเดฟเดจเตเดฑเต† เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเตเด•เดณเดฟเตฝ เดฆเตƒเดถเตเดฏเดฎเดพเด•เตเดจเตเดจ เดŽเดฒเตเดฒเดพ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เดณเตเด‚ เด‰เดŸเดจเดŸเดฟ API เด•เต‹เดณเตเด•เตพ เดจเต‡เดŸเตเดจเตเดจเต. เด…เด™เตเด™เดจเต†, R80.40-เตฝ เดฑเดฟเดตเตผเดŸเตเดŸเต เดŸเต เดฑเดฟเดตเดฟเดทเตป, เดธเตโ€ŒเดฎเดพเตผเดŸเตเดŸเต เดŸเดพเดธเตโ€Œเด•เต เดคเตเดŸเด™เตเด™เดฟเดฏ โ€œเดธเดตเดฟเดถเต‡เดทเดคเด•เตพโ€ เดชเตเดฐเดคเตเดฏเด•เตเดทเดชเตเดชเต†เดŸเตเดŸเต, เด…เดตเดฏเตโ€Œเด•เตเด•เดพเดฏเดฟ เด…เดจเตเดฌเดจเตเดง API เด•เต‹เดณเตเด•เตพ เด‰เดŸเดจเดŸเดฟ เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เดฟ. เด•เต‚เดŸเดพเดคเต†, เดฒเต†เด—เดธเดฟ เด•เตบเดธเต‹เดณเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดเด•เต€เด•เตƒเดค เดชเต‹เดณเดฟเดธเดฟ เดฎเต‹เดกเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฎเตเดชเต‹เตพ เดŽเดฒเตเดฒเดพ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเด‚ API เดชเดฟเดจเตเดคเตเดฃ เดจเต‡เดŸเตเดจเตเดจเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดธเต‹เดซเตโ€Œเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ เดชเดคเดฟเดชเตเดชเต R80.40-เดฒเต† เดฆเต€เตผเด˜เด•เดพเดฒเดฎเดพเดฏเดฟ เด•เดพเดคเตเดคเดฟเดฐเตเดจเตเดจ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต, เดฒเต†เด—เดธเดฟ เดฎเต‹เดกเดฟเตฝ เดจเดฟเดจเตเดจเต เดฏเต‚เดฃเดฟเดซเตˆเดกเต เดชเต‹เดณเดฟเดธเดฟ เดฎเต‹เดกเดฟเดฒเต‡เด•เตเด•เต HTTPS เด‡เตปเดธเตเดชเต†เด•เตเดทเตป เดชเต‹เดณเดฟเดธเดฟเดฏเตเดŸเต† เดจเต€เด•เตเด•เดฎเดพเดฃเต, เดˆ เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเต เด‰เดŸเดจเดŸเดฟ API เด•เต‹เดณเตเด•เตพ เดฒเดญเดฟเดšเตเดšเต. HTTPS เด‡เตปเดธเตเดชเต†เด•เตเดทเตป เดชเต‹เดณเดฟเดธเดฟเดฏเตเดŸเต† เด‰เดฏเตผเดจเตเดจ เดธเตเดฅเดพเดจเดคเตเดคเต‡เด•เตเด•เต เด’เดฐเต เดจเดฟเดฏเดฎเด‚ เดšเต‡เตผเด•เตเด•เตเดจเตเดจ เด•เต‹เดกเดฟเดจเตเดฑเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‡เดคเดพ, เดชเดฐเดฟเดถเต‹เดงเดจเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต 3 เดตเดฟเดญเดพเด—เด™เตเด™เดณเต† (เด†เดฐเต‹เด—เตเดฏเด‚, เดงเดจเด•เดพเดฐเตเดฏเด‚, เดธเตผเด•เตเด•เดพเตผ เดธเต‡เดตเดจเด™เตเด™เตพ) เด’เดดเดฟเดตเดพเด•เตเด•เตเดจเตเดจเต, เด…เดต เดจเดฟเดฐเดตเดงเดฟ เดฐเดพเดœเตเดฏเด™เตเด™เดณเดฟเตฝ เดจเดฟเดฏเดฎเด‚ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เดชเดฐเดฟเดถเต‹เดงเดจเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเดฐเต‹เดงเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

HTTPS เดชเดฐเดฟเดถเต‹เดงเดจ เดจเดฏเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดจเดฟเดฏเดฎเด‚ เดšเต‡เตผเด•เตเด•เตเด•

from cpapi import APIClient, APIClientArgs

client_args = APIClientArgs(server="192.168.47.240")

data = {
  "layer" : "Default Layer",
  "position" : "top",
  "name" : "Legal Requirements",
  "action": "bypass",
  "site-category": ["Health", "Government / Military", "Financial Services"]
}

with APIClient(client_args) as client: 
     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
     add_https_rule = client.api_call("add-https-rule", data)
     publish = client.api_call("publish")

เดšเต†เด•เตเด•เต เดชเต‹เดฏเดฟเดจเตเดฑเต เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต เดธเต†เตผเดตเดฑเดฟเตฝ เดชเตˆเดคเตเดคเตบ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต

เดŽเดฒเตเดฒเดพเด‚ เด’เดจเตเดจเตเดคเดจเตเดจเต† README.md เด•เตบเดŸเตเดฐเต‹เตพ เดธเต†เตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเต‡เดฐเดฟเดŸเตเดŸเต เดชเตˆเดคเตเดคเตบ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเด‚ เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเดฑเตเดฑเตŠเดฐเต เดฎเต†เดทเต€เดจเดฟเตฝ เดจเดฟเดจเตเดจเต API เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเดพเดคเตเดคเดชเตเดชเต‹เตพ เด‡เดคเต เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. เดžเดพเตป เดฎเตŠเดกเตเดฏเต‚เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดจเต‹เด•เตเด•เตเดจเตเดจ เด’เดฐเต เด†เดฑเต เดฎเดฟเดจเดฟเดฑเตเดฑเต เดตเต€เดกเดฟเดฏเต‹ เดฑเต†เด•เตเด•เต‹เตผเดกเต เดšเต†เดฏเตเดคเต cpapi เดจเดฟเดฏเดจเตเดคเตเดฐเดฃ เดธเต†เตผเดตเดฑเดฟเตฝ เดชเตˆเดคเตเดคเตบ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฑเต† เดธเดตเดฟเดถเต‡เดทเดคเด•เดณเตเด‚. เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ, เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เด“เดกเดฟเดฑเตเดฑเดฟเด‚เด—เต เดชเต‹เดฒเตเดณเตเดณ เด’เดฐเต เดŸเดพเดธเตโ€Œเด•เตเด•เดฟเดจเดพเดฏเดฟ เด’เดฐเต เดชเตเดคเดฟเดฏ เด—เต‡เดฑเตเดฑเตโ€Œเดตเต‡เดฏเตเดŸเต† เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจ เด’เดฐเต เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต. เดธเตเดฐเด•เตเดทเดพ เดชเดฐเดฟเดถเต‹เดงเดจ. เดŽเดจเดฟเด•เตเด•เต เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸ เดธเดตเดฟเดถเต‡เดทเดคเด•เดณเดฟเตฝ: เดชเตˆเดคเตเดคเตบ 2.7 เตฝ เดซเด‚เด—เตเดทเตป เด‡เดคเตเดตเดฐเต† เดชเตเดฐเดคเตเดฏเด•เตเดทเดชเตเดชเต†เดŸเตเดŸเดฟเดŸเตเดŸเดฟเดฒเตเดฒ เด‡เตปเดชเตเดŸเตเดŸเต, เด…เดคเดฟเดจเดพเตฝ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เดจเตฝเด•เตเดจเตเดจ เดตเดฟเดตเดฐเด™เตเด™เตพ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เด’เดฐเต เดซเด‚เด—เตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต เดฑเต‹_เด‡เตปเดชเตเดŸเตเดŸเต. เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดฎเดฑเตเดฑเต เดฎเต†เดทเต€เดจเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด•เต‹เดกเต เดธเดฎเดพเดจเดฎเดพเดฃเต, เดซเด‚เด—เตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เด•เต‚เดŸเตเดคเตฝ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฃเต เดฒเต‹เด—เดฟเตป_เด†เดธเต_เดฑเต‚เดŸเตเดŸเต, เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต เดธเต†เตผเดตเดฑเดฟเดจเตเดฑเต† เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚, เดชเดพเดธเตเดตเต‡เดกเต, 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()

เด’เดฐเต เดชเดพเดธเตโ€Œเดตเต‡เดกเต เดจเดฟเด˜เดฃเตเดŸเต เด•เต‚เดŸเดฟเดฏเตเดณเตเดณ เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃ เดซเดฏเตฝ added_pass.conf
{
"passwords" : ["malware","malicious","infected","Infected"],
"phrases" : ["password","Password","Pass","pass","codigo","key","pwd","ะฟะฐั€ะพะปัŒ","ะŸะฐั€ะพะปัŒ","ะšะปัŽั‡","ะบะปัŽั‡","ัˆะธั„ั€","ะจะธั„ั€"] }

เดคเต€เดฐเตเดฎเดพเดจเด‚

เดˆ เดฒเต‡เด–เดจเด‚ เดœเต‹เดฒเดฟเดฏเตเดŸเต† เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเดพเดงเตเดฏเดคเด•เตพ เดฎเดพเดคเตเดฐเด‚ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต เดชเตˆเดคเตเดคเตบ SDK เดฎเตŠเดกเตเดฏเต‚เดณเตเด‚ cpapi(เดจเดฟเด™เตเด™เตพ เดŠเดนเดฟเดšเตเดšเดคเตเดชเต‹เดฒเต†, เด‡เดต เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดชเดฐเตเดฏเดพเดฏเด™เตเด™เดณเดพเดฃเต), เด•เต‚เดŸเดพเดคเต† เดˆ เดฎเตŠเดกเตเดฏเต‚เดณเดฟเดฒเต† เด•เต‹เดกเต เดชเด เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต†, เด…เดคเดฟเดจเต‹เดŸเตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด•เต‚เดŸเตเดคเตฝ เดธเดพเดงเตเดฏเดคเด•เตพ เดจเดฟเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเตเด‚. เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เด•เตเดฒเดพเดธเตเด•เตพ, เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ, เดฐเต€เดคเดฟเด•เตพ, เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เดŽเดจเตเดจเดฟเดตเดฏเตโ€Œเด•เตเด•เตŠเดชเตเดชเด‚ เด‡เดคเต เดธเดชเตเดฒเดฟเดฎเต†เดจเตเดฑเต เดšเต†เดฏเตเดฏเดพเตป เดจเดฟเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเดพเด•เดพเด‚. เดตเดฟเดญเดพเด—เดคเตเดคเดฟเดฒเต† เดšเต†เด•เตเด•เต เดชเต‹เดฏเดฟเดจเตเดฑเดฟเดจเดพเดฏเดฟ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดœเต‹เดฒเดฟ เดชเด™เตเด•เดฟเดŸเดพเดจเตเด‚ เดฎเดฑเตเดฑเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เด•เดพเดฃเดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚ เด•เต‹เดกเตเดนเดฌเต เดธเดฎเต‚เดนเดคเตเดคเดฟเตฝ เดšเต†เด•เตเด•เตเดฎเต‡เดฑเตเดฑเตเดธเต, เด‡เดคเต เด‰เตฝเดชเตเดชเดจเตเดจ เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเดฐเต†เดฏเตเด‚ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเต†เดฏเตเด‚ เด’เดฐเตเดฎเดฟเดšเตเดšเต เด•เตŠเดฃเตเดŸเตเดตเดฐเตเดจเตเดจเต.

เดธเดจเตเดคเต‹เดทเด•เดฐเดฎเดพเดฏ เด•เต‹เดกเดฟเด‚เด—เตเด‚ เด…เดตเดธเดพเดจเด‚ เดตเดฐเต† เดตเดพเดฏเดฟเดšเตเดšเดคเดฟเดจเต เดจเดจเตเดฆเดฟ!

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•