#!/usr/bin/env python3 # -*- coding: utf-8 -*- import hashlib import re from datetime import datetime import requests from bs4 import BeautifulSoup import mysql.connector payload = { 'active_page': 'page_login', 'md5_pass': '', 'auth_key': '', 'username': 'home', } r = requests.get('http://192.168.1.1/') cookies = r.cookies matches = re.search(r"", r.text) auth_key = matches[1] m = hashlib.md5() m.update(('%s%s' % ('zonnet', auth_key)).encode('utf-8')) hexdigest = m.hexdigest() payload['auth_key'] = auth_key payload['md5_pass'] = hexdigest r = requests.post('http://192.168.1.1/index.cgi', data=payload, cookies=cookies) ts = datetime.now() r = requests.get('http://192.168.1.1/index.cgi?active_page=page_equipment_status', cookies=cookies) soup = BeautifulSoup(r.text, 'html.parser') tables = soup.find_all('table') downstream = tables[60] upstream = tables[61] downtable = [] keys = ['rx_id_val_dn_', 'status_val_dn_', 'freq_val_dn_', 'power_val_dn_', 'snr_val_dn_'] for x in range(0, 8): row = [] for key in keys: row.append(downstream.find("td", {"id": key + str(x)}).renderContents().strip() .decode('utf-8').replace(' MHz', '').replace(' dBmV', '').replace(' dB', '') ) downtable.append(row) uptable = [] keys = ['rx_id_val_dn_', 'cannel_id_val_dn_', 'freq_val_dn_', 'power_val_dn_'] for x in range(0, 2): row = [] for key in keys: row.append(upstream.find("td", {"id": key + str(x)}).renderContents().strip() .decode('utf-8').replace(' MHz', '').replace(' dBmV', '') ) uptable.append(row) cnx = mysql.connector.connect(user='root', password='', host='127.0.0.1', database='monit') cursor = cnx.cursor() add_downstream = ("INSERT INTO downstream " "(ts, id_recetor, estado, frequencia, potencia, snr) " "VALUES (%s, %s, %s, %s, %s, %s)") add_upstream = ("INSERT INTO upstream " "(ts, id_recetor, channel_id, frequencia, potencia) " "VALUES (%s, %s, %s, %s, %s)") for line in downtable: cursor.execute(add_downstream, (ts, line[0], line[1], line[2], line[3], line[4])) for line in uptable: cursor.execute(add_upstream, (ts, line[0], line[1], line[2], line[3])) cnx.commit() cursor.close() cnx.close()