αž€αžΆαžšαž’αŸ’αžœαžΎαž±αŸ’αž™αžŸαžΆαž˜αž‰αŸ’αž‰αž“αžΌαžœ Check Point API αž‡αžΆαž˜αž½αž™ Python SDK

αž€αžΆαžšαž’αŸ’αžœαžΎαž±αŸ’αž™αžŸαžΆαž˜αž‰αŸ’αž‰αž“αžΌαžœ Check Point API αž‡αžΆαž˜αž½αž™ Python SDKαžαžΆαž˜αž–αž›αž–αŸαž‰αž›αŸαž‰αž“αŸƒαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™ APIs αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎαžšαž½αž˜αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžœαžΆαž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαžŸαŸ†αžŽαžΎ API αž“αž·αž„αž§αž”αž€αžšαžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαž·αž—αžΆαž‚αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž” API αŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αžœαžΆαž“αŸ…αžαŸ‚αž˜αž·αž“αž’αžΆαž…αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž”αžΆαž“αŸ” αž€αž‰αŸ’αž…αž”αŸ‹αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Python (αžαž‘αŸ…αž“αŸαŸ‡αž αŸ…αžαžΆ Python SDK) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ αž–αž·αž“αž·αžαŸ’αž™αž…αŸ†αžŽαž»αž…αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ APIαž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„αž₯αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαŸ” αžœαžΆαž‡αž½αž™αžŸαž˜αŸ’αžšαž½αž›αžŠαž›αŸ‹αž‡αžΈαžœαž·αžαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž“αž·αž„αž’αŸ’αž“αž€αž…αžΌαž›αž…αž·αžαŸ’αžαžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž€αž˜αŸ’αž˜αž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ” Python αž‘αž‘αž½αž›αž”αžΆαž“αž”αŸ’αžšαž‡αžΆαž”αŸ’αžšαž·αž™αž—αžΆαž–αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αž“αžΆαž–αŸαž›αžαŸ’αž˜αžΈαŸ—αž“αŸαŸ‡ αž αžΎαž™αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž”αŸ†αž–αŸαž‰αž…αž“αŸ’αž›αŸ„αŸ‡ αž“αž·αž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž›αž€αŸ’αžαžŽαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αŸ—αŸ” αž–αž·αž“αž·αžαŸ’αž™αž…αŸ†αžŽαž»αž… API αž€αž‰αŸ’αž…αž”αŸ‹αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ Python. αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž”αž˜αŸ’αžšαžΎαž‡αžΆαž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αžŠαŸαž›αŸ’αž’αž…αŸ†αž–αŸ„αŸ‡αž’αžαŸ’αžαž”αž‘αž˜αž½αž™αž‘αŸ€αžαž“αŸ…αž›αžΎ Habre αž–αž·αž“αž·αžαŸ’αž™αž…αŸ†αžŽαž»αž… R80.10 API αŸ” αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžαžΆαž˜αžšαž™αŸˆ CLI αžŸαŸ’αž‚αŸ’αžšαžΈαž” αž“αž·αž„αž…αŸ’αžšαžΎαž“αž‘αŸ€αž. αž™αžΎαž„αž“αžΉαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžšαž”αŸ€αž”αžŸαžšαžŸαŸαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαŸ„αž™αž”αŸ’αžšαžΎ Python SDK αž αžΎαž™αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž±αŸ’αž™αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αž”αžΆαžŸαŸ‹αž’αŸ†αž–αžΈαž˜αž»αžαž„αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ API αžαŸ’αž˜αžΈαž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαŸ‚ 1.6 (αž‚αžΆαŸ†αž‘αŸ’αžšαž…αžΆαž”αŸ‹αž–αžΈ R80.40)αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž™αž›αŸ‹αž–αžΈαž’αžαŸ’αžαž”αž‘ αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž…αŸ†αžŽαŸαŸ‡αžŠαžΉαž„αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ APIs αž“αž·αž„ Python αŸ”

Check Point αž€αŸ†αž–αž»αž„αž’αž—αž·αžœαžŒαŸ’αž API αž™αŸ‰αžΆαž„αžŸαž€αž˜αŸ’αž˜ αž αžΎαž™αž“αŸ…αž–αŸαž›αž“αŸαŸ‡ αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αŸ–

Python SDK αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž‚αžΆαŸ†αž‘αŸ’αžšαžαŸ‚αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™ API αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ αž“αž·αž„ Gaia API. αž™αžΎαž„αž“αžΉαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαŸ’αž“αžΆαž€αŸ‹αžŸαŸ†αžαžΆαž“αŸ‹αŸ— αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž αž“αž·αž„αž’αžαŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΌαžŒαž»αž›αž“αŸαŸ‡αŸ”

αž€αžΆαžšαž’αŸ’αžœαžΎαž±αŸ’αž™αžŸαžΆαž˜αž‰αŸ’αž‰αž“αžΌαžœ Check Point API αž‡αžΆαž˜αž½αž™ Python SDK

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž˜αŸ‰αžΌαžŒαž»αž›

αž˜αŸ‰αžΌαžŒαž»αž› cpapi αžŠαŸ†αž‘αžΎαž„αž™αŸ‰αžΆαž„αžšαž αŸαžŸ αž“αž·αž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž–αžΈ αžƒαŸ’αž›αžΆαŸ†αž„ Check Point αž•αŸ’αž›αžΌαžœαž€αžΆαžšαž“αŸ…αž›αžΎ github αžŠαŸ„αž™αž˜αžΆαž“αž‡αŸ†αž“αž½αž™ PIP. αžŸαŸαž…αž€αŸ’αžαžΈαžŽαŸ‚αž“αžΆαŸ†αž’αŸ†αž–αžΈαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž›αž˜αŸ’αž’αž·αžαž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„ README.md. αž˜αŸ‰αžΌαžŒαž»αž›αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ Python αž€αŸ†αžŽαŸ‚ 2.7 αž“αž·αž„ 3.7 αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡ αž§αž‘αžΆαž αžšαžŽαŸαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αžŠαŸ„αž™αž”αŸ’αžšαžΎ Python 3.7 αŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ Python SDK αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž–αžΈ Check Point Management Server (Smart Management) αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž–αž½αž€αž‚αŸαž‚αžΆαŸ†αž‘αŸ’αžšαžαŸ‚ Python 2.7 αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž•αŸ’αž“αŸ‚αž€αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αžΉαž„αž•αŸ’αžαž›αŸ‹αž€αžΌαžŠαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ†αžŽαŸ‚ 2.7 αŸ” αž—αŸ’αž›αžΆαž˜αŸ—αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŠαŸ†αž‘αžΎαž„αž˜αŸ‰αžΌαžŒαž»αž›αžαŸ’αž‰αž»αŸ†αžŸαžΌαž˜αžŽαŸ‚αž“αžΆαŸ†αž±αŸ’αž™αž˜αžΎαž›αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„αžαž example_python2 ΠΈ example_python3.

αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜

αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αž™αžΎαž„αž’αžΆαž…αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžŸαž˜αžΆαžŸαž’αžΆαžαž»αž“αŸƒαž˜αŸ‰αžΌαžŒαž»αž› cpapi αž™αžΎαž„αžαŸ’αžšαžΌαžœαž“αžΆαŸ†αž…αžΌαž›αž–αžΈαž˜αŸ‰αžΌαžŒαž»αž› cpapi αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αž–αžΈαžšαžαŸ’αž“αžΆαž€αŸ‹αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαŸ–

APIClient ΠΈ APIClientArgs

from cpapi import APIClient, APIClientArgs

Класс APIClientArgs αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž…αŸ†αž–αŸ„αŸ‡αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ API αž“αž·αž„αžαŸ’αž“αžΆαž€αŸ‹ APIClient αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž…αŸ†αž–αŸ„αŸ‡αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™ API αŸ”

αž€αŸ†αžŽαžαŸ‹αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž“αŸƒαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹

αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž•αŸ’αžŸαŸαž„αŸ—αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ… API αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αž„αŸ’αž€αžΎαžαž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαžαŸ’αž“αžΆαž€αŸ‹ APIClientArgs. αž‡αžΆαž‚αŸ„αž›αž€αžΆαžšαžŽαŸ αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžšαž”αžŸαŸ‹αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž‡αžΆαž˜αž»αž“ αž αžΎαž™αž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž”αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž”αž‰αŸ’αž‡αžΆ αž–αž½αž€αž‚αŸαž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž‘αŸαŸ”

client_args = APIClientArgs()

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αžΆαž‚αžΈαž‘αžΈαž”αžΈ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αž¬αžˆαŸ’αž˜αŸ„αŸ‡αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžšαž”αžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ API (αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŸαŸ’αž‚αžΆαž›αŸ‹αžαžΆαž‡αžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„)αŸ” αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαžαžΆαž„αž€αŸ’αžšαŸ„αž˜ αž™αžΎαž„αž€αŸ†αžŽαžαŸ‹αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž“αŸƒαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αž αžΎαž™αž•αŸ’αžαž›αŸ‹αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αžšαž”αžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž‡αžΆαžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαŸ”

client_args = APIClientArgs(server='192.168.47.241')

αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž“αž·αž„αžαž˜αŸ’αž›αŸƒαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžšαž”αžŸαŸ‹αžœαžΆ αžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“αž“αŸ…αž–αŸαž›αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ APIαŸ–

αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž“αŸƒαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš __init__ αž“αŸƒαžαŸ’αž“αžΆαž€αŸ‹ APIClientArgs

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

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

αžαŸ’αž‰αž»αŸ†αž‡αžΏαžαžΆαž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαžαŸ’αž“αžΆαž€αŸ‹ APIClientArgs αž‚αžΊαžœαž·αž…αžΆαžšαžŽαž‰αžΆαžŽαž…αŸ†αž–αŸ„αŸ‡αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ Check Point αž αžΎαž™αž˜αž·αž“αžαŸ’αžšαžΌαžœαž€αžΆαžšαž˜αžαž·αž™αŸ„αž”αž›αŸ‹αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸαŸ”

αž€αŸ†αž–αž»αž„αž—αŸ’αž‡αžΆαž”αŸ‹αžαžΆαž˜αžšαž™αŸˆ APIClient αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž”αžšαž·αž”αž‘

Класс APIClient αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ†αž•αž»αžαž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžœαžΆαž‚αžΊαžαžΆαž˜αžšαž™αŸˆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž”αžšαž·αž”αž‘αŸ” αž’αŸ’αžœαžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ…αž€αžΆαž“αŸ‹αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαžαŸ’αž“αžΆαž€αŸ‹ APIClient αž‚αžΊαž‡αžΆαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž“αŸƒαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž€αŸ’αž“αž»αž„αž‡αŸ†αž αžΆαž“αž˜αž»αž“αŸ”

with APIClient(client_args) as client:

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž”αžšαž·αž”αž‘αž“αžΉαž„αž˜αž·αž“αž’αŸ’αžœαžΎαž€αžΆαžšαž αŸ…αž…αžΌαž›αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž‘αŸ…αž€αžΆαž“αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ API αž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž“αžΉαž„αž’αŸ’αžœαžΎαž€αžΆαžšαž αŸ…αž…αŸαž‰αž“αŸ…αž–αŸαž›αž…αŸαž‰αž–αžΈαžœαžΆαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž αŸαžαž»αž•αž›αž˜αž½αž™αž…αŸ†αž“αž½αž“αž˜αž·αž“αžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αž…αžΆαž€αž…αŸαž‰αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αž‰αŸ’αž…αž”αŸ‹αž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αžΆαžšαž αŸ… API αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž’αŸ’αžœαžΎαž€αžΆαžšαžŠαŸ„αž™αž˜αž·αž“αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž”αžšαž·αž”αž‘αŸ–

client = APIClient(clieng_args)

αž€αŸ†αž–αž»αž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹

αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ†αž•αž»αžαžŠαžΎαž˜αŸ’αž”αžΈαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαžαžΎαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αžαŸ’αžšαžΌαžœαž“αžΉαž„αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž€αŸ†αž–αž»αž„αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš αž–αž·αž“αž·αžαŸ’αž™_αžŸαŸ’αž“αžΆαž˜αž˜αŸ’αžšαžΆαž˜αžŠαŸƒ. αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž•αž›αž”αžΌαž€αž“αŸƒ sha1 hash αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ’αž“αžΆαž˜αž˜αŸ’αžšαžΆαž˜αžŠαŸƒαž“αŸƒαžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžš API αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž”αžšαžΆαž‡αŸαž™ (αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžαŸ’αžšαž‘αž”αŸ‹ αž˜αž·αž“αž–αž·αž) αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αžœαžΆαž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž”αžŽαŸ’αžαžΆαž›αž˜αž€αž–αžΈαž”αž‰αŸ’αž αžΆαž“αŸƒαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹ αž αžΎαž™αž™αžΎαž„αž’αžΆαž…αž”αž‰αŸ’αžˆαž”αŸ‹αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ (αž¬αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž“αžΌαžœαž±αž€αžΆαžŸαžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ‚αžαž˜αŸ’αžšαžΌαžœαž‘αž·αž“αŸ’αž“αž“αŸαž™αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹):

    if client.check_fingerprint() is False:
        print("Could not get the server's fingerprint - Check connectivity with the server.")
        exit(1)

αžŸαžΌαž˜αž…αŸ†αžŽαžΆαŸ†αžαžΆαž“αŸ…αž–αŸαž›αž’αž“αžΆαž‚αžαžαŸ’αž“αžΆαž€αŸ‹ APIClient αž“αžΉαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžšαžΆαž›αŸ‹αž€αžΆαžšαž αŸ… API (αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž api_call ΠΈ api_queryαž™αžΎαž„αž“αžΉαž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž–αž½αž€αž‚αŸαž”αž“αŸ’αžαž·αž…αž‘αŸ€αž) αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžšαžŸαŸ’αž“αžΆαž˜αž˜αŸ’αžšαžΆαž˜αžŠαŸƒ sha1 αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ API αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž“αŸ…αž–αŸαž›αž–αž·αž“αž·αžαŸ’αž™αžŸαŸ’αž“αžΆαž˜αž˜αŸ’αžšαžΆαž˜αžŠαŸƒ sha1 αž“αŸƒαžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ API αž€αŸ†αž αž»αžŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αžƒαžΎαž‰ (αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžšαž˜αž·αž“αžŸαŸ’αž‚αžΆαž›αŸ‹ αž¬αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš) αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš αž–αž·αž“αž·αžαŸ’αž™_αžŸαŸ’αž“αžΆαž˜αž˜αŸ’αžšαžΆαž˜αžŠαŸƒ αž“αžΉαž„αž•αŸ’αžαž›αŸ‹αž±αž€αžΆαžŸαžŠαžΎαž˜αŸ’αž”αžΈαž”αž“αŸ’αžαŸ‚αž˜/αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαžœαžΆαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αŸ” αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž·αž‘αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„ (αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸαŸ‡αž’αžΆαž…αžŽαŸ‚αž“αžΆαŸ†αž”αžΆαž“αž›αž»αŸ‡αžαŸ’αžšαžΆαžαŸ‚αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ API αžαŸ’αž›αž½αž“αžœαžΆ αž“αŸ…αž–αŸαž›αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ… 127.0.0.1) αžŠαŸ„αž™αž”αŸ’αžšαžΎαž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹ APIClientArgs - unsafe_auto_accept (αžŸαžΌαž˜αž˜αžΎαž›αž”αž“αŸ’αžαŸ‚αž˜αž’αŸ†αž–αžΈ APIClientArgs αž˜αž»αž“αž“αŸ…αž€αŸ’αž“αž»αž„ "αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹") αŸ”

client_args = APIClientArgs(unsafe_auto_accept=True)

αž…αžΌαž›αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ API

Π£ APIClient αž˜αžΆαž“αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαžΌαž…αž‡αžΆ 3 αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ API αž αžΎαž™αž–αž½αž€αž‚αŸαž˜αŸ’αž“αžΆαž€αŸ‹αŸ—αž™αž›αŸ‹αž–αžΈαž’αžαŸ’αžαž“αŸαž™ sid(session-id) αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž αŸ… API αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž“αžΈαž˜αž½αž™αŸ—αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž‹αž˜αž€αžαžΆ (αžˆαŸ’αž˜αŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž‹αž˜αž€αžαžΆαž“αŸƒαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž“αŸαŸ‡αž‚αžΊ X-chkp-sid) αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž“αŸαŸ‡αž‘αŸ€αžαž‘αŸαŸ”

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž…αžΌαž›

αž‡αž˜αŸ’αžšαžΎαžŸαžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αžΆαžšαž…αžΌαž› αž“αž·αž„αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹ (αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸ αžˆαŸ’αž˜αŸ„αŸ‡αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ αž“αž·αž„αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹ 1q2w3e αžαŸ’αžšαžΌαžœαž”αžΆαž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž‡αžΆαž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž‘αžΈαžαžΆαŸ†αž„)αŸ–

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

αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž‡αž˜αŸ’αžšαžΎαžŸαž”αž“αŸ’αžαŸ‚αž˜αž€αŸαž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž…αžΌαž›αžŠαŸ‚αžš αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžˆαŸ’αž˜αŸ„αŸ‡ αž“αž·αž„αžαž˜αŸ’αž›αŸƒαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαŸ–

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

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš Login_with_api_key

αž‡αž˜αŸ’αžšαžΎαžŸαžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαŸ„ api (αž‚αžΆαŸ†αž‘αŸ’αžšαžŠαŸ„αž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αžΈαž€αŸ†αžŽαŸ‚αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ R80.40/Management 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_call ΠΈ api_query. αž…αžΌαžšαž™αžΎαž„αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αžαžΆαžαžΎαž’αŸ’αžœαžΈαž‡αžΆαž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαžšαžœαžΆαž„αž–αž½αž€αž‚αŸαŸ”

api_call

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž’αžΆαž…αž’αž“αž»αžœαžαŸ’αžαž”αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘αžŽαžΆαž˜αž½αž™αŸ” αž™αžΎαž„αžαŸ’αžšαžΌαžœαž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž•αŸ’αž“αŸ‚αž€αž…αž»αž„αž€αŸ’αžšαŸ„αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž αŸ… api αž“αž·αž„ payload αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αžŸαŸ†αžŽαžΎαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž…αžΆαŸ†αž”αžΆαž…αŸ‹αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎ payload αž‚αžΊαž‘αž‘αŸ αž“αŸ„αŸ‡αžœαžΆαž˜αž·αž“αž’αžΆαž…αž”αž‰αŸ’αž‡αžΌαž“αž”αžΆαž“αž‘αžΆαž›αŸ‹αžαŸ‚αžŸαŸ„αŸ‡αŸ–

api_versions = client.api_call('show-api-versions') 

αž›αž‘αŸ’αž’αž•αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ†αžŽαžΎαž“αŸαŸ‡αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž€αžΆαžαŸ‹αŸ–

In [23]: api_versions                                                           
Out[23]: 
APIResponse({
    "data": {
        "current-version": "1.6",
        "supported-versions": [
            "1",
            "1.1",
            "1.2",
            "1.3",
            "1.4",
            "1.5",
            "1.6"
        ]
    },
    "res_obj": {
        "data": {
            "current-version": "1.6",
            "supported-versions": [
                "1",
                "1.1",
                "1.2",
                "1.3",
                "1.4",
                "1.5",
                "1.6"
            ]
        },
        "status_code": 200
    },
    "status_code": 200,
    "success": true
})
show_host = client.api_call('show-host', {'name' : 'h_8.8.8.8'})

αž›αž‘αŸ’αž’αž•αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ†αžŽαžΎαž“αŸαŸ‡αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž€αžΆαžαŸ‹αŸ–

In [25]: show_host                                                              
Out[25]: 
APIResponse({
    "data": {
        "color": "black",
        "comments": "",
        "domain": {
            "domain-type": "domain",
            "name": "SMC User",
            "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
        },
        "groups": [],
        "icon": "Objects/host",
        "interfaces": [],
        "ipv4-address": "8.8.8.8",
        "meta-info": {
            "creation-time": {
                "iso-8601": "2020-05-01T21:49+0300",
                "posix": 1588358973517
            },
            "creator": "admin",
            "last-modifier": "admin",
            "last-modify-time": {
                "iso-8601": "2020-05-01T21:49+0300",
                "posix": 1588358973517
            },
            "lock": "unlocked",
            "validation-state": "ok"
        },
        "name": "h_8.8.8.8",
        "nat-settings": {
            "auto-rule": false
        },
        "read-only": false,
        "tags": [],
        "type": "host",
        "uid": "c210af07-1939-49d3-a351-953a9c471d9e"
    },
    "res_obj": {
        "data": {
            "color": "black",
            "comments": "",
            "domain": {
                "domain-type": "domain",
                "name": "SMC User",
                "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
            },
            "groups": [],
            "icon": "Objects/host",
            "interfaces": [],
            "ipv4-address": "8.8.8.8",
            "meta-info": {
                "creation-time": {
                    "iso-8601": "2020-05-01T21:49+0300",
                    "posix": 1588358973517
                },
                "creator": "admin",
                "last-modifier": "admin",
                "last-modify-time": {
                    "iso-8601": "2020-05-01T21:49+0300",
                    "posix": 1588358973517
                },
                "lock": "unlocked",
                "validation-state": "ok"
            },
            "name": "h_8.8.8.8",
            "nat-settings": {
                "auto-rule": false
            },
            "read-only": false,
            "tags": [],
            "type": "host",
            "uid": "c210af07-1939-49d3-a351-953a9c471d9e"
        },
        "status_code": 200
    },
    "status_code": 200,
    "success": true
})

api_query

αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αžαŸ’αž‰αž»αŸ†αž’αŸ’αžœαžΎαž€αžΆαžšαž€αž€αŸ‹αž‘αž»αž€αž—αŸ’αž›αžΆαž˜αŸ—αžαžΆαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž“αŸαŸ‡αž’αžΆαž…αž’αž“αž»αžœαžαŸ’αžαž”αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ‚αž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘αžŠαŸ‚αž›αž›αž‘αŸ’αž’αž•αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž’αž»αž αŸ’αžœαžŸαž·αžαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž€αžΆαžšαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“αž”αŸ‚αž”αž“αŸαŸ‡αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžœαžΆαž˜αžΆαž“ αž¬αž’αžΆαž…αž˜αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž…αŸ’αžšαžΎαž“αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž“αŸαŸ‡αž’αžΆαž…αž‡αžΆαžŸαŸ†αžŽαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž‰αŸ’αž‡αžΈαž“αŸƒαžœαžαŸ’αžαž»αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ†αžŽαžΎαž”αŸ‚αž”αž“αŸαŸ‡ API αžαŸ’αžšαž‘αž”αŸ‹αž”αž‰αŸ’αž‡αžΈαžœαžαŸ’αžαž» 50 αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ (αž’αŸ’αž“αž€αž’αžΆαž…αž”αž„αŸ’αž€αžΎαž“αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹αžŠαž›αŸ‹ 500 αžœαžαŸ’αžαž»αž€αŸ’αž“αž»αž„αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”) αŸ” αž αžΎαž™αžŠαžΎαž˜αŸ’αž”αžΈαž€αž»αŸ†αž±αŸ’αž™αž‘αžΆαž‰αž–αŸαžαŸŒαž˜αžΆαž“αž…αŸ’αžšαžΎαž“αžŠαž„ αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž’αž»αž αŸ’αžœαžŸαž·αžαž€αŸ’αž“αž»αž„αžŸαŸ†αžŽαžΎ API αž˜αžΆαž“αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš api_query αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸαŸ‡αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αŸ” αž§αž‘αžΆαž αžšαžŽαŸβ€‹αž“αŸƒβ€‹αž€αžΆαžšβ€‹αž αŸ…β€‹αž‘αžΌαžšαžŸαž–αŸ’αž‘β€‹αžŠαŸ‚αž›β€‹αžαŸ’αžšαžΌαžœβ€‹αž€αžΆαžšβ€‹αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšβ€‹αž“αŸαŸ‡αŸ– show-sessions, show-hosts, show-networks, show-wildcards, show-group, show-address-ranges, show-simple-gateways, show-simple-cluster, show-access-roles, show-trusted-client, αž€αž‰αŸ’αž…αž”αŸ‹αž”αž„αŸ’αž αžΆαž‰. αžαžΆαž˜αž€αžΆαžšαž–αž·αž αž™αžΎαž„αžƒαžΎαž‰αž–αžΆαž€αŸ’αž™αž–αž αž»αžœαž…αž“αŸˆαž“αŸ…αž€αŸ’αž“αž»αž„αžˆαŸ’αž˜αŸ„αŸ‡αž“αŸƒαž€αžΆαžšαž αŸ… API αž‘αžΆαŸ†αž„αž“αŸαŸ‡ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž€αžΆαžšαž αŸ…αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž“αžΉαž„αž€αžΆαž“αŸ‹αžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžαžΆαž˜αžšαž™αŸˆ api_query

show_hosts = client.api_query('show-hosts') 

αž›αž‘αŸ’αž’αž•αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ†αžŽαžΎαž“αŸαŸ‡αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž€αžΆαžαŸ‹αŸ–

In [21]: show_hosts                                                             
Out[21]: 
APIResponse({
    "data": [
        {
            "domain": {
                "domain-type": "domain",
                "name": "SMC User",
                "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
            },
            "ipv4-address": "192.168.47.1",
            "name": "h_192.168.47.1",
            "type": "host",
            "uid": "5d7d7086-d70b-4995-971a-0583b15a2bfc"
        },
        {
            "domain": {
                "domain-type": "domain",
                "name": "SMC User",
                "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
            },
            "ipv4-address": "8.8.8.8",
            "name": "h_8.8.8.8",
            "type": "host",
            "uid": "c210af07-1939-49d3-a351-953a9c471d9e"
        }
    ],
    "res_obj": {
        "data": {
            "from": 1,
            "objects": [
                {
                    "domain": {
                        "domain-type": "domain",
                        "name": "SMC User",
                        "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
                    },
                    "ipv4-address": "192.168.47.1",
                    "name": "h_192.168.47.1",
                    "type": "host",
                    "uid": "5d7d7086-d70b-4995-971a-0583b15a2bfc"
                },
                {
                    "domain": {
                        "domain-type": "domain",
                        "name": "SMC User",
                        "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
                    },
                    "ipv4-address": "8.8.8.8",
                    "name": "h_8.8.8.8",
                    "type": "host",
                    "uid": "c210af07-1939-49d3-a351-953a9c471d9e"
                }
            ],
            "to": 2,
            "total": 2
        },
        "status_code": 200
    },
    "status_code": 200,
    "success": true
})

αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž αŸ… API

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαž’αžαŸαžš αž“αž·αž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸƒαžαŸ’αž“αžΆαž€αŸ‹ APIResponse(αž‘αžΆαŸ†αž„αžαžΆαž„αž€αŸ’αž“αž»αž„αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž”αžšαž·αž”αž‘ αž“αž·αž„αžαžΆαž„αž€αŸ’αžšαŸ…)αŸ” αž“αŸ…αžαŸ’αž“αžΆαž€αŸ‹ APIResponse αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž 4 αž“αž·αž„ 5 variables αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž‡αžΆαž˜αž»αž“ αž™αžΎαž„αž“αžΉαž„αžšαžŸαŸ‹αž“αŸ…αž›αžΎαž’αŸ’αžœαžΈαžŠαŸ‚αž›αžŸαŸ†αžαžΆαž“αŸ‹αž”αŸ†αž•αž»αžαžŠαŸ„αž™αž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαŸ”

αž€αžΆαžšαž’αŸ’αžœαžΎαž±αŸ’αž™αžŸαžΆαž˜αž‰αŸ’αž‰αž“αžΌαžœ Check Point API αž‡αžΆαž˜αž½αž™ Python SDK

αž—αžΆαž–αž‡αŸ„αž‚αž‡αŸαž™

αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αžœαžΆαž‡αžΆαž‚αŸ†αž“αž·αžαž›αŸ’αž’αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžΆαž€αžŠαžαžΆαž€αžΆαžšαž αŸ… API αž‘αž‘αž½αž›αž”αžΆαž“αž‡αŸ„αž‚αž‡αŸαž™ αž“αž·αž„αž•αŸ’αžαž›αŸ‹αž›αž‘αŸ’αž’αž•αž›αž˜αž€αžœαž·αž‰αŸ” αž˜αžΆαž“αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαžΏαž„αž“αŸαŸ‡ αž—αžΆαž–αž‡αŸ„αž‚αž‡αŸαž™:

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

αžαŸ’αžšαž‘αž”αŸ‹ True αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αžΆαžšαž αŸ… API αž‡αŸ„αž‚αž‡αŸαž™ (αž›αŸαžαž€αžΌαžŠαž†αŸ’αž›αžΎαž™αžαž” - 200) αž“αž·αž„ False αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αž·αž“αž‡αŸ„αž‚αž‡αŸαž™ (αž›αŸαžαž€αžΌαžŠαž†αŸ’αž›αžΎαž™αžαž”αž•αŸ’αžŸαŸαž„αž‘αŸ€αž)αŸ” αžœαžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ’αžšαžΎαž—αŸ’αž›αžΆαž˜αŸ—αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž αŸ… API αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž αžΆαž‰αž–αŸαžαŸŒαž˜αžΆαž“αž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž›αŸαžαž€αžΌαžŠαž†αŸ’αž›αžΎαž™αžαž”αŸ”

if api_ver.success: 
    print(api_versions.data) 
else: 
    print(api_versions.err_message) 

αž€αžΌαžŠαžŸαŸ’αžαžΆαž“αž—αžΆαž–

αžαŸ’αžšαž‘αž”αŸ‹αž›αŸαžαž€αžΌαžŠαž†αŸ’αž›αžΎαž™αžαž”αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž αŸ… API αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αŸ”

In [62]: api_versions.status_code                                               
Out[62]: 400

αž›αŸαžαž€αžΌαžŠαž†αŸ’αž›αžΎαž™αžαž”αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“αŸ– 200,400,401,403,404,409,500,501.

set_success_status

αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αžœαžΆαž’αžΆαž…αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαž˜αŸ’αž›αŸƒαž“αŸƒαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž‡αŸ„αž‚αž‡αŸαž™αŸ” αžαžΆαž˜αž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸ αž’αŸ’αž“αž€αž’αžΆαž…αžŠαžΆαž€αŸ‹αž’αŸ’αžœαžΈαž€αŸαž”αžΆαž“ αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αžαŸ’αžŸαŸ‚αž’αž˜αŸ’αž˜αžαžΆαž€αŸαžŠαŸ„αž™αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž§αž‘αžΆαž αžšαžŽαŸαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž‘αžΎαž„αžœαž·αž‰αž“αžΌαžœαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž“αŸαŸ‡αž‘αŸ…αž‡αžΆ False αž€αŸ’αžšαŸ„αž˜αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™αŸ” αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡ αžŸαžΌαž˜αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž›αžΎαž§αž‘αžΆαž αžšαžŽαŸ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž˜αžΆαž“αž€αž·αž…αŸ’αž…αž€αžΆαžšαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž“αžΉαž„αž–αž·αž…αžΆαžšαžŽαžΆαžŸαŸ†αžŽαžΎαž“αŸαŸ‡αž˜αž·αž“αž‡αŸ„αž‚αž‡αŸαž™ (αž™αžΎαž„αž“αžΉαž„αž€αŸ†αžŽαžαŸ‹αž’αžαŸαžšαž‡αŸ„αž‚αž‡αŸαž™αž‘αŸ…αž‡αžΆ αž˜αž·αž“αž–αž·αžαž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαž€αžΆαžšαž αŸ… API αž‘αž‘αž½αž›αž”αžΆαž“αž‡αŸ„αž‚αž‡αŸαž™αž αžΎαž™αž”αžΆαž“αžαŸ’αžšαž‘αž”αŸ‹αž›αŸαžαž€αžΌαžŠ 200) αŸ”

for task in task_result.data["tasks"]:
    if task["status"] == "failed" or task["status"] == "partially succeeded":
        task_result.set_success_status(False)
        break

αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž” ()

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž†αŸ’αž›αžΎαž™αžαž”αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž˜αžΎαž›αžœαž…αž“αžΆαž“αž»αž€αŸ’αžšαž˜αž‡αžΆαž˜αž½αž™αž›αŸαžαž€αžΌαžŠαž†αŸ’αž›αžΎαž™αžαž” (status_code) αž“αž·αž„αžαž½αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž” (តួ)αŸ”

In [94]: api_versions.response()                                                
Out[94]: 
{'status_code': 200,
 'data': {'current-version': '1.6',
  'supported-versions': ['1', '1.1', '1.2', '1.3', '1.4', '1.5', '1.6']}}

αž‘αž·αž“αŸ’αž“αž“αŸαž™

αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž˜αžΎαž›αžƒαžΎαž‰αžαŸ‚αžαž½αž“αŸƒαž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž” (αžšαžΆαž„αž€αžΆαž™) αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αžŠαŸ‚αž›αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αŸ”

In [93]: api_versions.data                                                      
Out[93]: 
{'current-version': '1.6',
 'supported-versions': ['1', '1.1', '1.2', '1.3', '1.4', '1.5', '1.6']}

error_message

αž–αŸαžαŸŒαž˜αžΆαž“αž“αŸαŸ‡αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“αžαŸ‚αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž˜αžΆαž“αž€αŸ†αž αž»αžŸαž€αžΎαžαž‘αžΎαž„αžαžŽαŸˆαž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ†αžŽαžΎ API (αž›αŸαžαž€αžΌαžŠαž†αŸ’αž›αžΎαž™αžαž” αž˜αž·αž“αž˜αžΆαž“ ្០០)αŸ” αž›αž‘αŸ’αž’αž•αž›αž§αž‘αžΆαž αžšαžŽαŸ

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

αž§αž‘αžΆαž αžšαžŽαŸαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸ

αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαžŠαŸ‚αž›αž”αŸ’αžšαžΎαž€αžΆαžšαž αŸ… API αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž“αŸ…αž€αŸ’αž“αž»αž„ Management API 1.6αŸ”

αž‡αžΆαžŠαŸ†αž”αžΌαž„ αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαŸαž–αŸ’αž‘αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαŸ‚αž˜ ΠΈ αž‡αž½αžšαž”αž“αŸ’αžαŸ‚αž˜αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“. αž§αž”αž˜αžΆαžαžΆαž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αž„αŸ’αž€αžΎαžαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸƒαž”αžŽαŸ’αžαžΆαž‰αžšαž„ 192.168.0.0/24 αžŠαŸ‚αž›αž‡αžΆ octet αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž‚αžΊ 5 αž‡αžΆαžœαžαŸ’αžαž»αž“αŸƒαž”αŸ’αžšαž—αŸαž‘αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ αž αžΎαž™αžŸαžšαžŸαŸαžšαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‡αžΆαžœαžαŸ’αžαž»αž“αŸƒαž”αŸ’αžšαž—αŸαž‘αž‡αž½αžšαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αžŠαž€αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž”αžŽαŸ’αžαžΆαž‰αžšαž„ αž“αž·αž„αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž•αŸ’αžŸαžΆαž™αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαŸ‚αž›αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡ αž αžΎαž™αž”αž„αŸ’αž€αžΎαžαžœαžαŸ’αžαž» 50 αž“αŸƒαž”αŸ’αžšαž—αŸαž‘αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ αž“αž·αž„ 51 αžœαžαŸ’αžαž»αž“αŸƒαž”αŸ’αžšαž—αŸαž‘αž‡αž½αžšαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆ αž€αžΆαžšαž αŸ… API 101 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžš (αž˜αž·αž“αžšαžΆαž”αŸ‹αž”αž‰αŸ’αž…αžΌαž›αž€αžΆαžšαž αŸ…αž…αŸαž‰αž…αž»αž„αž€αŸ’αžšαŸ„αž™)αŸ” αž•αž„αžŠαŸ‚αžš αžŠαŸ„αž™αž”αŸ’αžšαžΎαž˜αŸ‰αžΌαžŒαž»αž› timeit αž™αžΎαž„αž‚αžŽαž“αžΆαž–αŸαž›αžœαŸαž›αžΆαžŠαŸ‚αž›αžœαžΆαžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžšαž αžΌαžαžŠαž›αŸ‹αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αžŸαžΆαž™αŸ”

αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαŸ„αž™αž”αŸ’αžšαžΎ add-host αž“αž·αž„ add-address-range

import timeit
from cpapi import APIClient, APIClientArgs

start = timeit.default_timer()

first_ip = 1
last_ip = 4

client_args = APIClientArgs(server="192.168.47.240")

with APIClient(client_args) as client: 
     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
     for ip in range(5,255,5):
         add_host = client.api_call("add-host", {"name" : f"h_192.168.0.{ip}", "ip-address": f'192.168.0.{ip}'})
     while last_ip < 255:
         add_range = client.api_call("add-address-range", {"name": f"r_192.168.0.{first_ip}-{last_ip}", "ip-address-first": f"192.168.0.{first_ip}", "ip-address-last": f"192.168.0.{last_ip}"})
         first_ip+=5
         last_ip+=5
     stop = timeit.default_timer() 
     publish = client.api_call("publish")
     
print(f'Time to execute batch request: {stop - start} seconds')

αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸαž˜αž“αŸ’αž‘αžΈαžšαž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž…αŸ†αžŽαžΆαž™αž–αŸαž›αž–αžΈ 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 αž˜αž½αž™αžŠαŸ„αž™αž”αŸ’αžšαžΎ αž›αž»αž”-αžœαžαŸ’αžαž»-αž”αžΆαž…αŸ‹. αž₯αž‘αžΌαžœαž“αŸαŸ‡αžŸαžΌαž˜αž˜αžΎαž›αž§αž‘αžΆαž αžšαžŽαŸαž€αžΌαžŠαžŠαŸ‚αž›αž›αž»αž”αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž–αžΈαž˜αž»αž“αžαžΆαž˜αžšαž™αŸˆ 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)

αž˜αž»αžαž„αžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžαŸ’αž˜αžΈαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Check Point αž‘αž‘αž½αž›αž”αžΆαž“αž€αžΆαžšαž αŸ… API αž—αŸ’αž›αžΆαž˜αŸ—αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ R80.40 "αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸ" αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαžαŸ’αžšαž›αž”αŸ‹αž‘αŸ…αž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž‘αžΎαž„αžœαž·αž‰ αž“αž·αž„ Smart Task αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαŸ’αž›αž½αž“ αž αžΎαž™αž€αžΆαžšαž αŸ… API αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ€αž”αž…αŸ†αž—αŸ’αž›αžΆαž˜αŸ—αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αž½αž€αž‚αŸαŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αž˜αž»αžαž„αžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž–αŸαž›αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž–αžΈαž€αž»αž„αžŸαžΌαž› Legacy αž‘αŸ…αž˜αž»αžαž„αžΆαžšαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž”αž„αŸ’αžšαž½αž”αž”αž„αŸ’αžšαž½αž˜ αž€αŸαž‘αž‘αž½αž›αž”αžΆαž“αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš 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")

αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž” Python αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž…αŸ†αžŽαž»αž…αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™

αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αžΊαžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ” README.md αž˜αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž” Python αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž”αž‰αŸ’αž‡αžΆαŸ” αžœαžΆαž’αžΆαž…αž˜αžΆαž“αž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αž˜αž·αž“αž’αžΆαž…αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ API αž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžαžαžœαžΈαžŠαŸαž’αžΌαžšαž™αŸˆαž–αŸαž›αž”αŸ’αžšαžΆαŸ†αž˜αž½αž™αž“αžΆαž‘αžΈ αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž˜αžΎαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž˜αŸ‰αžΌαžŒαž»αž› cpapi αž“αž·αž„αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž“αŸƒαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž” Python αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž”αž‰αŸ’αž‡αžΆαŸ” αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ‚αž›αž’αŸ’αžœαžΎαžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž€αž˜αŸ’αž˜αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž…αŸ’αžšαž€αž•αŸ’αž›αžΌαžœαžαŸ’αž˜αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž·αž…αŸ’αž…αž€αžΆαžšαžŠαžΌαž…αž‡αžΆ αžŸαžœαž“αž€αž˜αŸ’αž˜αž”αžŽαŸ’αžαžΆαž‰αŸ” αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–. αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αžαŸ’αžšαžΌαžœαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αŸ– αž˜αž»αžαž„αžΆαžšαž˜αž·αž“αž‘αžΆαž“αŸ‹αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαŸ’αž›αž½αž“αž“αŸ…αž€αŸ’αž“αž»αž„ Python 2.7 αž“αŸ…αž‘αžΎαž™αž‘αŸ αž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αŸαžαŸŒαž˜αžΆαž“αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αž‰αŸ’αž…αžΌαž› αž˜αž»αžαž„αžΆαžšαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ raw_αž”αž‰αŸ’αž…αžΌαž›. αž”αžΎαž˜αž·αž“αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‘αŸ αž€αžΌαžŠαž‚αžΊαžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αžΉαž„αž€αžΆαžšαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αžš αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžœαžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ’αžšαžΎαž˜αž»αžαž„αžΆαžšαž‡αžΆαž„ 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","ΠΏΠ°Ρ€ΠΎΠ»ΡŒ","ΠŸΠ°Ρ€ΠΎΠ»ΡŒ","ΠšΠ»ΡŽΡ‡","ΠΊΠ»ΡŽΡ‡","ΡˆΠΈΡ„Ρ€","Π¨ΠΈΡ„Ρ€"] }

αžŸαŸαž…αž€αŸ’αžαžΈαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“

αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž–αž·αž“αž·αžαŸ’αž™αžαŸ‚αž›αž‘αŸ’αž’αž—αžΆαž–αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒαž€αžΆαžšαž„αžΆαžšαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž–αžŸαŸ‹αžαŸ’αž›αžΆαž“αŸ‹ SDK αž“αž·αž„αž˜αŸ‰αžΌαžŒαž»αž› cpapi(αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž”αžΆαž“αž‘αžΆαž™ αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž–αž·αžαž‡αžΆαž˜αžΆαž“αž“αŸαž™αžŠαžΌαž…αž‚αŸ’αž“αžΆ) αž αžΎαž™αžŠαŸ„αž™αžŸαž·αž€αŸ’αžŸαžΆαž€αžΌαžŠαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΌαžŒαž»αž›αž“αŸαŸ‡ αž’αŸ’αž“αž€αž“αžΉαž„αžšαž€αžƒαžΎαž‰αž›αž‘αŸ’αž’αž—αžΆαž–αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžœαžΆαŸ” αžœαžΆαž’αžΆαž…αž‘αŸ…αžšαž½αž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž…αž„αŸ‹αž”αž“αŸ’αžαŸ‚αž˜αžœαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αžαŸ’αž“αžΆαž€αŸ‹ αž˜αž»αžαž„αžΆαžš αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž αž“αž·αž„αž’αžαŸαžšαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ” αž’αŸ’αž“αž€αžαŸ‚αž„αžαŸ‚αž’αžΆαž…αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž“αž·αž„αž˜αžΎαž›αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Check Point αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€ CodeHub αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž αž‚αž˜αž“αŸ CheckMatesαžŠαŸ‚αž›αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αž‘αžΆαŸ†αž„αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž•αž›αž·αžαž•αž› αž“αž·αž„αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ”

αžšαžΈαž€αžšαžΆαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αžΌαžŠ αž“αž·αž„αž’αžšαž‚αž»αžŽαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αžΆαž“αžŠαž›αŸ‹αž…αž”αŸ‹!

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹