#!/usr/bin/env python3 # config.py with api_server, user_name, and password variables import config # https://github.com/CheckPointSW/cp_mgmt_api_python_sdk import cpapi import time # search for VPN users created after this date date_cutoff = "20200301" # save account names to file output_file = "output.csv" query_parameters = {"command": "show-generic-objects", "details_level": "full", "payload": { "class-name": "com.checkpoint.objects.classes.dummy.CpmiUser", "limit": 50, "offset": 0 } } cutoff = time.mktime(time.strptime(date_cutoff, "%Y%m%d")) client_args = cpapi.APIClientArgs(server=config.api_server) with open(output_file, "w") as f: f.write("\"login name\",\"create date\"\n") with cpapi.APIClient(client_args) as client: if client.check_fingerprint() is False: print("Server fingerprint does not match.") exit(1) login_response = client.login(config.user_name, config.password, read_only=True) if login_response.success is False: print("Server connection failed.") exit(2) keep_looping = True user_count = 0 while keep_looping: query_result = client.gen_api_query(**query_parameters) page = query_result.__next__() if page.success and page.res_obj["data"]["total"] > 0: # start from the last user on this page query_parameters["payload"]["offset"] += len(page.data["objects"]) for item in page.data["objects"]: sec, msec = divmod(item["meta-info"]["creationTime"], 1000) if sec > cutoff: user_count += 1 f.write("\"{0}\",{1}\n".format( item["name"], time.strftime("%m-%d-%Y", time.localtime(sec)) )) else: # api error or # exhausted all users in database keep_looping = False print("Total users: ", user_count)