Commit 942c9742 authored by Devaev Maxim's avatar Devaev Maxim

Fixed bug with options parsing, added options for get daemon pids and state

parent b9f7b874
...@@ -22,6 +22,7 @@ def help() : ...@@ -22,6 +22,7 @@ def help() :
"\t--use-syslog=<yes|no> -- Force enable or disable useage of syslog\n" "\t--use-syslog=<yes|no> -- Force enable or disable useage of syslog\n"
"\t--bus-type=<system|session> -- Use system or session bus, replace value from config\n" "\t--bus-type=<system|session> -- Use system or session bus, replace value from config\n"
"\t-d, --daemon -- Run application as daemon, by default using interactive mode\n" "\t-d, --daemon -- Run application as daemon, by default using interactive mode\n"
"\t-s, --status -- Check status of daemon\n"
"\t-k, --kill -- Kill daemon process" % (const.MY_NAME) ) "\t-k, --kill -- Kill daemon process" % (const.MY_NAME) )
def version() : def version() :
...@@ -36,8 +37,8 @@ if __name__ == "__main__" : ...@@ -36,8 +37,8 @@ if __name__ == "__main__" :
daemon_mode_flag = False daemon_mode_flag = False
try : try :
(opts_list, args_list) = getopt.getopt(sys.argv[1:], "hdk", ( "help", "version", (opts_list, args_list) = getopt.getopt(sys.argv[1:], "hdsk", ( "help", "version",
"log-level=", "use-syslog=", "bus-type=", "daemon", "kill" )) "log-level=", "use-syslog=", "bus-type=", "daemon", "status", "kill" ))
for (opts_list_item, args_list_item) in opts_list : for (opts_list_item, args_list_item) in opts_list :
if opts_list_item in ("-h", "--help") : if opts_list_item in ("-h", "--help") :
...@@ -48,21 +49,21 @@ if __name__ == "__main__" : ...@@ -48,21 +49,21 @@ if __name__ == "__main__" :
version() version()
sys.exit(0) sys.exit(0)
elif opts_list_item in ("--log-level") : elif opts_list_item in ("--log-level",) :
try : try :
log_level = validators.validRange(int(args_list_item), const.ALL_LOG_LEVELS_LIST) log_level = validators.validRange(int(args_list_item), const.ALL_LOG_LEVELS_LIST)
except Exception, err1 : except Exception, err1 :
print "Incorrect option \"%s\": %s" % (opts_list_item, str(err1)) print "Incorrect option \"%s\": %s" % (opts_list_item, str(err1))
sys.exit(1) sys.exit(1)
elif opts_list_item in ("--use-syslog") : elif opts_list_item in ("--use-syslog",) :
try : try :
use_syslog_flag = validators.validBool(args_list_item) use_syslog_flag = validators.validBool(args_list_item)
except Exception, err1 : except Exception, err1 :
print "Incorrect option \"%s\": %s" % (opts_list_item, str(err1)) print "Incorrect option \"%s\": %s" % (opts_list_item, str(err1))
sys.exit(1) sys.exit(1)
elif opts_list_item in ("--bus-type") : elif opts_list_item in ("--bus-type",) :
try : try :
bus_type = validators.validRange(args_list_item, const.ALL_BUS_TYPES_LIST) bus_type = validators.validRange(args_list_item, const.ALL_BUS_TYPES_LIST)
except Exception, err1 : except Exception, err1 :
...@@ -72,10 +73,16 @@ if __name__ == "__main__" : ...@@ -72,10 +73,16 @@ if __name__ == "__main__" :
elif opts_list_item in ("-d", "--daemon") : elif opts_list_item in ("-d", "--daemon") :
daemon_mode_flag = True daemon_mode_flag = True
elif opts_list_item in ("-s", "--status") :
try :
sys.exit(abs(daemon.daemonStatus()))
except Exception, err1 :
print "Daemon status error: %s" % (str(err1))
sys.exit(1)
elif opts_list_item in ("-k", "--kill") : elif opts_list_item in ("-k", "--kill") :
try : try :
daemon.killDaemon() sys.exit(abs(daemon.killDaemon()))
sys.exit(0)
except Exception, err1 : except Exception, err1 :
print "Daemon kill error: %s" % (str(err1)) print "Daemon kill error: %s" % (str(err1))
sys.exit(1) sys.exit(1)
......
...@@ -106,6 +106,18 @@ def killDaemon() : ...@@ -106,6 +106,18 @@ def killDaemon() :
os.kill(pids_list_item, signal.SIGTERM) os.kill(pids_list_item, signal.SIGTERM)
logger.info("SIGTERM has been sended to %s process \"%s\" with pid \"%d\"" % ( logger.info("SIGTERM has been sended to %s process \"%s\" with pid \"%d\"" % (
const.MY_NAME, os.path.basename(sys.argv[0]), pids_list_item )) const.MY_NAME, os.path.basename(sys.argv[0]), pids_list_item ))
return 0
else : else :
logger.error("Cannot determine a %s daemon process of \"%s\"" % (const.MY_NAME, os.path.basename(sys.argv[0]))) logger.error("Cannot determine a %s daemon process of \"%s\"" % (const.MY_NAME, os.path.basename(sys.argv[0])))
return -1
def daemonStatus() :
pids_list = pidsListOfPythonProc(sys.argv[0], ["-s", "--status"], os.getuid())
if len(pids_list) != 0 :
for pids_list_item in pids_list :
logger.info("%s daemon has been founded with pid \"%d\"" % (const.MY_NAME, pids_list_item))
return 0
else :
logger.error("Cannot determine a %s daemon process of \"%s\"" % (const.MY_NAME, os.path.basename(sys.argv[0])))
return -1
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment