Skip to content

Commit 086e50b

Browse files
committedMay 18, 2021
nmap
1 parent 0657826 commit 086e50b

File tree

3 files changed

+74
-3
lines changed

3 files changed

+74
-3
lines changed
 

‎.idea/misc.xml

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎.idea/nagiosScripts.iml

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎nmap/main.py

+72-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,77 @@
1-
def main():
1+
import argparse
2+
import json
3+
import logging
4+
import os
5+
import sys
6+
7+
8+
class PidFileExists(Exception):
29
pass
310

411

12+
def add_slash(directory):
13+
if not directory.endswith("/"):
14+
dir_return = directory + "/"
15+
else:
16+
dir_return = directory
17+
return dir_return
18+
19+
20+
def process_pid_file(pid_f: str) -> bool:
21+
if os.path.isfile(pid_f):
22+
raise PidFileExists
23+
else:
24+
try:
25+
with open(pid_f, "w") as pid:
26+
pid.write(str(os.getpid()))
27+
return True
28+
except IOError as e:
29+
raise IOError(e)
30+
31+
32+
def main():
33+
parser = argparse.ArgumentParser()
34+
35+
parser.add_argument('-c', '--config', type=str, required=True, help="Path to config file", dest='config')
36+
parser.add_argument('-v', '--verbose', required=False, action='store_true', dest='verbose')
37+
38+
args_cmd = parser.parse_args()
39+
config_file = args_cmd.config
40+
verbose = args_cmd.verbose
41+
42+
config_open = open(config_file, encoding='utf-8')
43+
config_data = json.load(config_open)
44+
script_name = os.path.basename(sys.argv[0]).split(".")
45+
log_file = f"{add_slash(config_data['log_dir'])}{script_name[0]}.log"
46+
47+
logger = logging.getLogger(__name__)
48+
logger.setLevel(logging.DEBUG)
49+
50+
formatter = logging.Formatter('%(asctime)s:%(name)s:%(message)s')
51+
52+
file_handler = logging.FileHandler(log_file)
53+
file_handler.setLevel(logging.INFO)
54+
file_handler.setFormatter(formatter)
55+
56+
stream_handler = logging.StreamHandler()
57+
stream_handler.setFormatter(formatter)
58+
59+
if verbose:
60+
logger.addHandler(file_handler)
61+
logger.addHandler(stream_handler)
62+
else:
63+
logger.addHandler(file_handler)
64+
65+
pid_file = f"{add_slash(config_data['pid_file_path'])}{script_name[0]}.pid"
66+
nagios_file = f"{add_slash(config_data['pid_file_path'])}{script_name[0]}.nagios"
67+
try:
68+
process_pid_file(pid_file)
69+
except PidFileExists:
70+
logger.info(f"INFO pid file {pid_file} exists")
71+
sys.exit(1)
72+
except OSError as e:
73+
logger.exception(f"#### {e}")
74+
75+
576
if __name__ == "__main__":
677
main()

0 commit comments

Comments
 (0)
Please sign in to comment.