| Server IP : 68.178.202.69 / Your IP : 216.73.216.174 Web Server : Apache System : Linux 69.202.178.68.host.secureserver.net 3.10.0-1160.139.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Nov 3 13:30:41 UTC 2025 x86_64 User : ikioworld ( 1005) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/self/root/bin/fm-agent/ |
Upload File : |
import fcntl
import time
import sys
import os, os.path
import csv
from datetime import datetime
if "freebsd" in sys.platform.lower():
report_file = "/usr/local/fm-agent/lib/report"
elif "darwin" == sys.platform.lower():
register_file = "/usr/local/FortiMonitor/agent/share/fm-agent/report"
else:
report_file = "/var/lib/fm-agent/report"
if not os.path.exists(report_file):
home = os.path.expanduser("~")
report_file = os.path.join(home, "lib", "fm-agent", "report")
unlock_attempts = 10
def report_metric(textkey, value, timestamp):
csvfile = open(report_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" % (report_file, unlock_attempts))
sys.exit(1)
# Append new metric value
csvwriter = csv.writer(csvfile)
csvwriter.writerow([textkey, value, timestamp.strftime("%Y-%m-%d %H:%M:%S")])
# Release lock
fcntl.flock(csvfile, fcntl.LOCK_UN)
csvfile.close()
if __name__ == "__main__":
if len(sys.argv) < 3:
print(
"Please specify textkey, value, and optionally timestamp in ISO format (in local system timezone)"
)
print('Example: python report.py metric.key 3.5 "2015-03-24 10:11:12"')
sys.exit(0)
else:
if len(sys.argv) >= 4:
try:
timestamp = datetime.strptime(sys.argv[3], "%Y-%m-%d %H:%M:%S")
except:
print("Cannot parse timestamp")
sys.exit(0)
else:
timestamp = datetime.now()
try:
value = float(sys.argv[2])
except:
print("Value should be a number")
sys.exit(0)
report_metric(sys.argv[1], value, timestamp)