ok

Mini Shell

Direktori : /proc/thread-self/cwd/indosec_sym/root/bin/fm-agent/
Upload File :
Current File : //proc/thread-self/cwd/indosec_sym/root/bin/fm-agent/register.py

import fcntl
import time
import sys
import os, os.path
import csv

if "freebsd" in sys.platform.lower():
    register_file = "/usr/local/fm-agent/lib/register"
elif "darwin" == sys.platform.lower():
    register_file = "/usr/local/FortiMonitor/agent/share/fm-agent/register"
else:
    register_file = "/var/lib/fm-agent/register"
if not os.path.exists(register_file):
    home = os.path.expanduser("~")
    register_file = os.path.join(home, "lib", "fm-agent", "register")

unlock_attempts = 10


def register_metric(textkey, description):
    csvfile = open(register_file, "a")
    # Acquire lock
    locked = True

    for i in range(unlock_attempts):
        try:
            fcntl.flock(csvfile, fcntl.LOCK_EX | fcntl.LOCK_NB)
            locked = False
            break
        except:
            time.sleep(1.0)
    if locked:
        print(
            "Could not unlock %s after %s attempts" % (register_file, unlock_attempts)
        )
        sys.exit(1)

    # Append new metrics
    csvwriter = csv.writer(csvfile)
    csvwriter.writerow([textkey, description])

    # Release lock
    fcntl.flock(csvfile, fcntl.LOCK_UN)
    csvfile.close()


if __name__ == "__main__":
    if len(sys.argv) < 3:
        print("Please specify textkey and description")
        sys.exit(0)
    else:
        register_metric(sys.argv[1], sys.argv[2])

Zerion Mini Shell 1.0