From 77c16c38f4415914be961cbd473d47a8681f8de1 Mon Sep 17 00:00:00 2001 From: Simone Margaritelli Date: Sun, 13 Oct 2019 12:18:35 +0200 Subject: [PATCH] fix: using /proc/uptime to correctly calculate uptime in seconds (fixes #264) --- pwnagotchi/__init__.py | 5 +++++ pwnagotchi/agent.py | 12 +++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/pwnagotchi/__init__.py b/pwnagotchi/__init__.py index 11fa0d8..a26d337 100644 --- a/pwnagotchi/__init__.py +++ b/pwnagotchi/__init__.py @@ -17,6 +17,11 @@ def name(): return _name +def uptime(): + with open('/proc/uptime') as fp: + return int(fp.read().split('.')[0]) + + def mem_usage(): out = subprocess.getoutput("free -m") for line in out.split("\n"): diff --git a/pwnagotchi/agent.py b/pwnagotchi/agent.py index dd1e257..b5c876f 100644 --- a/pwnagotchi/agent.py +++ b/pwnagotchi/agent.py @@ -7,6 +7,7 @@ from datetime import datetime import logging import _thread +import pwnagotchi import pwnagotchi.utils as utils import pwnagotchi.plugins as plugins from pwnagotchi.log import LastSession @@ -241,9 +242,9 @@ class Agent(Client, AsyncAdvertiser, AsyncTrainer): return None def _update_uptime(self, s): - secs = time.time() - self._started_at + secs = pwnagotchi.uptime() self._view.set('uptime', utils.secs_to_hhmmss(secs)) - self._view.set('epoch', '%04d' % self._epoch.epoch) + # self._view.set('epoch', '%04d' % self._epoch.epoch) def _update_counters(self): tot_aps = len(self._access_points) @@ -276,13 +277,10 @@ class Agent(Client, AsyncAdvertiser, AsyncTrainer): def _update_advertisement(self, s): run_handshakes = len(self._handshakes) tot_handshakes = utils.total_unique_handshakes(self._config['bettercap']['handshakes']) - started = s['started_at'].split('.')[0] - started = datetime.strptime(started, '%Y-%m-%dT%H:%M:%S') - started = time.mktime(started.timetuple()) - self._advertiser.update({ \ + self._advertiser.update({ 'pwnd_run': run_handshakes, 'pwnd_tot': tot_handshakes, - 'uptime': time.time() - started, + 'uptime': pwnagotchi.uptime(), 'epoch': self._epoch.epoch}) def _update_peers(self):