ok

Mini Shell

Direktori : /proc/self/root/opt/alt/python37/lib/python3.7/site-packages/clcommon/
Upload File :
Current File : //proc/self/root/opt/alt/python37/lib/python3.7/site-packages/clcommon/cllog.py

# -*- coding: utf-8 -*-

# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2018 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENSE.TXT
#

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import datetime
import os
import sys
import fcntl


class ClAuditLog:
	def __init__(self, log_file_name):
		self._log_file_name = log_file_name

	def info_log_write(self, msg=""):
		dt_now = datetime.datetime.now()
		# Determine parent PID and it's name
		parent_proc_id = os.getppid()
		# Determine parent process name
		proc_name = self._get_process_name(parent_proc_id)

		# write to log file
		try:
			audit_log_file = open(self._log_file_name, 'a')
			fcntl.lockf(audit_log_file, fcntl.LOCK_EX | fcntl.LOCK_NB)
			audit_log_file.write(dt_now.strftime("%Y.%m.%d %H:%M:%S") +
								": Parent process: " + proc_name +
								" (PID: " + str(parent_proc_id) + "): Args: " + str(sys.argv[1:]) +
								" " + msg + "\n")
			audit_log_file.close()
		except (IOError, OSError):
			# Ignore all file errors
			pass

	@staticmethod
	def _get_process_name(pid):
		"""
		Get process name by pid
		:param pid: PID for get process name
		:return: process name
		"""
		name = "<Unknown>"
		try:
			f = open("/proc/%s/stat" % pid, 'r')
			name = f.read().split(' ')[1].replace('(', '').replace(')', '')
			f.close()
		except:
			pass
		return name

Zerion Mini Shell 1.0