Python SDK เจจเจพเจฒ เจšเฉˆเฉฑเจ• เจชเฉเจ†เจ‡เฉฐเจŸ API เจจเฉ‚เฉฐ เจธเจฐเจฒ เจฌเจฃเจพเจ‰เจฃเจพ

Python SDK เจจเจพเจฒ เจšเฉˆเฉฑเจ• เจชเฉเจ†เจ‡เฉฐเจŸ API เจจเฉ‚เฉฐ เจธเจฐเจฒ เจฌเจฃเจพเจ‰เจฃเจพAPIs เจฆเฉ‡ เจจเจพเจฒ เจชเจฐเจธเจชเจฐ เจชเฉเจฐเจญเจพเจต เจฆเฉ€ เจชเฉ‚เจฐเฉ€ เจธเจผเจ•เจคเฉ€ เจ‰เจฆเฉ‹เจ‚ เจชเฉเจฐเจ—เจŸ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจ•เฉ‹เจก เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ•เจ เฉ‡ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเจฆเฉ‹เจ‚ API เจœเจตเจพเจฌเจพเจ‚ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจจ เจฒเจˆ เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจคเฉŒเจฐ 'เจคเฉ‡ API เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจŸเฉ‚เจฒ เจคเจฟเจ†เจฐ เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เจน เจ…เจœเฉ‡ เจตเฉ€ เจงเจฟเจ†เจจ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจนเฉˆ เจชเจพเจˆเจฅเจจ เจธเจพเจซเจŸเจตเฉ‡เจ…เจฐ เจกเจฟเจตเฉˆเจฒเจชเจฎเฉˆเจ‚เจŸ เจ•เจฟเฉฑเจŸ (เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจชเจพเจˆเจฅเจจ SDK เจตเจœเฉ‹เจ‚ เจœเจพเจฃเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ) เจฒเจˆ เจชเฉเจ†เจ‡เฉฐเจŸ เจชเฉเจฐเจฌเฉฐเจงเจจ API เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเฉ‹, เจชเจฐ เจตเจฟเจ…เจฐเจฅ เจตเจฟเฉฑเจš. เจ‡เจน เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจ…เจคเฉ‡ เจ†เจŸเฉ‹เจฎเฉ‡เจธเจผเจจ เจฆเฉ‡ เจ‰เจคเจธเจผเจพเจนเฉ€เจ†เจ‚ เจฆเฉ‡ เจœเฉ€เจตเจจ เจจเฉ‚เฉฐ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจฐเจฒ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจชเจพเจˆเจฅเจจ เจจเฉ‡ เจนเจพเจฒ เจนเฉ€ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจชเฉเจฐเจธเจฟเฉฑเจงเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจฎเฉˆเจ‚ เจ‡เจธ เจชเจพเฉœเฉ‡ เจจเฉ‚เฉฐ เจญเจฐเจจ เจ…เจคเฉ‡ เจฎเฉเฉฑเจ– เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฆเฉ€ เจธเจฎเฉ€เจ–เจฟเจ† เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆเฅค เจšเฉˆเฉฑเจ• เจชเฉเจ†เจ‡เฉฐเจŸ API เจชเจพเจˆเจฅเจจ เจตเจฟเจ•เจพเจธ เจ•เจฟเฉฑเจŸ. เจ‡เจน เจฒเฉ‡เจ– เจนเฉˆเจฌเจฐเฉ‡ 'เจคเฉ‡ เจ‡เจ• เจนเฉ‹เจฐ เจฒเฉ‡เจ– เจตเจฟเจš เจ‡เจ• เจธเจผเจพเจจเจฆเจพเจฐ เจœเฉ‹เฉœ เจตเจœเฉ‹เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ เจšเฉˆเฉฑเจ• เจชเฉเจ†เจ‡เฉฐเจŸ R80.10 APIเฅค CLI, เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจ…เจคเฉ‡ เจนเฉ‹เจฐเจพเจ‚ เจฐเจพเจนเฉ€เจ‚ เจชเฉเจฐเจฌเฉฐเจงเจจ. เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ–เจพเจ‚เจ—เฉ‡ เจ•เจฟ เจชเจพเจˆเจฅเจจ SDK เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจฟเจ–เจฃเฉ€เจ†เจ‚ เจนเจจ เจ…เจคเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ 1.6 (R80.40 เจคเฉ‹เจ‚ เจธเจฎเจฐเจฅเจฟเจค) เจตเจฟเฉฑเจš เจจเจตเฉ€เจ‚ เจชเฉเจฐเจฌเฉฐเจงเจจ API เจ•เจพเจฐเจœเจ•เฉเจธเจผเจฒเจคเจพ 'เจคเฉ‡ เจ‡เฉฑเจ• เจกเฉ‚เฉฐเจ˜เฉ€ เจจเจœเจผเจฐ เจฎเจพเจฐเจพเจ‚เจ—เฉ‡เฅค เจฒเฉ‡เจ– เจจเฉ‚เฉฐ เจธเจฎเจเจฃ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ APIs เจ…เจคเฉ‡ Python เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจ—เจฟเจ†เจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค

เจšเฉˆเฉฑเจ• เจชเฉเจ†เจ‡เฉฐเจŸ เจธเจฐเจ—เจฐเจฎเฉ€ เจจเจพเจฒ API เจจเฉ‚เฉฐ เจตเจฟเจ•เจธเจค เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ เจธเจฎเฉ‡เจ‚ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจœเจพเจฐเฉ€ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจ:

เจชเจพเจˆเจฅเจจ SDK เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš เจธเจฟเจฐเจซ เจชเฉเจฐเจฌเฉฐเจงเจจ API เจ…เจคเฉ‡ เจจเจพเจฒ เจ—เฉฑเจฒเจฌเจพเจค เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆ Gaia API. เจ…เจธเฉ€เจ‚ เจ‡เจธ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจตเจฟเฉฑเจš เจธเจญ เจคเฉ‹เจ‚ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจ•เจฒเจพเจธเจพเจ‚, เจตเจฟเจงเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจตเฉ‡เจฐเฉ€เจเจฌเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจพเจ‚เจ—เฉ‡เฅค

Python SDK เจจเจพเจฒ เจšเฉˆเฉฑเจ• เจชเฉเจ†เจ‡เฉฐเจŸ API เจจเฉ‚เฉฐ เจธเจฐเจฒ เจฌเจฃเจพเจ‰เจฃเจพ

เจฎเฉ‹เจกเฉ€เจŠเจฒ เจจเฉ‚เฉฐ เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเจจเจพ

เจฎเฉ‹เจกเฉ€uleเจฒ cpapi เจคเฉ‹เจ‚ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจ…เจคเฉ‡ เจ†เจธเจพเจจเฉ€ เจจเจพเจฒ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆ github 'เจคเฉ‡ เจ…เจงเจฟเจ•เจพเจฐเจค เจšเฉˆเฉฑเจ• เจชเฉเจ†เจ‡เฉฐเจŸ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจฆเฉ€ เจธเจนเจพเจ‡เจคเจพ เจจเจพเจฒ PIP. เจตเจฟเจธเจคเฉเจฐเจฟเจค เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจจเจฟเจฐเจฆเฉ‡เจธเจผ เจตเจฟเฉฑเจš เจ‰เจชเจฒเจฌเจง เจนเจจ README.md. เจ‡เจน เจฎเฉ‹เจกเฉ€เจŠเจฒ เจชเจพเจˆเจฅเจจ เจธเฉฐเจธเจ•เจฐเจฃ 2.7 เจ…เจคเฉ‡ 3.7 เจฆเฉ‡ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจนเฉˆเฅค เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš, เจชเจพเจˆเจฅเจจ 3.7 เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‰เจฆเจพเจนเจฐเจจเจพเจ‚ เจฆเจฟเฉฑเจคเฉ€เจ†เจ‚ เจœเจพเจฃเจ—เฉ€เจ†เจ‚เฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจชเจพเจ‡เจฅเจจ SDK เจจเฉ‚เฉฐ เจšเฉˆเฉฑเจ• เจชเฉเจ†เจ‡เฉฐเจŸ เจฎเฉˆเจจเฉ‡เจœเจฎเฉˆเจ‚เจŸ เจธเจฐเจตเจฐ (เจธเจฎเจพเจฐเจŸ เจฎเฉˆเจจเฉ‡เจœเจฎเฉˆเจ‚เจŸ) เจคเฉ‹เจ‚ เจธเจฟเฉฑเจงเจพ เจšเจฒเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจชเจฐ เจ‰เจน เจธเจฟเจฐเจซ เจชเจพเจˆเจฅเจจ 2.7 เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจ‡เจธเจฒเจˆ เจ†เจ–เจฐเฉ€ เจญเจพเจ— เจธเฉฐเจธเจ•เจฐเจฃ 2.7 เจฒเจˆ เจ•เฉ‹เจก เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเฉ‡เจ—เจพเฅค เจฎเฉ‹เจกเฉ€เจŠเจฒ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจ เจคเฉ‹เจ‚ เจคเฉเจฐเฉฐเจค เจฌเจพเจ…เจฆ, เจฎเฉˆเจ‚ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฃ เจฆเฉ€ เจธเจฟเจซเจพเจฐเจธเจผ เจ•เจฐเจฆเจพ เจนเจพเจ‚ example_python2 ะธ example_python3.

เจธเจผเฉเจฐเฉ‚เจ†เจค

เจธเจพเจกเฉ‡ เจฒเจˆ cpapi เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฆเฉ‡ เจญเจพเจ—เจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹เจฃ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจคเฉ‹เจ‚ เจ†เจฏเจพเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ cpapi เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจฆเฉ‹ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€เจ†เจ‚ เจ•เจฒเจพเจธเจพเจ‚:

APIClient ะธ APIClientArgs

from cpapi import APIClient, APIClientArgs

ะšะปะฐัั APIClientArgs API เจธเจฐเจตเจฐ, เจ…เจคเฉ‡ เจ•เจฒเจพเจธ เจจเจพเจฒ เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจฒเจˆ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐ เจนเฉˆ APIClient API เจจเจพเจฒ เจ—เฉฑเจฒเจฌเจพเจค เจฒเจˆ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐ เจนเฉˆเฅค

เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจฎเจพเจชเจฆเฉฐเจก เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจเจพ

API เจจเจพเจฒ เจœเฉเฉœเจจ เจฒเจˆ เจตเฉฑเจ–-เจตเฉฑเจ– เจฎเจพเจชเจฆเฉฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เจฒเจพเจธ เจฆเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ APIClientArgs. เจธเจฟเจงเจพเจ‚เจค เจตเจฟเฉฑเจš, เจ‡เจธเจฆเฉ‡ เจฎเจพเจชเจฆเฉฐเจก เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจนเฉเฉฐเจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจœเจฆเฉ‹เจ‚ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจธเจฐเจตเจฐ เจคเฉ‡ เจธเจ•เฉเจฐเจฟเจชเจŸ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจ, เจคเจพเจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ.

client_args = APIClientArgs()

เจชเจฐ เจœเจฆเฉ‹เจ‚ เจ•เจฟเจธเฉ‡ เจคเฉ€เจœเฉ€-เจงเจฟเจฐ เจนเฉ‹เจธเจŸ 'เจคเฉ‡ เจšเฉฑเจฒเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ IP เจเจกเจฐเฉˆเฉฑเจธ เจœเจพเจ‚ API เจธเจฐเจตเจฐ เจฆเจพ เจนเฉ‹เจธเจŸ เจจเจพเจฎ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ (เจœเจฟเจธ เจจเฉ‚เฉฐ เจชเฉเจฐเจฌเฉฐเจงเจจ เจธเจฐเจตเจฐ เจตเฉ€ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ)เฅค เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจธเจฐเจตเจฐ เจ•เจจเฉˆเจ•เจธเจผเจจ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจจเฉ‚เฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจคเจฐ เจตเจœเฉ‹เจ‚ เจชเฉเจฐเจฌเฉฐเจงเจจ เจธเจฐเจตเจฐ เจฆเจพ IP เจชเจคเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค

client_args = APIClientArgs(server='192.168.47.241')

เจ†เจ‰ เจธเจพเจฐเฉ‡ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจกเจฟเจซเฉŒเจฒเจŸ เจฎเฉเฉฑเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉ‡เจ–เฉ€เจ เจœเฉ‹ API เจธเจฐเจตเจฐ เจจเจพเจฒ เจœเฉเฉœเจจ เจตเฉ‡เจฒเฉ‡ เจตเจฐเจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจ:

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_เจ•เจพเจฒ ะธ api_query, เจ…เจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ เจฌเจพเจฐเฉ‡ เจฅเฉ‹เฉœเจพ เจนเฉ‹เจฐ เจ…เฉฑเจ—เฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เฉ‡) API เจธเจฐเจตเจฐ 'เจคเฉ‡ sha1 เจซเจฟเฉฐเจ—เจฐเจชเฉเจฐเจฟเฉฐเจŸ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ. เจชเจฐ เจœเฉ‡เจ•เจฐ, API เจธเจฐเจตเจฐ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฆเฉ‡ sha1 เจซเจฟเฉฐเจ—เจฐเจชเฉเจฐเจฟเฉฐเจŸ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจ‡เฉฑเจ• เจ—เจฒเจคเฉ€ เจฆเจพ เจชเจคเจพ เจฒเจ—เจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ (เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจ…เจฃเจœเจพเจฃ เจนเฉˆ เจœเจพเจ‚ เจฌเจฆเจฒเจฟเจ† เจ—เจฟเจ† เจนเฉˆ), เจตเจฟเจงเฉ€ เจšเฉˆเฉฑเจ•_เจซเจฟเฉฐเจ—เจฐเจชเฉเจฐเจฟเฉฐเจŸ เจธเจฅเจพเจจเจ• เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡ เจ†เจชเจฃเฉ‡ เจ†เจช เจ‡เจธ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจœเฉ‹เฉœเจจ/เจฌเจฆเจฒเจฃ เจฆเจพ เจฎเฉŒเจ•เจพ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเฉ‡เจ—เจพเฅค เจ‡เจธ เจœเจพเจ‚เจš เจจเฉ‚เฉฐ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ…เจฏเฉ‹เจ— เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ (เจชเจฐ เจ‡เจธเจฆเฉ€ เจธเจฟเจซเจผเจพเจฐเจธเจผ เจธเจฟเจฐเจซเจผ เจคเจพเจ‚ เจนเฉ€ เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ เจœเฉ‡เจ•เจฐ 127.0.0.1 เจจเจพเจฒ เจ•เจจเฉˆเจ•เจŸ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡, API เจธเจฐเจตเจฐ เจ‰เฉฑเจคเฉ‡ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจšเจฒเจพเจˆเจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ), APIClientArgs เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ - เจ…เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค_เจ†เจŸเฉ‹_เจธเจตเฉ€เจ•เจพเจฐ ("เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค" เจตเจฟเฉฑเจš APIClientArgs เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจฆเฉ‡เจ–เฉ‹)เฅค

client_args = APIClientArgs(unsafe_auto_accept=True)

API เจธเจฐเจตเจฐ เจคเฉ‡ เจฒเฉŒเจ—เจ‡เจจ เจ•เจฐเฉ‹

ะฃ APIClient API เจธเจฐเจตเจฐ เจตเจฟเฉฑเจš เจฒเฉŒเจ—เจ‡เจจ เจ•เจฐเจจ เจฒเจˆ 3 เจคเจฐเฉ€เจ•เฉ‡ เจนเจจ, เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเจฐ เจ‡เฉฑเจ• เจฆเจพ เจฎเจคเจฒเจฌ เจธเจฎเจเจฆเจพ เจนเฉˆ sid(เจธเจผเฉˆเจธเจผเจจ-เจ†เจˆเจกเฉ€), เจœเฉ‹ เจ•เจฟ เจธเจฟเจฐเจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจนเจฐเฉ‡เจ• เจ…เจ—เจฒเฉ€ API เจ•เจพเจฒ เจตเจฟเฉฑเจš เจ†เจชเจฃเฉ‡ เจ†เจช เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ (เจ‡เจธ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฆเฉ‡ เจธเจฟเจฐเจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจจเจพเจฎ เจนเฉˆ X-chkp-sid), เจ‡เจธ เจฒเจˆ เจ‡เจธ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจจเฉ‚เฉฐ เจ…เฉฑเจ—เฉ‡ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจˆ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

เจฒเจพเจ—เจ‡เจจ เจขเฉฐเจ—

เจฒเฉŒเจ—เจ‡เจจ เจ…เจคเฉ‡ เจชเจพเจธเจตเจฐเจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเจพ เจตเจฟเจ•เจฒเจช (เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš, เจฏเฉ‚เจœเจผเจฐเจจเฉ‡เจฎ เจเจกเจฎเจฟเจจ เจ…เจคเฉ‡ เจชเจพเจธเจตเจฐเจก 1q2w3e เจธเจฅเจฟเจคเฉ€ เจธเฉฐเจฌเฉฐเจงเฉ€ เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸเจพเจ‚ เจตเจœเฉ‹เจ‚ เจชเจพเจธ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจ):

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

เจฒเฉŒเจ—เจ‡เจจ เจตเจฟเจงเฉ€ เจตเจฟเฉฑเจš เจตเจพเจงเฉ‚ เจตเจฟเจ•เจฒเจชเจฟเจ• เจฎเจพเจชเจฆเฉฐเจก เจตเฉ€ เจ‰เจชเจฒเจฌเจง เจนเจจ; เจ‡เฉฑเจฅเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจจเจพเจฎ เจ…เจคเฉ‡ เจฎเฉ‚เจฒ เจฎเฉเฉฑเจฒ เจนเจจ:

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

เจฒเฉŒเจ—เจ‡เจจ_เจตเจฟเจฆ_เจเจชเฉ€เจ†เจˆ_เจ•เฉ€ เจตเจฟเจงเฉ€

เจเจชเฉ€เจ†เจˆ เจ•เฉเฉฐเจœเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเจพ เจตเจฟเจ•เจฒเจช (เจชเฉเจฐเจฌเฉฐเจงเจจ เจธเฉฐเจธเจ•เจฐเจฃ R80.40/เจชเฉเจฐเจฌเฉฐเจงเจจ API v1.6 เจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจ•เฉ‡ เจธเจฎเจฐเจฅเจฟเจค, "3TsbPJ8ZKjaJGvFyoFqHFA==" เจ‡เจน API เจ•เฉเฉฐเจœเฉ€ เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจจ เจตเจฟเจงเฉ€ เจจเจพเจฒ เจชเฉเจฐเจฌเฉฐเจงเจจ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจฒเจˆ API เจ•เฉเฉฐเจœเฉ€ เจฎเฉเฉฑเจฒ เจนเฉˆ):

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

เจตเจฟเจงเฉ€ เจตเจฟเฉฑเจš login_with_api_key เจ‰เจนเฉ€ เจตเจฟเจ•เจฒเจชเจฟเจ• เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจ‰เจชเจฒเจฌเจง เจนเจจ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจตเจฟเจงเฉ€ เจตเจฟเฉฑเจš เจฒเจพเจ—เจฟเจจ.

login_as_root เจตเจฟเจงเฉ€

เจ‡เฉฑเจ• API เจธเจฐเจตเจฐ เจจเจพเจฒ เจ‡เฉฑเจ• เจธเจฅเจพเจจเจ• เจฎเจธเจผเฉ€เจจ เจตเจฟเฉฑเจš เจฒเฉŒเจ—เจ‡เจจ เจ•เจฐเจจ เจฆเจพ เจตเจฟเจ•เจฒเจช:

     login = client.login_as_root()

เจ‡เจธ เจตเจฟเจงเฉ€ เจฒเจˆ เจธเจฟเจฐเจซเจผ เจฆเฉ‹ เจตเจฟเจ•เจฒเจชเจฟเจ• เจฎเจพเจชเจฆเฉฐเจก เจ‰เจชเจฒเจฌเจง เจนเจจ:

domain=None, payload=None

เจ…เจคเฉ‡ เจ…เฉฐเจค เจตเจฟเฉฑเจš API เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจฆเจพ เจนเฉˆ

เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจฐเจพเจนเฉ€เจ‚ API เจ•เจพเจฒเจพเจ‚ เจ•เจฐเจจ เจฒเจˆ เจฆเฉ‹ เจตเจฟเจ•เจฒเจช เจนเจจ api_เจ•เจพเจฒ ะธ api_query. เจ†เจ“ เจ‡เจน เจชเจคเจพ เจ•เจฐเฉ€เจ เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจš เจ•เฉ€ เจ…เฉฐเจคเจฐ เจนเฉˆ.

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 เจ•เจพเจฒเจพเจ‚ เจฆเฉ‡ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ

เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจคเฉเจธเฉ€เจ‚ เจ•เจฒเจพเจธ เจฆเฉ‡ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจ…เจคเฉ‡ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ APIเจœเจตเจพเจฌ(เจฆเฉ‹เจตเฉ‡เจ‚ เจธเฉฐเจฆเจฐเจญ เจชเฉเจฐเจฌเฉฐเจงเจ• เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ…เจคเฉ‡ เจฌเจพเจนเจฐ)เฅค เจ•เจฒเจพเจธ 'เจคเฉ‡ APIเจœเจตเจพเจฌ 4 เจตเจฟเจงเฉ€เจ†เจ‚ เจ…เจคเฉ‡ 5 เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจนเจจ; เจ…เจธเฉ€เจ‚ เจตเจงเฉ‡เจฐเฉ‡ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจš เจธเจญ เจคเฉ‹เจ‚ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจฒเฉ‹เจ•เจพเจ‚ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

Python SDK เจจเจพเจฒ เจšเฉˆเฉฑเจ• เจชเฉเจ†เจ‡เฉฐเจŸ API เจจเฉ‚เฉฐ เจธเจฐเจฒ เจฌเจฃเจพเจ‰เจฃเจพ

เจธเจซเจฒเจคเจพ

เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฒเจˆ, เจ‡เจน เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃเจพ เจ‡เฉฑเจ• เจšเฉฐเจ—เจพ เจตเจฟเจšเจพเจฐ เจนเฉ‹เจตเฉ‡เจ—เจพ เจ•เจฟ 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

เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจธเจซเจฒเจคเจพ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจฆเฉ‡ เจฎเฉเฉฑเจฒ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ. เจคเจ•เจจเฉ€เจ•เฉ€ เจคเฉŒเจฐ 'เจคเฉ‡, เจคเฉเจธเฉ€เจ‚ เจ‰เฉฑเจฅเฉ‡ เจ•เฉเจ เจตเฉ€ เจชเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ‡เฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจ‡เฉฑเจ• เจจเจฟเจฏเจฎเจค เจธเจคเจฐ เจตเฉ€เฅค เจชเจฐ เจ‡เฉฑเจ• เจ…เจธเจฒ เจ‰เจฆเจพเจนเจฐเจจ เจ‡เจธ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจจเฉ‚เฉฐ เจ•เฉเจ เจ–เจพเจธ เจธเจผเจฐเจคเจพเจ‚ เจ…เจงเฉ€เจจ เจ—เจฒเจค 'เจคเฉ‡ เจฐเฉ€เจธเฉˆเจŸ เจ•เจฐเจจเจพ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจนเฉ‡เจ เจพเจ‚, เจ‰เจฆเจพเจนเจฐเจจ เจตเฉฑเจฒ เจงเจฟเจ†เจจ เจฆเจฟเจ“ เจœเจฆเฉ‹เจ‚ เจชเฉเจฐเจฌเฉฐเจงเจจ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจ•เฉฐเจฎ เจšเฉฑเจฒ เจฐเจนเฉ‡ เจนเจจ, เจชเจฐ เจ…เจธเฉ€เจ‚ เจ‡เจธ เจฌเฉ‡เจจเจคเฉ€ เจจเฉ‚เฉฐ เจ…เจธเจซเจฒ เจฎเฉฐเจจเจพเจ‚เจ—เฉ‡ (เจ…เจธเฉ€เจ‚ เจธเจซเจฒเจคเจพ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจจเฉ‚เฉฐ เจธเฉˆเฉฑเจŸ เจ•เจฐเจพเจ‚เจ—เฉ‡ เจเฉ‚เจ เฉ‡, เจ‡เจธ เจคเฉฑเจฅ เจฆเฉ‡ เจฌเจพเจตเจœเฉ‚เจฆ เจ•เจฟ 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

เจœเจตเจพเจฌ()

เจœเจตเจพเจฌ เจตเจฟเจงเฉ€ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจœเจตเจพเจฌ เจ•เฉ‹เจก (เจธเจŸเฉ‡เจŸเจธ_เจ•เฉ‹เจก) เจ…เจคเฉ‡ เจœเจตเจพเจฌ เจฆเฉ‡ เจญเจพเจ— (เจธเจฐเฉ€เจฐ) เจฆเฉ‡ เจจเจพเจฒ เจธเจผเจฌเจฆเจ•เฉ‹เจธเจผ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆเฅค

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 เจ•เจพเจฒเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ€เจ†เจ‚ เจนเจจ เจœเฉ‹ เจชเฉเจฐเจฌเฉฐเจงเจจ API 1.6 เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจธเจจเฅค

เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ“ เจฆเฉ‡เจ–เฉ€เจ เจ•เจฟ เจ•เจพเจฒเจพเจ‚ เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ€เจ†เจ‚ เจนเจจ เจเจก-เจนเฉ‹เจธเจŸ ะธ เจเจก-เจเจกเจฐเฉˆเฉฑเจธ-เจฐเฉ‡เจ‚เจœ. เจฎเฉฐเจจ เจฒเจ“ เจ•เจฟ เจธเจพเจจเฉ‚เฉฐ เจธเจฌเจจเฉˆเฉฑเจŸ 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 เจ•เจพเจฒ เจฆเฉ‡ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจนเฉฑเจฒ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจเจก-เจ†เจฌเจœเฉˆเจ•เจŸเจธ-เจฌเฉˆเจš เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเจ•เฉเจฐเจฟเจชเจŸ

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 เจ•เจพเจฒ เจตเจฟเฉฑเจš เจ•เจˆ เจตเจธเจคเฉ‚เจ†เจ‚ เจจเฉ‚เฉฐ เจฎเจฟเจŸเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจกเจฟเจฒเฉ€เจŸ-เจ†เจฌเจœเฉˆเจ•เจŸเจธ-เจฌเฉˆเจš. เจนเฉเจฃ เจ†เจ‰ เจ‡เฉฑเจ• เจ•เฉ‹เจก เจ‰เจฆเจพเจนเจฐเจจ เจตเฉ‡เจ–เฉ€เจ เจœเฉ‹ เจชเจนเจฟเจฒเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจฌเจฃเจพเจ เจ—เจ เจธเจพเจฐเฉ‡ เจฎเฉ‡เจœเจผเจฌเจพเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฎเจฟเจŸเจพ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ 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 เจตเจฟเฉฑเจš เจชเฉเจฐเจ—เจŸ เจจเจนเฉ€เจ‚ เจนเฉ‹เจ‡เจ† เจนเฉˆ เจ‡เฉฐเจชเฉเฉฑเจŸ, เจ‡เจธ เจฒเจˆ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉเจ†เจฐเจพ เจฆเจพเจ–เจฒ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฐเจจ เจฒเจˆ, เจ‡เฉฑเจ• เจซเฉฐเจ•เจธเจผเจจ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ raw_input. เจจเจนเฉ€เจ‚ เจคเจพเจ‚, เจ•เฉ‹เจก เจฆเฉ‚เจœเฉ€เจ†เจ‚ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจคเฉ‹เจ‚ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจฆเฉ‡ เจธเจฎเจพเจจ เจนเฉˆ, เจธเจฟเจฐเจซ เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจตเจงเฉ‡เจฐเฉ‡ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆ login_as_root, เจคเจพเจ‚ เจ•เจฟ เจชเฉเจฐเจฌเฉฐเจงเจจ เจธเจฐเจตเจฐ เจฆเจพ เจ†เจชเจฃเจพ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเจพเจฎ, เจชเจพเจธเจตเจฐเจก เจ…เจคเฉ‡ IP เจชเจคเจพ เจฆเฉเจฌเจพเจฐเจพ เจจเจพ เจฆเจฟเจ“เฅค

เจตเฉ€เจกเฉ€เจ“ เจšเจฒเจพเจ“

เจธเจ•เจฟเจ“เจฐเจฟเจŸเฉ€ เจšเฉˆเจ•เจ…เฉฑเจช เจฆเฉ‡ เจคเฉเจฐเฉฐเจค เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจฒเจˆ เจธเจ•เฉเจฐเจฟเจชเจŸ

from __future__ import print_function
import getpass
import sys, os
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from cpapi import APIClient, APIClientArgs

def main():
    with APIClient() as client:
       # if client.check_fingerprint() is False:
       #     print("Could not get the server's fingerprint - Check connectivity with the server.")
       #     exit(1)
        login_res = client.login_as_root()

        if login_res.success is False:
            print("Login failed:n{}".format(login_res.error_message))
            exit(1)

        gw_name = raw_input("Enter the gateway name:")
        gw_ip = raw_input("Enter the gateway IP address:")
        if sys.stdin.isatty():
            sic = getpass.getpass("Enter one-time password for the gateway(SIC): ")
        else:
            print("Attention! Your password will be shown on the screen!")
            sic = raw_input("Enter one-time password for the gateway(SIC): ")
        version = raw_input("Enter the gateway version(like RXX.YY):")
        add_gw = client.api_call("add-simple-gateway", {'name' : gw_name, 'ipv4-address' : gw_ip, 'one-time-password' : sic, 'version': version.capitalize(), 'application-control' : 'true', 'url-filtering' : 'true', 'ips' : 'true', 'anti-bot' : 'true', 'anti-virus' : 'true', 'threat-emulation' : 'true'})
        if add_gw.success and add_gw.data['sic-state'] != "communicating":
            print("Secure connection with the gateway hasn't established!")
            exit(1)
        elif add_gw.success:
            print("The gateway was added successfully.")
            gw_uid = add_gw.data['uid']
            gw_name = add_gw.data['name']
        else:
            print("Failed to add the gateway - {}".format(add_gw.error_message))
            exit(1)

        change_policy = client.api_call("set-access-layer", {"name" : "Network", "applications-and-url-filtering": "true", "content-awareness": "true"})
        if change_policy.success:
            print("The policy has been changed successfully")
        else:
            print("Failed to change the policy- {}".format(change_policy.error_message))
        change_rule = client.api_call("set-access-rule", {"name" : "Cleanup rule", "layer" : "Network", "action": "Accept", "track": {"type": "Detailed Log", "accounting": "true"}})
        if change_rule.success:
            print("The cleanup rule has been changed successfully")
        else:
            print("Failed to change the cleanup rule- {}".format(change_rule.error_message))

        # publish the result
        publish_res = client.api_call("publish", {})
        if publish_res.success:
            print("The changes were published successfully.")
        else:
                print("Failed to publish the changes - {}".format(install_tp_policy.error_message))

        install_access_policy = client.api_call("install-policy", {"policy-package" : "Standard", "access" : 'true',  "threat-prevention" : 'false', "targets" : gw_uid})
        if install_access_policy.success:
            print("The access policy has been installed")
        else:
                print("Failed to install access policy - {}".format(install_tp_policy.error_message))

        install_tp_policy = client.api_call("install-policy", {"policy-package" : "Standard", "access" : 'false',  "threat-prevention" : 'true', "targets" : gw_uid})
        if install_tp_policy.success:
            print("The threat prevention policy has been installed")
        else:
            print("Failed to install threat prevention policy - {}".format(install_tp_policy.error_message))
        
        # add passwords and passphrases to dictionary
        with open('additional_pass.conf') as f:
            line_num = 0
            for line in f:
                line_num += 1
                add_password_dictionary = client.api_call("run-script", {"script-name" : "Add passwords and passphrases", "script" : "printf "{}" >> $FWDIR/conf/additional_pass.conf".format(line), "targets" : gw_name})
                if add_password_dictionary.success:
                    print("The password dictionary line {} was added successfully".format(line_num))
                else:
                    print("Failed to add the dictionary - {}".format(add_password_dictionary.error_message))

main()

เจ‡เฉฑเจ• เจชเจพเจธเจตเจฐเจก เจกเจฟเจ•เจธเจผเจจเจฐเฉ€ เจตเจพเจงเฉ‚_pass.conf เจตเจพเจฒเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจซเจพเจˆเจฒ
{
"passwords" : ["malware","malicious","infected","Infected"],
"phrases" : ["password","Password","Pass","pass","codigo","key","pwd","ะฟะฐั€ะพะปัŒ","ะŸะฐั€ะพะปัŒ","ะšะปัŽั‡","ะบะปัŽั‡","ัˆะธั„ั€","ะจะธั„ั€"]
}

เจธเจฟเฉฑเจŸเจพ

เจ‡เจน เจฒเฉ‡เจ– เจ•เฉฐเจฎ เจฆเฉ€เจ†เจ‚ เจธเจฟเจฐเจซเจผ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจธเฉฐเจญเจพเจตเจจเจพเจตเจพเจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจฆเจพ เจนเฉˆ เจชเจพเจˆเจฅเจจ เจเจธ.เจกเฉ€.เจ•เฉ‡. เจ…เจคเฉ‡ เจฎเฉ‹เจกเฉ€เจŠเจฒ cpapi(เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจ…เจจเฉเจฎเจพเจจ เจฒเจ—เจพเจ‡เจ† เจนเฉ‹เจตเฉ‡เจ—เจพ, เจ‡เจน เจ…เจธเจฒ เจตเจฟเฉฑเจš เจธเจฎเจพเจจเจพเจฐเจฅเฉ€ เจนเจจ), เจ…เจคเฉ‡ เจ‡เจธ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจตเจฟเฉฑเจš เจ•เฉ‹เจก เจฆเจพ เจ…เจงเจฟเจเจจ เจ•เจฐเจจ เจจเจพเจฒ เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจฆเฉ‡ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ‡ เจนเฉ‹เจฐ เจตเฉ€ เจฎเฉŒเจ•เฉ‡ เจฒเฉฑเจญ เจธเจ•เฉ‹เจ—เฉ‡เฅค เจ‡เจน เจธเฉฐเจญเจต เจนเฉˆ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ†เจชเจฃเฉ€เจ†เจ‚ เจ•เจฒเจพเจธเจพเจ‚, เจซเฉฐเจ•เจธเจผเจจเจพเจ‚, เจตเจฟเจงเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจตเฉ‡เจฐเฉ€เจเจฌเจฒเจพเจ‚ เจจเจพเจฒ เจชเฉ‚เจฐเจ• เจ•เจฐเจจเจพ เจšเจพเจนเฉ‹เจ—เฉ‡เฅค เจคเฉเจธเฉ€เจ‚ เจนเจฎเฉ‡เจธเจผเจพ เจ†เจชเจฃเจพ เจ•เฉฐเจฎ เจธเจพเจ‚เจเจพ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ เจธเฉˆเจ•เจธเจผเจจ เจตเจฟเฉฑเจš เจšเฉˆเฉฑเจ• เจชเฉเจ†เจ‡เฉฐเจŸ เจฒเจˆ เจนเฉ‹เจฐ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เฉ‹เจกเจนเฉฑเจฌ เจญเจพเจˆเจšเจพเจฐเฉ‡ เจตเจฟเฉฑเจš เจšเฉˆเจ•เจฎเฉ‡เจŸเจธ, เจœเฉ‹ เจ‰เจคเจชเจพเจฆ เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจ…เจคเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฆเฉ‹เจตเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจนเฉˆเจชเฉ€ เจ•เฉ‹เจกเจฟเฉฐเจ— เจ…เจคเฉ‡ เจ…เฉฐเจค เจคเฉฑเจ• เจชเฉœเฉเจนเจจ เจฒเจˆ เจงเฉฐเจจเจตเจพเจฆ!

เจธเจฐเฉ‹เจค: www.habr.com

DDoS เจธเฉเจฐเฉฑเจ–เจฟเจ†, VPS VDS เจธเจฐเจตเจฐเจพเจ‚ เจตเจพเจฒเฉ€เจ†เจ‚ เจธเจพเจˆเจŸเจพเจ‚ เจฒเจˆ เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ— เจนเฉ‹เจธเจŸเจฟเฉฐเจ— เจ–เจฐเฉ€เจฆเฉ‹ ๐Ÿ”ฅ DDoS เจธเฉเจฐเฉฑเจ–เจฟเจ†, VPS VDS เจธเจฐเจตเจฐเจพเจ‚ เจจเจพเจฒ เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ— เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸ เจนเฉ‹เจธเจŸเจฟเฉฐเจ— เจ–เจฐเฉ€เจฆเฉ‹ | ProHoster