change format to json
This commit is contained in:
parent
c22f0ce97c
commit
8516fa921c
2 changed files with 71 additions and 52 deletions
6
PKGBUILD
6
PKGBUILD
|
@ -1,7 +1,7 @@
|
||||||
# Maintainer: 1ridic <i@8f.al>
|
# Maintainer: 1ridic <i@8f.al>
|
||||||
pkgname=uptimes
|
pkgname=uptimes
|
||||||
pkgver=0.1.4
|
pkgver=0.1.7
|
||||||
pkgrel=2
|
pkgrel=1
|
||||||
pkgdesc="status of total uptime"
|
pkgdesc="status of total uptime"
|
||||||
arch=('any')
|
arch=('any')
|
||||||
url=""
|
url=""
|
||||||
|
@ -11,7 +11,7 @@ source=(
|
||||||
local://uptimes
|
local://uptimes
|
||||||
local://uptimesd.service
|
local://uptimesd.service
|
||||||
)
|
)
|
||||||
md5sums=('17dfb70e8c5d7c21d13fca3f16c07d02'
|
md5sums=('a0d8fd353a37f14508367cb968601309'
|
||||||
'7a90889f87792317e70ebdce9dae7023')
|
'7a90889f87792317e70ebdce9dae7023')
|
||||||
|
|
||||||
package() {
|
package() {
|
||||||
|
|
117
uptimes
117
uptimes
|
@ -6,6 +6,7 @@ import sys
|
||||||
import argparse
|
import argparse
|
||||||
import signal
|
import signal
|
||||||
import socket
|
import socket
|
||||||
|
import json
|
||||||
|
|
||||||
startTime = 0
|
startTime = 0
|
||||||
uptime = 0
|
uptime = 0
|
||||||
|
@ -14,6 +15,48 @@ s = 0
|
||||||
socket_file = '/run/uptimesd.sock'
|
socket_file = '/run/uptimesd.sock'
|
||||||
uptimes_db = '/etc/uptimes/uptimes.db'
|
uptimes_db = '/etc/uptimes/uptimes.db'
|
||||||
|
|
||||||
|
def readUpTime():
|
||||||
|
global uptime,startTime
|
||||||
|
|
||||||
|
with open('/proc/uptime', 'r') as f:
|
||||||
|
uptime = f.readline()
|
||||||
|
uptime = uptime.split(' ')[0]
|
||||||
|
uptime = float(uptime)
|
||||||
|
return uptime
|
||||||
|
|
||||||
|
def updateTime():
|
||||||
|
global uptime, startTime
|
||||||
|
now = readUpTime()
|
||||||
|
if uptime == 0:
|
||||||
|
with open(uptimes_db, 'r') as f:
|
||||||
|
j = f.readline()
|
||||||
|
j = json.loads(j)
|
||||||
|
uptime = float(j['uptime'])
|
||||||
|
|
||||||
|
if startTime == 0:
|
||||||
|
startTime = now
|
||||||
|
uptime += now - startTime
|
||||||
|
pathExists()
|
||||||
|
with open(uptimes_db, 'w') as f:
|
||||||
|
j = json.dumps({'uptime': uptime})
|
||||||
|
f.write(j)
|
||||||
|
|
||||||
|
def pathExists():
|
||||||
|
# if /etc/uptimes/uptimes.db exist
|
||||||
|
if os.path.exists(uptimes_db):
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
folder = uptimes_db.split('/')
|
||||||
|
folder.pop()
|
||||||
|
folder = '/'.join(folder)
|
||||||
|
if not os.path.exists(folder):
|
||||||
|
# create folder with 600
|
||||||
|
os.mkdir(folder, 0o600)
|
||||||
|
# create uptimes.db with 600
|
||||||
|
with open(uptimes_db, 'w') as f:
|
||||||
|
os.chmod(uptimes_db, 0o600)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
global uptime, s
|
global uptime, s
|
||||||
parse = argparse.ArgumentParser(description='Uptimes')
|
parse = argparse.ArgumentParser(description='Uptimes')
|
||||||
|
@ -49,50 +92,15 @@ def main():
|
||||||
print('Total Uptime: %d years %d days %d hours %d minutes %d seconds' % (years, days, hours, minutes, seconds))
|
print('Total Uptime: %d years %d days %d hours %d minutes %d seconds' % (years, days, hours, minutes, seconds))
|
||||||
|
|
||||||
|
|
||||||
def readUpTime():
|
|
||||||
global uptime,startTime
|
|
||||||
|
|
||||||
with open('/proc/uptime', 'r') as f:
|
|
||||||
uptime = f.readline()
|
|
||||||
uptime = uptime.split(' ')[0]
|
|
||||||
uptime = float(uptime)
|
|
||||||
return uptime
|
|
||||||
|
|
||||||
def pathExists():
|
|
||||||
# if /etc/uptimes/uptimes.db exist
|
|
||||||
if os.path.exists(uptimes_db):
|
|
||||||
# check permissions
|
|
||||||
if os.stat(uptimes_db).st_mode != 0o600:
|
|
||||||
# change permissions
|
|
||||||
os.chmod(uptimes_db, 0o600)
|
|
||||||
|
|
||||||
# check the content
|
|
||||||
with open(uptimes_db, 'r') as f:
|
|
||||||
content = f.readline()
|
|
||||||
if content == '':
|
|
||||||
# write 0
|
|
||||||
with open(uptimes_db, 'w') as f:
|
|
||||||
f.write('0')
|
|
||||||
os.chmod(uptimes_db, 0o600)
|
|
||||||
|
|
||||||
else:
|
|
||||||
folder = uptimes_db.split('/')
|
|
||||||
folder.pop()
|
|
||||||
folder = '/'.join(folder)
|
|
||||||
if not os.path.exists(folder):
|
|
||||||
# create folder with 600
|
|
||||||
os.mkdir(folder, 0o600)
|
|
||||||
# create uptimes.db with 600
|
|
||||||
with open(uptimes_db, 'w') as f:
|
|
||||||
f.write('0')
|
|
||||||
os.chmod(uptimes_db, 0o600)
|
|
||||||
|
|
||||||
|
|
||||||
def daemon(fork = True):
|
def daemon(fork = True):
|
||||||
global uptime, now, s
|
global uptime, now, s
|
||||||
|
|
||||||
|
print('Uptimesd starting...')
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
if os.path.exists(socket_file):
|
if os.path.exists(socket_file):
|
||||||
print('Uptimesd already running')
|
print('Uptimesd already running')
|
||||||
|
sys.stdout.flush()
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# fork
|
# fork
|
||||||
|
@ -137,6 +145,9 @@ def daemon(fork = True):
|
||||||
import setproctitle
|
import setproctitle
|
||||||
setproctitle.setproctitle('uptimesd')
|
setproctitle.setproctitle('uptimesd')
|
||||||
|
|
||||||
|
print('Creating socket...')
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
||||||
s.bind(socket_file)
|
s.bind(socket_file)
|
||||||
# socket file permission 777
|
# socket file permission 777
|
||||||
|
@ -151,9 +162,14 @@ def daemon(fork = True):
|
||||||
|
|
||||||
pathExists()
|
pathExists()
|
||||||
# read uptime
|
# read uptime
|
||||||
with open(uptimes_db, 'r') as f:
|
|
||||||
uptime = f.readline()
|
print('Reading db...')
|
||||||
uptime = float(uptime)
|
sys.stdout.flush()
|
||||||
|
|
||||||
|
readUpTime()
|
||||||
|
print('Uptime before: %f' % uptime)
|
||||||
|
print('Uptimesd started')
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
conn, addr = s.accept()
|
conn, addr = s.accept()
|
||||||
|
@ -184,15 +200,10 @@ def daemon(fork = True):
|
||||||
conn.close()
|
conn.close()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
def updateTime():
|
|
||||||
global uptime, startTime
|
|
||||||
now = readUpTime()
|
|
||||||
uptime += now - startTime
|
|
||||||
pathExists()
|
|
||||||
with open(uptimes_db, 'w') as f:
|
|
||||||
f.write(str(uptime))
|
|
||||||
|
|
||||||
def sigterm_handler(signo, frame):
|
def sigterm_handler(signo, frame):
|
||||||
|
print('Uptimesd stopping...')
|
||||||
|
sys.stdout.flush()
|
||||||
# update uptime
|
# update uptime
|
||||||
updateTime()
|
updateTime()
|
||||||
# close socket
|
# close socket
|
||||||
|
@ -200,6 +211,14 @@ def sigterm_handler(signo, frame):
|
||||||
if os.path.exists(socket_file):
|
if os.path.exists(socket_file):
|
||||||
os.unlink(socket_file)
|
os.unlink(socket_file)
|
||||||
# exit
|
# exit
|
||||||
|
print('Uptimesd stopped. Goodbye.')
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
|
with open(uptimes_db, 'r') as f:
|
||||||
|
uptime = f.readline()
|
||||||
|
print('Total Uptime: ' + uptime + ' seconds')
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
def comm(command):
|
def comm(command):
|
||||||
|
|
Loading…
Reference in a new issue