initial commit
This commit is contained in:
commit
e939a2439c
6 changed files with 82 additions and 0 deletions
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
.idea
|
||||
config.json
|
||||
uplink.iml
|
||||
uplink.sqlite3
|
||||
0
README.md
Normal file
0
README.md
Normal file
8
config.json.example
Normal file
8
config.json.example
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"interval": 60,
|
||||
"database": "uplink.sqlite3",
|
||||
"uplinks": [
|
||||
{ "provider": "Cable Provider", "ip": "192.168.0.1", "password": "1234" },
|
||||
{ "provider": "DSL Provider", "ip": "192.168.1.1", "password": "1234" }
|
||||
]
|
||||
}
|
||||
0
initial
Normal file
0
initial
Normal file
53
uplink.py
Executable file
53
uplink.py
Executable file
|
|
@ -0,0 +1,53 @@
|
|||
#!/usr/bin/python3 -d
|
||||
|
||||
import calendar
|
||||
import datetime
|
||||
# import daemon
|
||||
import json
|
||||
import sqlite3
|
||||
import time
|
||||
|
||||
from fritzconnection.lib.fritzstatus import FritzStatus
|
||||
|
||||
|
||||
def get_data(config):
|
||||
conn = sqlite3.connect(config["database"])
|
||||
c = conn.cursor()
|
||||
for i in range(len(config["uplinks"])):
|
||||
timestamp = calendar.timegm(time.gmtime())
|
||||
fc = FritzStatus(address=config["uplinks"][i]["ip"], password=config["uplinks"][i]["password"])
|
||||
if fc.is_connected:
|
||||
status = "UP"
|
||||
else:
|
||||
status = "DOWN"
|
||||
print(str(datetime.datetime.utcfromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S')) + " - " +
|
||||
config["uplinks"][i]["provider"] + ": " + status)
|
||||
sql = 'INSERT INTO log (datetime, uptime, external_ip, external_ipv6,is_linked,is_connected, ' \
|
||||
'str_transmission_rate_up, str_transmission_rate_down, str_max_bit_rate_up, str_max_bit_rate_down, ' \
|
||||
'str_max_linked_bit_rate_up, str_max_linked_bit_rate_down, modelname, system_version) VALUES (\"' + \
|
||||
str(timestamp) + '\",\"' + str(fc.uptime) + '\",\"' + str(fc.external_ip) + '\",\"' + \
|
||||
str(fc.external_ipv6) + '\",\"' + str(int(fc.is_linked)) + '\",\"' + \
|
||||
str(int(fc.is_connected)) + '\",\"' + str(fc.str_transmission_rate[0]) + '\",\"' + \
|
||||
str(fc.str_transmission_rate[1]) + '\",\"' + str(fc.str_max_bit_rate[0]) + '\",\"' + \
|
||||
str(fc.str_max_bit_rate[1]) + '\",\"' + str(fc.str_max_linked_bit_rate[0]) + '\",\"' + \
|
||||
str(fc.str_max_linked_bit_rate[1]) + '\",\"' + str(fc.modelname) + '\",\"' + \
|
||||
str(fc.fc.system_version) + '\")'
|
||||
# print(sql)
|
||||
c.execute(sql)
|
||||
print("##########################################################")
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
|
||||
def run(config):
|
||||
# with daemon.DaemonContext():
|
||||
while True:
|
||||
get_data(config)
|
||||
time.sleep(config["interval"])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
with open('config.json', 'r') as configfile:
|
||||
config_data = configfile.read()
|
||||
_config = json.loads(config_data)
|
||||
run(_config)
|
||||
17
uplink.sql
Normal file
17
uplink.sql
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
CREATE TABLE "log" (
|
||||
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
|
||||
"datetime" TEXT NOT NULL,
|
||||
"uptime" INTEGER,
|
||||
"external_ip" TEXT,
|
||||
"external_ipv6" TEXT,
|
||||
"is_linked" INTEGER,
|
||||
"is_connected" INTEGER,
|
||||
"str_transmission_rate_up" TEXT,
|
||||
"str_transmission_rate_down" TEXT,
|
||||
"str_max_bit_rate_up" TEXT,
|
||||
"str_max_bit_rate_down" TEXT,
|
||||
"str_max_linked_bit_rate_up" TEXT,
|
||||
"str_max_linked_bit_rate_down" TEXT,
|
||||
"modelname" TEXT,
|
||||
"system_version" TEXT
|
||||
);
|
||||
Loading…
Add table
Add a link
Reference in a new issue