Added "list stale" and "remove stale" agents commands to list/remove
agents past their max checkins.1.6
parent
8423c4f3bf
commit
d44b1f1ec6
|
@ -2,6 +2,7 @@
|
|||
---------
|
||||
-Merged in Lost Agent Detection
|
||||
-"agents> remove X" now removes agents that checked in > X minutes ago
|
||||
-"agents> list stale" and "agents> remove stale" now list/remove stale agents past their max checkins
|
||||
|
||||
8/10/2015
|
||||
---------
|
||||
|
|
|
@ -628,7 +628,28 @@ class AgentsMenu(cmd.Cmd):
|
|||
|
||||
agents = self.mainMenu.agents.get_agents()
|
||||
|
||||
if line.strip() != "":
|
||||
if line.strip().lower() == "stale":
|
||||
|
||||
displayAgents = []
|
||||
|
||||
for agent in agents:
|
||||
|
||||
sessionID = self.mainMenu.agents.get_agent_id(agent[3])
|
||||
|
||||
# max check in -> delay + delay*jitter
|
||||
intervalMax = agent[4] + agent[4] * agent[5]
|
||||
|
||||
# get the agent last check in time
|
||||
agentTime = time.mktime(time.strptime(agent[16],"%Y-%m-%d %H:%M:%S"))
|
||||
|
||||
if agentTime < time.mktime(time.localtime()) - intervalMax:
|
||||
# if the last checkin time exceeds the limit, remove it
|
||||
displayAgents.append(agent)
|
||||
|
||||
messages.display_agents(displayAgents)
|
||||
|
||||
|
||||
elif line.strip() != "":
|
||||
# if we're listing an agents active in the last X minutes
|
||||
try:
|
||||
minutes = int(line.strip())
|
||||
|
@ -913,7 +934,27 @@ class AgentsMenu(cmd.Cmd):
|
|||
self.mainMenu.agents.remove_agent('%')
|
||||
except KeyboardInterrupt as e: print ""
|
||||
|
||||
if name.isdigit():
|
||||
elif name.lower() == "stale":
|
||||
# remove 'stale' agents that have missed their checkin intervals
|
||||
|
||||
agents = self.mainMenu.agents.get_agents()
|
||||
|
||||
for agent in agents:
|
||||
|
||||
sessionID = self.mainMenu.agents.get_agent_id(agent[3])
|
||||
|
||||
# max check in -> delay + delay*jitter
|
||||
intervalMax = agent[4] + agent[4] * agent[5]
|
||||
|
||||
# get the agent last check in time
|
||||
agentTime = time.mktime(time.strptime(agent[16],"%Y-%m-%d %H:%M:%S"))
|
||||
|
||||
if agentTime < time.mktime(time.localtime()) - intervalMax:
|
||||
# if the last checkin time exceeds the limit, remove it
|
||||
self.mainMenu.agents.remove_agent(sessionID)
|
||||
|
||||
|
||||
elif name.isdigit():
|
||||
# if we're removing agents that checked in longer than X minutes ago
|
||||
agents = self.mainMenu.agents.get_agents()
|
||||
|
||||
|
@ -936,6 +977,7 @@ class AgentsMenu(cmd.Cmd):
|
|||
print helpers.color("[!] Please enter the minute window for agent checkin.")
|
||||
|
||||
else:
|
||||
print "agent name!"
|
||||
# extract the sessionID and clear the agent tasking
|
||||
sessionID = self.mainMenu.agents.get_agent_id(name)
|
||||
|
||||
|
|
Loading…
Reference in New Issue