Closed bdf0506 closed 3 years ago
I encountered all kinds of issues like this, and couldn't make sense of it. I'm certain there's a bug in the modem's firmware that causes auth issues which may be related to the number of session tokens it's able to store. Try stopping your container, restarting the modem, then start the container, but then also don't ever log into the modem's web interface from your browser. Mine has been running for 4-5 days now without getting locked out.
Thanks for the pointers, but unfortunately that doesn't yield me results. I took you advice and stopped the docker container, restarted the modem, then started the docker container and it still only survived one run of the script.
I have found that if I simply restart the docker container, it is able to get the modem stats, and then it dies after the first round. So perhaps its something in the python code with the loop function, perhaps in a cookie that may be used or something with the auth code. I don't have time to test this today, but I wonder if I place the script in a docker container, have it run once, then kill the script, then setup a cron for it to run on an interval if that will solve this. Seems ugly, but could be functional.
I don't know if it'll help, but try the "refresh_token" branch and add refresh_token = true
to the [MAIN]
section in the config.ini. When testing this my modem became completely locked out and I can't get any auth to work at the moment without restarting it. I can't reboot it right now to test further, but I've set this up so it should actually try to log out of the modem on every iteration and clear the session.
Hmmmm, setting refresh_token to true from the refresh_token branch gives me other issues. I'll have to toy with this later today
2020-11-08 16:29:52,719 INFO Obtaining login session from modem
2020-11-08 16:29:52,884 INFO Retreiving stats from https://192.168.100.1/cmconnectionstatus.html
2020-11-08 16:29:59,084 INFO Parsing HTML for modem model sb8200
2020-11-08 16:29:59,179 INFO Sending stats to InfluxDB (unraid.home:8086)
2020-11-08 16:29:59,206 INFO Successfully wrote data to InfluxDB
2020-11-08 16:29:59,206 INFO Sleeping for 600 seconds
2020-11-08 16:30:34,234 INFO Obtaining login session from modem
2020-11-08 16:30:34,235 DEBUG auth_url: https://192.168.100.1/cmconnectionstatus.html?YWRtaW46ODU2MDI5NTA=
2020-11-08 16:30:34,235 DEBUG Requesting logout page to flush sessions
2020-11-08 16:30:34,237 DEBUG Starting new HTTPS connection (1): 192.168.100.1:443
2020-11-08 16:30:34,264 DEBUG https://192.168.100.1:443 "GET /logout.htm HTTP/1.1" 200 None
2020-11-08 16:30:34,305 DEBUG Logout response code: 200
2020-11-08 16:30:34,305 DEBUG Logout response text:
2020-11-08 16:30:34,307 DEBUG Starting new HTTPS connection (1): 192.168.100.1:443
2020-11-08 16:30:34,362 DEBUG https://192.168.100.1:443 "GET /cmconnectionstatus.html?YWRtaW46ODU2MDI5NTA= HTTP/1.1" 200 None
2020-11-08 16:30:34,403 DEBUG Auth request status code: 200
2020-11-08 16:30:34,403 DEBUG Auth request text: s77tIDvW8B2uhiH14vwqgz8CG3TlGRH
2020-11-08 16:30:34,403 INFO Retreiving stats from https://192.168.100.1/cmconnectionstatus.html
2020-11-08 16:30:34,404 DEBUG Starting new HTTPS connection (1): 192.168.100.1:443
2020-11-08 16:30:40,056 DEBUG https://192.168.100.1:443 "GET /cmconnectionstatus.html HTTP/1.1" 200 None
2020-11-08 16:30:40,374 INFO Parsing HTML for modem model sb8200
2020-11-08 16:30:40,507 DEBUG downstream stats: [{'channel_id': '2', 'frequency': '483000000', 'power': '0.1', 'snr': '42.3', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '3', 'frequency': '489000000', 'power': '0.0', 'snr': '42.2', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '4', 'frequency': '495000000', 'power': '0.4', 'snr': '42.2', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '5', 'frequency': '501000000', 'power': '0.0', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '6', 'frequency': '507000000', 'power': '0.4', 'snr': '42.1', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '7', 'frequency': '513000000', 'power': '0.2', 'snr': '42.1', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '8', 'frequency': '519000000', 'power': '0.2', 'snr': '41.6', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '9', 'frequency': '525000000', 'power': '0.1', 'snr': '41.8', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '10', 'frequency': '531000000', 'power': '0.3', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '11', 'frequency': '537000000', 'power': '0.4', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '12', 'frequency': '543000000', 'power': '0.5', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '13', 'frequency': '555000000', 'power': '0.1', 'snr': '41.8', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '14', 'frequency': '561000000', 'power': '-0.2', 'snr': '41.8', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '15', 'frequency': '567000000', 'power': '-0.3', 'snr': '41.7', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '16', 'frequency': '573000000', 'power': '-0.7', 'snr': '41.4', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '17', 'frequency': '579000000', 'power': '0.4', 'snr': '41.6', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '18', 'frequency': '585000000', 'power': '0.7', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '19', 'frequency': '591000000', 'power': '1.3', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '20', 'frequency': '597000000', 'power': '1.0', 'snr': '41.8', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '21', 'frequency': '603000000', 'power': '1.3', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '22', 'frequency': '609000000', 'power': '1.4', 'snr': '42.1', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '23', 'frequency': '615000000', 'power': '0.8', 'snr': '41.8', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '24', 'frequency': '621000000', 'power': '1.2', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '25', 'frequency': '627000000', 'power': '1.2', 'snr': '41.8', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '26', 'frequency': '633000000', 'power': '1.1', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '27', 'frequency': '639000000', 'power': '1.5', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '28', 'frequency': '645000000', 'power': '1.8', 'snr': '42.1', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '29', 'frequency': '651000000', 'power': '1.8', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '30', 'frequency': '657000000', 'power': '1.9', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '31', 'frequency': '663000000', 'power': '1.4', 'snr': '41.8', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '32', 'frequency': '669000000', 'power': '1.2', 'snr': '41.7', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '37', 'frequency': '690000000', 'power': '1.6', 'snr': '40.2', 'corrected': '911383815', 'uncorrectables': '0'}]
2020-11-08 16:30:40,509 DEBUG upstream stats: [{'channel_id': '1', 'frequency': '35600000', 'power': '51.0'}, {'channel_id': '2', 'frequency': '29200000', 'power': '52.0'}, {'channel_id': '3', 'frequency': '22800000', 'power': '52.0'}, {'channel_id': '4', 'frequency': '16400000', 'power': '51.0'}, {'channel_id': '5', 'frequency': '39600000', 'power': '51.0'}]
2020-11-08 16:30:40,510 INFO Sending stats to InfluxDB (unraid.home:8086)
2020-11-08 16:30:40,530 DEBUG Starting new HTTP connection (1): unraid.home:8086
2020-11-08 16:30:40,533 DEBUG http://unraid.home:8086 "POST /write?db=cable_modem_stats HTTP/1.1" 204 0
2020-11-08 16:30:40,533 INFO Successfully wrote data to InfluxDB
2020-11-08 16:30:40,533 DEBUG Influx series sent to db:
2020-11-08 16:30:40,533 DEBUG [{'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 483000000, 'power': 0.1, 'snr': 42.3, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 2}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 489000000, 'power': 0.0, 'snr': 42.2, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 3}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 495000000, 'power': 0.4, 'snr': 42.2, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 4}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 501000000, 'power': 0.0, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 5}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 507000000, 'power': 0.4, 'snr': 42.1, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 6}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 513000000, 'power': 0.2, 'snr': 42.1, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 7}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 519000000, 'power': 0.2, 'snr': 41.6, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 8}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 525000000, 'power': 0.1, 'snr': 41.8, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 9}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 531000000, 'power': 0.3, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 10}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 537000000, 'power': 0.4, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 11}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 543000000, 'power': 0.5, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 12}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 555000000, 'power': 0.1, 'snr': 41.8, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 13}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 561000000, 'power': -0.2, 'snr': 41.8, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 14}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 567000000, 'power': -0.3, 'snr': 41.7, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 15}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 573000000, 'power': -0.7, 'snr': 41.4, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 16}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 579000000, 'power': 0.4, 'snr': 41.6, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 17}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 585000000, 'power': 0.7, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 18}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 591000000, 'power': 1.3, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 19}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 597000000, 'power': 1.0, 'snr': 41.8, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 20}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 603000000, 'power': 1.3, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 21}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 609000000, 'power': 1.4, 'snr': 42.1, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 22}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 615000000, 'power': 0.8, 'snr': 41.8, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 23}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 621000000, 'power': 1.2, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 24}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 627000000, 'power': 1.2, 'snr': 41.8, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 25}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 633000000, 'power': 1.1, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 26}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 639000000, 'power': 1.5, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 27}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 645000000, 'power': 1.8, 'snr': 42.1, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 28}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 651000000, 'power': 1.8, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 29}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 657000000, 'power': 1.9, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 30}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 663000000, 'power': 1.4, 'snr': 41.8, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 31}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 669000000, 'power': 1.2, 'snr': 41.7, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 32}}, {'measurement': 'downstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 690000000, 'power': 1.6, 'snr': 40.2, 'corrected': 911383815, 'uncorrectables': 0}, 'tags': {'channel_id': 37}}, {'measurement': 'upstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 35600000, 'power': 51.0}, 'tags': {'channel_id': 1}}, {'measurement': 'upstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 29200000, 'power': 52.0}, 'tags': {'channel_id': 2}}, {'measurement': 'upstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 22800000, 'power': 52.0}, 'tags': {'channel_id': 3}}, {'measurement': 'upstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 16400000, 'power': 51.0}, 'tags': {'channel_id': 4}}, {'measurement': 'upstream_statistics', 'time': '2020-11-08T16:30:40Z', 'fields': {'frequency': 39600000, 'power': 51.0}, 'tags': {'channel_id': 5}}]
2020-11-08 16:30:40,534 INFO Sleeping for 600 seconds
2020-11-08 16:40:40,634 INFO Obtaining login session from modem
2020-11-08 16:40:40,634 DEBUG auth_url: https://192.168.100.1/cmconnectionstatus.html?YWRtaW46ODU2MDI5NTA=
2020-11-08 16:40:40,634 DEBUG Requesting logout page to flush sessions
2020-11-08 16:40:40,636 DEBUG Starting new HTTPS connection (1): 192.168.100.1:443
2020-11-08 16:40:40,671 DEBUG https://192.168.100.1:443 "GET /logout.htm HTTP/1.1" 200 None
2020-11-08 16:40:40,713 DEBUG Logout response code: 200
2020-11-08 16:40:40,713 DEBUG Logout response text:
2020-11-08 16:40:40,715 DEBUG Starting new HTTPS connection (1): 192.168.100.1:443
2020-11-08 16:40:40,769 DEBUG https://192.168.100.1:443 "GET /cmconnectionstatus.html?YWRtaW46ODU2MDI5NTA= HTTP/1.1" 200 None
2020-11-08 16:40:40,810 DEBUG Auth request status code: 200
2020-11-08 16:40:40,810 DEBUG Auth request text: <!DOCTYPE html>
<html>
<head>
<title>Login</title>
<script src="jquery-1.7.1.min.js"></script>
<script src="json2.js"></script>
<script src="main_arris.js"></script>
<script src="jquery-2.0.3.min.js"></script>
$(document).ready(function(){
$("#htmlheader").load("htmlheader.htm");
});
</script>
</head>
<body>
<div id="htmlheader"></div>
<div class="header">
$(document).ready(function(){
$("#pageheaderA").load("pageheaderA.htm");
});
</script>
<div id="binnacleWrapper1" class="binnacleItems_hide" style="display:none;">
<div id="binnacleWrapper2" class="binnacleItems_hide" style="display:none;">
<div id="binnacleWrapperLeft"><img src="px1_Ux.png" alt="" class="binnacleWrapperShim"></div>
<div id="binnacleWrapperRight"><img src="px1_Ux.png" alt="" class="binnacleWrapperShim"></div>
<div id="binnacleWrapperMiddle">
<div id="binnacleInnards">
<div id="binnacleIndicatorWrap"></div>
<div id="binnacleModelName">
<span id="thisModelNumberIs">
<label id="model">SB8200</label></span></div>
</div>
</div>
</div>
</div>
<div id="pageheaderA"></div>
<div class="container">
<div class="subHeader">
<div class="subHeadcontent">Login</div>
</div>
<form action="">
<br>
<b>Username:</b><br>
<input type="text" id="username" onkeypress="return checkForActivate(event)">
<br>
<br>
<b>Password:</b><br>
<input type="password" id="password" onkeypress="return checkForActivate(event)">
<br>
<br>
<input type="button" id="loginButton" onclick="validate(this.form)" value="Login">
</form>
</div>
<div class="spacer40" style="text-align: center; color: red; font-weight: bold;"></div>
<div class="spacer40"></div>
</div>
<!--gap<div id="bmtg"><div class="gap1"><div class="gap2"><div class="gap3"><div class="gap4"></div></div></div></div></div>-->
<div id="fg1"><div id="fg2"><div id="fg3"><div id="fg4"><div id="fg5"><div id="fg6"><div id="fg7">
<div id="logo_bottom"><a href="http://www.arris.com"><img src="px1_Ux.png" alt="ARRIS" title="ARRIS" class="logo_bottom"></a></div>
<div id="copyright">
<a href="http://www.arris.com">©2019 ARRIS International plc. All rights reserved.</a>
</div>
</div></div></div></div></div></div></div>
<!--/div-->
<script type='text/javascript'>
function authenticateUser(user, password)
{
var token = user + ":" + password;
// Base64 Encoding -> btoa
var hash = btoa(token);
var auth = hash;
sessionStorage.setItem('user', user);
return auth;
}
function validate( form )
{
$(".spacer40")[0].innerHTML = "";
var auth = authenticateUser(form.username.value, form.password.value);
localStorage.setItem('username', form.username.value);
eraseCookie("credential");
$.ajax({
type: 'GET',
url:"/cmconnectionstatus.html?" + auth,
contentType: 'application/x-www-form-urlencoded; charset=utf-8',
xhrFields: {
withCredentials: true
},
headers: {
'Authorization': 'Basic ' + auth
},
success: function (result) {
var token = result;
createCookie("credential", result);
window.location.href = "/cmconnectionstatus.html";
},
error: function (req, status, error) {
alert(error);
}
});
}
function checkForActivate( e )
{
if( e.keyCode == 13 )
{
document.getElementById("loginButton").click();
}
return true;
}
</script>
<!--/div-->
</body>
</html>
2020-11-08 16:40:40,810 ERROR Authentication error, received login page. Check username / password.
2020-11-08 16:40:40,810 INFO Unable to obtain valid login session, sleeping for: 600s
I've pushed more changes since you probably tried last. If it still can't auth after the latest changes (I'm stepping away from this for today after this message), try logging into the modem from your browser, then click the logout button on the top right, then run the script again.
Thanks @andrewfraley for the work here. I have to step away for a bit as well, but i'll try it tonight and report back.
The latest version appears to work! It does provide an extraneous error that should likely be cleaned up (ERROR Authentication error, received login page. Check username / password), but looks like it does in fact work.
2020-11-09 01:16:10,134 DEBUG Starting new HTTPS connection (1): 192.168.100.1:443
2020-11-09 01:16:16,043 DEBUG https://192.168.100.1:443 "GET /cmconnectionstatus.html HTTP/1.1" 200 None
2020-11-09 01:16:16,368 INFO Parsing HTML for modem model sb8200
2020-11-09 01:16:16,460 DEBUG downstream stats: [{'channel_id': '2', 'frequency': '483000000', 'power': '0.3', 'snr': '42.2', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '3', 'frequency': '489000000', 'power': '0.2', 'snr': '42.2', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '4', 'frequency': '495000000', 'power': '0.5', 'snr': '42.2', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '5', 'frequency': '501000000', 'power': '0.2', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '6', 'frequency': '507000000', 'power': '0.6', 'snr': '42.1', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '7', 'frequency': '513000000', 'power': '0.4', 'snr': '42.1', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '8', 'frequency': '519000000', 'power': '0.3', 'snr': '41.8', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '9', 'frequency': '525000000', 'power': '0.3', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '10', 'frequency': '531000000', 'power': '0.5', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '11', 'frequency': '537000000', 'power': '0.5', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '12', 'frequency': '543000000', 'power': '0.6', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '13', 'frequency': '555000000', 'power': '0.2', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '14', 'frequency': '561000000', 'power': '-0.2', 'snr': '41.8', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '15', 'frequency': '567000000', 'power': '-0.4', 'snr': '41.6', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '16', 'frequency': '573000000', 'power': '-0.1', 'snr': '41.5', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '17', 'frequency': '579000000', 'power': '1.0', 'snr': '41.8', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '18', 'frequency': '585000000', 'power': '1.0', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '19', 'frequency': '591000000', 'power': '1.5', 'snr': '42.1', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '20', 'frequency': '597000000', 'power': '1.2', 'snr': '41.8', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '21', 'frequency': '603000000', 'power': '1.5', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '22', 'frequency': '609000000', 'power': '1.6', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '23', 'frequency': '615000000', 'power': '1.1', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '24', 'frequency': '621000000', 'power': '1.5', 'snr': '41.8', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '25', 'frequency': '627000000', 'power': '1.5', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '26', 'frequency': '633000000', 'power': '1.4', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '27', 'frequency': '639000000', 'power': '1.8', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '28', 'frequency': '645000000', 'power': '2.1', 'snr': '42.2', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '29', 'frequency': '651000000', 'power': '2.1', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '30', 'frequency': '657000000', 'power': '2.1', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '31', 'frequency': '663000000', 'power': '1.7', 'snr': '41.8', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '32', 'frequency': '669000000', 'power': '1.5', 'snr': '41.8', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '37', 'frequency': '690000000', 'power': '1.9', 'snr': '40.2', 'corrected': '3795623628', 'uncorrectables': '0'}]
2020-11-09 01:16:16,462 DEBUG upstream stats: [{'channel_id': '1', 'frequency': '35600000', 'power': '51.0'}, {'channel_id': '2', 'frequency': '29200000', 'power': '51.0'}, {'channel_id': '3', 'frequency': '22800000', 'power': '51.0'}, {'channel_id': '4', 'frequency': '16400000', 'power': '51.0'}, {'channel_id': '5', 'frequency': '39600000', 'power': '51.0'}]
2020-11-09 01:16:16,462 INFO Sending stats to InfluxDB (unraid.home:8086)
2020-11-09 01:16:16,480 DEBUG Starting new HTTP connection (1): unraid.home:8086
2020-11-09 01:16:16,493 DEBUG http://unraid.home:8086 "POST /write?db=cable_modem_stats HTTP/1.1" 204 0
2020-11-09 01:16:16,493 INFO Successfully wrote data to InfluxDB
2020-11-09 01:16:16,493 DEBUG Influx series sent to db:
2020-11-09 01:16:16,493 DEBUG [{'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 483000000, 'power': 0.3, 'snr': 42.2, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 2}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 489000000, 'power': 0.2, 'snr': 42.2, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 3}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 495000000, 'power': 0.5, 'snr': 42.2, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 4}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 501000000, 'power': 0.2, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 5}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 507000000, 'power': 0.6, 'snr': 42.1, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 6}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 513000000, 'power': 0.4, 'snr': 42.1, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 7}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 519000000, 'power': 0.3, 'snr': 41.8, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 8}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 525000000, 'power': 0.3, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 9}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 531000000, 'power': 0.5, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 10}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 537000000, 'power': 0.5, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 11}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 543000000, 'power': 0.6, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 12}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 555000000, 'power': 0.2, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 13}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 561000000, 'power': -0.2, 'snr': 41.8, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 14}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 567000000, 'power': -0.4, 'snr': 41.6, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 15}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 573000000, 'power': -0.1, 'snr': 41.5, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 16}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 579000000, 'power': 1.0, 'snr': 41.8, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 17}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 585000000, 'power': 1.0, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 18}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 591000000, 'power': 1.5, 'snr': 42.1, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 19}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 597000000, 'power': 1.2, 'snr': 41.8, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 20}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 603000000, 'power': 1.5, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 21}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 609000000, 'power': 1.6, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 22}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 615000000, 'power': 1.1, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 23}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 621000000, 'power': 1.5, 'snr': 41.8, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 24}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 627000000, 'power': 1.5, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 25}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 633000000, 'power': 1.4, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 26}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 639000000, 'power': 1.8, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 27}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 645000000, 'power': 2.1, 'snr': 42.2, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 28}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 651000000, 'power': 2.1, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 29}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 657000000, 'power': 2.1, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 30}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 663000000, 'power': 1.7, 'snr': 41.8, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 31}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 669000000, 'power': 1.5, 'snr': 41.8, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 32}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 690000000, 'power': 1.9, 'snr': 40.2, 'corrected': 3795623628, 'uncorrectables': 0}, 'tags': {'channel_id': 37}}, {'measurement': 'upstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 35600000, 'power': 51.0}, 'tags': {'channel_id': 1}}, {'measurement': 'upstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 29200000, 'power': 51.0}, 'tags': {'channel_id': 2}}, {'measurement': 'upstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 22800000, 'power': 51.0}, 'tags': {'channel_id': 3}}, {'measurement': 'upstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 16400000, 'power': 51.0}, 'tags': {'channel_id': 4}}, {'measurement': 'upstream_statistics', 'time': '2020-11-09T01:16:16Z', 'fields': {'frequency': 39600000, 'power': 51.0}, 'tags': {'channel_id': 5}}]
2020-11-09 01:16:16,493 INFO Sleeping for 600 seconds
2020-11-09 01:26:16,592 INFO Obtaining login session from modem
2020-11-09 01:26:16,592 DEBUG auth_url: https://192.168.100.1/cmconnectionstatus.html?YWRtaW46ODU2MDI5NTA=
2020-11-09 01:26:16,593 DEBUG Requesting logout page to flush sessions
2020-11-09 01:26:16,594 DEBUG Starting new HTTPS connection (1): 192.168.100.1:443
2020-11-09 01:26:16,621 DEBUG https://192.168.100.1:443 "GET /logout.htm HTTP/1.1" 200 None
2020-11-09 01:26:16,662 DEBUG Logout response code: 200
2020-11-09 01:26:16,662 DEBUG Logout response text:
2020-11-09 01:26:16,663 DEBUG Starting new HTTPS connection (1): 192.168.100.1:443
2020-11-09 01:26:16,709 DEBUG https://192.168.100.1:443 "GET /cmconnectionstatus.html?YWRtaW46ODU2MDI5NTA= HTTP/1.1" 200 None
2020-11-09 01:26:16,751 DEBUG Auth request status code: 200
2020-11-09 01:26:16,751 DEBUG Auth request text: <!DOCTYPE html>
<html>
<head>
<title>Login</title>
<script src="jquery-1.7.1.min.js"></script>
<script src="json2.js"></script>
<script src="main_arris.js"></script>
<script src="jquery-2.0.3.min.js"></script>
$(document).ready(function(){
$("#htmlheader").load("htmlheader.htm");
});
</script>
</head>
<body>
<div id="htmlheader"></div>
<div class="header">
$(document).ready(function(){
$("#pageheaderA").load("pageheaderA.htm");
});
</script>
<div id="binnacleWrapper1" class="binnacleItems_hide" style="display:none;">
<div id="binnacleWrapper2" class="binnacleItems_hide" style="display:none;">
<div id="binnacleWrapperLeft"><img src="px1_Ux.png" alt="" class="binnacleWrapperShim"></div>
<div id="binnacleWrapperRight"><img src="px1_Ux.png" alt="" class="binnacleWrapperShim"></div>
<div id="binnacleWrapperMiddle">
<div id="binnacleInnards">
<div id="binnacleIndicatorWrap"></div>
<div id="binnacleModelName">
<span id="thisModelNumberIs">
<label id="model">SB8200</label></span></div>
</div>
</div>
</div>
</div>
<div id="pageheaderA"></div>
<div class="container">
<div class="subHeader">
<div class="subHeadcontent">Login</div>
</div>
<form action="">
<br>
<b>Username:</b><br>
<input type="text" id="username" onkeypress="return checkForActivate(event)">
<br>
<br>
<b>Password:</b><br>
<input type="password" id="password" onkeypress="return checkForActivate(event)">
<br>
<br>
<input type="button" id="loginButton" onclick="validate(this.form)" value="Login">
</form>
</div>
<div class="spacer40" style="text-align: center; color: red; font-weight: bold;"></div>
<div class="spacer40"></div>
</div>
<!--gap<div id="bmtg"><div class="gap1"><div class="gap2"><div class="gap3"><div class="gap4"></div></div></div></div></div>-->
<div id="fg1"><div id="fg2"><div id="fg3"><div id="fg4"><div id="fg5"><div id="fg6"><div id="fg7">
<div id="logo_bottom"><a href="http://www.arris.com"><img src="px1_Ux.png" alt="ARRIS" title="ARRIS" class="logo_bottom"></a></div>
<div id="copyright">
<a href="http://www.arris.com">©2019 ARRIS International plc. All rights reserved.</a>
</div>
</div></div></div></div></div></div></div>
<!--/div-->
<script type='text/javascript'>
function authenticateUser(user, password)
{
var token = user + ":" + password;
// Base64 Encoding -> btoa
var hash = btoa(token);
var auth = hash;
sessionStorage.setItem('user', user);
return auth;
}
function validate( form )
{
$(".spacer40")[0].innerHTML = "";
var auth = authenticateUser(form.username.value, form.password.value);
localStorage.setItem('username', form.username.value);
eraseCookie("credential");
$.ajax({
type: 'GET',
url:"/cmconnectionstatus.html?" + auth,
contentType: 'application/x-www-form-urlencoded; charset=utf-8',
xhrFields: {
withCredentials: true
},
headers: {
'Authorization': 'Basic ' + auth
},
success: function (result) {
var token = result;
createCookie("credential", result);
window.location.href = "/cmconnectionstatus.html";
},
error: function (req, status, error) {
alert(error);
}
});
}
function checkForActivate( e )
{
if( e.keyCode == 13 )
{
document.getElementById("loginButton").click();
}
return true;
}
</script>
<!--/div-->
</body>
</html>
2020-11-09 01:26:16,751 ERROR Authentication error, received login page. Check username / password.
2020-11-09 01:26:16,751 INFO Obtaining login session from modem
2020-11-09 01:26:16,751 DEBUG auth_url: https://192.168.100.1/cmconnectionstatus.html?YWRtaW46ODU2MDI5NTA=
2020-11-09 01:26:16,751 DEBUG Requesting logout page to flush sessions
2020-11-09 01:26:16,753 DEBUG Starting new HTTPS connection (1): 192.168.100.1:443
2020-11-09 01:26:16,778 DEBUG https://192.168.100.1:443 "GET /logout.htm HTTP/1.1" 200 None
2020-11-09 01:26:16,819 DEBUG Logout response code: 200
2020-11-09 01:26:16,819 DEBUG Logout response text:
2020-11-09 01:26:16,821 DEBUG Starting new HTTPS connection (1): 192.168.100.1:443
2020-11-09 01:26:16,875 DEBUG https://192.168.100.1:443 "GET /cmconnectionstatus.html?YWRtaW46ODU2MDI5NTA= HTTP/1.1" 200 None
2020-11-09 01:26:16,914 DEBUG Auth request status code: 200
2020-11-09 01:26:16,914 DEBUG Auth request text: zcjxNDiEjezz9WfYRjv6hhJ7HP74gQO
2020-11-09 01:26:16,914 INFO Retreiving stats from https://192.168.100.1/cmconnectionstatus.html
2020-11-09 01:26:16,916 DEBUG Starting new HTTPS connection (1): 192.168.100.1:443
2020-11-09 01:26:22,856 DEBUG https://192.168.100.1:443 "GET /cmconnectionstatus.html HTTP/1.1" 200 None
2020-11-09 01:26:23,149 INFO Parsing HTML for modem model sb8200
2020-11-09 01:26:23,178 DEBUG downstream stats: [{'channel_id': '2', 'frequency': '483000000', 'power': '0.3', 'snr': '42.2', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '3', 'frequency': '489000000', 'power': '0.2', 'snr': '42.3', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '4', 'frequency': '495000000', 'power': '0.5', 'snr': '42.2', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '5', 'frequency': '501000000', 'power': '0.2', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '6', 'frequency': '507000000', 'power': '0.6', 'snr': '42.2', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '7', 'frequency': '513000000', 'power': '0.4', 'snr': '42.1', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '8', 'frequency': '519000000', 'power': '0.4', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '9', 'frequency': '525000000', 'power': '0.3', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '10', 'frequency': '531000000', 'power': '0.5', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '11', 'frequency': '537000000', 'power': '0.5', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '12', 'frequency': '543000000', 'power': '0.6', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '13', 'frequency': '555000000', 'power': '0.2', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '14', 'frequency': '561000000', 'power': '-0.2', 'snr': '41.7', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '15', 'frequency': '567000000', 'power': '-0.4', 'snr': '41.6', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '16', 'frequency': '573000000', 'power': '0.0', 'snr': '41.5', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '17', 'frequency': '579000000', 'power': '1.0', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '18', 'frequency': '585000000', 'power': '1.0', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '19', 'frequency': '591000000', 'power': '1.5', 'snr': '42.1', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '20', 'frequency': '597000000', 'power': '1.2', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '21', 'frequency': '603000000', 'power': '1.5', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '22', 'frequency': '609000000', 'power': '1.6', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '23', 'frequency': '615000000', 'power': '1.1', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '24', 'frequency': '621000000', 'power': '1.5', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '25', 'frequency': '627000000', 'power': '1.5', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '26', 'frequency': '633000000', 'power': '1.4', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '27', 'frequency': '639000000', 'power': '1.8', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '28', 'frequency': '645000000', 'power': '2.1', 'snr': '42.2', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '29', 'frequency': '651000000', 'power': '2.1', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '30', 'frequency': '657000000', 'power': '2.1', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '31', 'frequency': '663000000', 'power': '1.7', 'snr': '41.8', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '32', 'frequency': '669000000', 'power': '1.5', 'snr': '41.8', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '37', 'frequency': '690000000', 'power': '1.8', 'snr': '40.2', 'corrected': '3851564484', 'uncorrectables': '0'}]
2020-11-09 01:26:23,180 DEBUG upstream stats: [{'channel_id': '1', 'frequency': '35600000', 'power': '51.0'}, {'channel_id': '2', 'frequency': '29200000', 'power': '51.0'}, {'channel_id': '3', 'frequency': '22800000', 'power': '51.0'}, {'channel_id': '4', 'frequency': '16400000', 'power': '51.0'}, {'channel_id': '5', 'frequency': '39600000', 'power': '51.0'}]
2020-11-09 01:26:23,180 INFO Sending stats to InfluxDB (unraid.home:8086)
2020-11-09 01:26:23,186 DEBUG Starting new HTTP connection (1): unraid.home:8086
2020-11-09 01:26:23,190 DEBUG http://unraid.home:8086 "POST /write?db=cable_modem_stats HTTP/1.1" 204 0
2020-11-09 01:26:23,190 INFO Successfully wrote data to InfluxDB
2020-11-09 01:26:23,190 DEBUG Influx series sent to db:
2020-11-09 01:26:23,190 DEBUG [{'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 483000000, 'power': 0.3, 'snr': 42.2, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 2}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 489000000, 'power': 0.2, 'snr': 42.3, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 3}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 495000000, 'power': 0.5, 'snr': 42.2, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 4}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 501000000, 'power': 0.2, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 5}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 507000000, 'power': 0.6, 'snr': 42.2, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 6}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 513000000, 'power': 0.4, 'snr': 42.1, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 7}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 519000000, 'power': 0.4, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 8}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 525000000, 'power': 0.3, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 9}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 531000000, 'power': 0.5, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 10}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 537000000, 'power': 0.5, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 11}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 543000000, 'power': 0.6, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 12}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 555000000, 'power': 0.2, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 13}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 561000000, 'power': -0.2, 'snr': 41.7, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 14}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 567000000, 'power': -0.4, 'snr': 41.6, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 15}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 573000000, 'power': 0.0, 'snr': 41.5, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 16}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 579000000, 'power': 1.0, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 17}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 585000000, 'power': 1.0, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 18}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 591000000, 'power': 1.5, 'snr': 42.1, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 19}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 597000000, 'power': 1.2, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 20}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 603000000, 'power': 1.5, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 21}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 609000000, 'power': 1.6, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 22}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 615000000, 'power': 1.1, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 23}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 621000000, 'power': 1.5, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 24}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 627000000, 'power': 1.5, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 25}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 633000000, 'power': 1.4, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 26}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 639000000, 'power': 1.8, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 27}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 645000000, 'power': 2.1, 'snr': 42.2, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 28}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 651000000, 'power': 2.1, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 29}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 657000000, 'power': 2.1, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 30}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 663000000, 'power': 1.7, 'snr': 41.8, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 31}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 669000000, 'power': 1.5, 'snr': 41.8, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 32}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 690000000, 'power': 1.8, 'snr': 40.2, 'corrected': 3851564484, 'uncorrectables': 0}, 'tags': {'channel_id': 37}}, {'measurement': 'upstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 35600000, 'power': 51.0}, 'tags': {'channel_id': 1}}, {'measurement': 'upstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 29200000, 'power': 51.0}, 'tags': {'channel_id': 2}}, {'measurement': 'upstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 22800000, 'power': 51.0}, 'tags': {'channel_id': 3}}, {'measurement': 'upstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 16400000, 'power': 51.0}, 'tags': {'channel_id': 4}}, {'measurement': 'upstream_statistics', 'time': '2020-11-09T01:26:23Z', 'fields': {'frequency': 39600000, 'power': 51.0}, 'tags': {'channel_id': 5}}]
2020-11-09 01:26:23,190 INFO Sleeping for 600 seconds
2020-11-09 01:36:23,290 INFO Obtaining login session from modem
2020-11-09 01:36:23,290 DEBUG auth_url: https://192.168.100.1/cmconnectionstatus.html?YWRtaW46ODU2MDI5NTA=
2020-11-09 01:36:23,291 DEBUG Requesting logout page to flush sessions
2020-11-09 01:36:23,292 DEBUG Starting new HTTPS connection (1): 192.168.100.1:443
2020-11-09 01:36:23,318 DEBUG https://192.168.100.1:443 "GET /logout.htm HTTP/1.1" 200 None
2020-11-09 01:36:23,358 DEBUG Logout response code: 200
2020-11-09 01:36:23,358 DEBUG Logout response text:
2020-11-09 01:36:23,360 DEBUG Starting new HTTPS connection (1): 192.168.100.1:443
2020-11-09 01:36:23,407 DEBUG https://192.168.100.1:443 "GET /cmconnectionstatus.html?YWRtaW46ODU2MDI5NTA= HTTP/1.1" 200 None
2020-11-09 01:36:23,448 DEBUG Auth request status code: 200
2020-11-09 01:36:23,448 DEBUG Auth request text: <!DOCTYPE html>
<html>
<head>
<title>Login</title>
<script src="jquery-1.7.1.min.js"></script>
<script src="json2.js"></script>
<script src="main_arris.js"></script>
<script src="jquery-2.0.3.min.js"></script>
$(document).ready(function(){
$("#htmlheader").load("htmlheader.htm");
});
</script>
</head>
<body>
<div id="htmlheader"></div>
<div class="header">
$(document).ready(function(){
$("#pageheaderA").load("pageheaderA.htm");
});
</script>
<div id="binnacleWrapper1" class="binnacleItems_hide" style="display:none;">
<div id="binnacleWrapper2" class="binnacleItems_hide" style="display:none;">
<div id="binnacleWrapperLeft"><img src="px1_Ux.png" alt="" class="binnacleWrapperShim"></div>
<div id="binnacleWrapperRight"><img src="px1_Ux.png" alt="" class="binnacleWrapperShim"></div>
<div id="binnacleWrapperMiddle">
<div id="binnacleInnards">
<div id="binnacleIndicatorWrap"></div>
<div id="binnacleModelName">
<span id="thisModelNumberIs">
<label id="model">SB8200</label></span></div>
</div>
</div>
</div>
</div>
<div id="pageheaderA"></div>
<div class="container">
<div class="subHeader">
<div class="subHeadcontent">Login</div>
</div>
<form action="">
<br>
<b>Username:</b><br>
<input type="text" id="username" onkeypress="return checkForActivate(event)">
<br>
<br>
<b>Password:</b><br>
<input type="password" id="password" onkeypress="return checkForActivate(event)">
<br>
<br>
<input type="button" id="loginButton" onclick="validate(this.form)" value="Login">
</form>
</div>
<div class="spacer40" style="text-align: center; color: red; font-weight: bold;"></div>
<div class="spacer40"></div>
</div>
<!--gap<div id="bmtg"><div class="gap1"><div class="gap2"><div class="gap3"><div class="gap4"></div></div></div></div></div>-->
<div id="fg1"><div id="fg2"><div id="fg3"><div id="fg4"><div id="fg5"><div id="fg6"><div id="fg7">
<div id="logo_bottom"><a href="http://www.arris.com"><img src="px1_Ux.png" alt="ARRIS" title="ARRIS" class="logo_bottom"></a></div>
<div id="copyright">
<a href="http://www.arris.com">©2019 ARRIS International plc. All rights reserved.</a>
</div>
</div></div></div></div></div></div></div>
<!--/div-->
<script type='text/javascript'>
function authenticateUser(user, password)
{
var token = user + ":" + password;
// Base64 Encoding -> btoa
var hash = btoa(token);
var auth = hash;
sessionStorage.setItem('user', user);
return auth;
}
function validate( form )
{
$(".spacer40")[0].innerHTML = "";
var auth = authenticateUser(form.username.value, form.password.value);
localStorage.setItem('username', form.username.value);
eraseCookie("credential");
$.ajax({
type: 'GET',
url:"/cmconnectionstatus.html?" + auth,
contentType: 'application/x-www-form-urlencoded; charset=utf-8',
xhrFields: {
withCredentials: true
},
headers: {
'Authorization': 'Basic ' + auth
},
success: function (result) {
var token = result;
createCookie("credential", result);
window.location.href = "/cmconnectionstatus.html";
},
error: function (req, status, error) {
alert(error);
}
});
}
function checkForActivate( e )
{
if( e.keyCode == 13 )
{
document.getElementById("loginButton").click();
}
return true;
}
</script>
<!--/div-->
</body>
</html>
2020-11-09 01:36:23,448 ERROR Authentication error, received login page. Check username / password.
2020-11-09 01:36:23,448 INFO Obtaining login session from modem
2020-11-09 01:36:23,448 DEBUG auth_url: https://192.168.100.1/cmconnectionstatus.html?YWRtaW46ODU2MDI5NTA=
2020-11-09 01:36:23,448 DEBUG Requesting logout page to flush sessions
2020-11-09 01:36:23,449 DEBUG Starting new HTTPS connection (1): 192.168.100.1:443
2020-11-09 01:36:23,473 DEBUG https://192.168.100.1:443 "GET /logout.htm HTTP/1.1" 200 None
2020-11-09 01:36:23,514 DEBUG Logout response code: 200
2020-11-09 01:36:23,514 DEBUG Logout response text:
2020-11-09 01:36:23,515 DEBUG Starting new HTTPS connection (1): 192.168.100.1:443
2020-11-09 01:36:23,568 DEBUG https://192.168.100.1:443 "GET /cmconnectionstatus.html?YWRtaW46ODU2MDI5NTA= HTTP/1.1" 200 None
2020-11-09 01:36:23,609 DEBUG Auth request status code: 200
2020-11-09 01:36:23,609 DEBUG Auth request text: J09z8TbOxyfIH4Z1vGRs6JtkWjkWPbl
2020-11-09 01:36:23,609 INFO Retreiving stats from https://192.168.100.1/cmconnectionstatus.html
2020-11-09 01:36:23,610 DEBUG Starting new HTTPS connection (1): 192.168.100.1:443
2020-11-09 01:36:29,663 DEBUG https://192.168.100.1:443 "GET /cmconnectionstatus.html HTTP/1.1" 200 None
2020-11-09 01:36:29,994 INFO Parsing HTML for modem model sb8200
2020-11-09 01:36:30,035 DEBUG downstream stats: [{'channel_id': '2', 'frequency': '483000000', 'power': '0.3', 'snr': '42.3', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '3', 'frequency': '489000000', 'power': '0.2', 'snr': '42.2', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '4', 'frequency': '495000000', 'power': '0.5', 'snr': '42.2', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '5', 'frequency': '501000000', 'power': '0.2', 'snr': '42.1', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '6', 'frequency': '507000000', 'power': '0.5', 'snr': '42.2', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '7', 'frequency': '513000000', 'power': '0.4', 'snr': '42.1', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '8', 'frequency': '519000000', 'power': '0.3', 'snr': '41.7', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '9', 'frequency': '525000000', 'power': '0.3', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '10', 'frequency': '531000000', 'power': '0.5', 'snr': '42.1', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '11', 'frequency': '537000000', 'power': '0.5', 'snr': '42.1', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '12', 'frequency': '543000000', 'power': '0.7', 'snr': '42.1', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '13', 'frequency': '555000000', 'power': '0.3', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '14', 'frequency': '561000000', 'power': '-0.1', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '15', 'frequency': '567000000', 'power': '-0.3', 'snr': '41.7', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '16', 'frequency': '573000000', 'power': '-0.3', 'snr': '41.4', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '17', 'frequency': '579000000', 'power': '0.9', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '18', 'frequency': '585000000', 'power': '1.0', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '19', 'frequency': '591000000', 'power': '1.5', 'snr': '42.1', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '20', 'frequency': '597000000', 'power': '1.2', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '21', 'frequency': '603000000', 'power': '1.5', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '22', 'frequency': '609000000', 'power': '1.6', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '23', 'frequency': '615000000', 'power': '1.1', 'snr': '41.8', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '24', 'frequency': '621000000', 'power': '1.5', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '25', 'frequency': '627000000', 'power': '1.5', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '26', 'frequency': '633000000', 'power': '1.3', 'snr': '41.9', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '27', 'frequency': '639000000', 'power': '1.8', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '28', 'frequency': '645000000', 'power': '2.1', 'snr': '42.2', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '29', 'frequency': '651000000', 'power': '2.1', 'snr': '42.1', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '30', 'frequency': '657000000', 'power': '2.1', 'snr': '42.0', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '31', 'frequency': '663000000', 'power': '1.7', 'snr': '41.8', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '32', 'frequency': '669000000', 'power': '1.4', 'snr': '41.8', 'corrected': '0', 'uncorrectables': '0'}, {'channel_id': '37', 'frequency': '690000000', 'power': '1.8', 'snr': '40.2', 'corrected': '3907584076', 'uncorrectables': '0'}]
2020-11-09 01:36:30,037 DEBUG upstream stats: [{'channel_id': '1', 'frequency': '35600000', 'power': '51.0'}, {'channel_id': '2', 'frequency': '29200000', 'power': '51.0'}, {'channel_id': '3', 'frequency': '22800000', 'power': '51.0'}, {'channel_id': '4', 'frequency': '16400000', 'power': '51.0'}, {'channel_id': '5', 'frequency': '39600000', 'power': '51.0'}]
2020-11-09 01:36:30,037 INFO Sending stats to InfluxDB (unraid.home:8086)
2020-11-09 01:36:30,047 DEBUG Starting new HTTP connection (1): unraid.home:8086
2020-11-09 01:36:30,058 DEBUG http://unraid.home:8086 "POST /write?db=cable_modem_stats HTTP/1.1" 204 0
2020-11-09 01:36:30,058 INFO Successfully wrote data to InfluxDB
2020-11-09 01:36:30,058 DEBUG Influx series sent to db:
2020-11-09 01:36:30,058 DEBUG [{'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 483000000, 'power': 0.3, 'snr': 42.3, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 2}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 489000000, 'power': 0.2, 'snr': 42.2, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 3}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 495000000, 'power': 0.5, 'snr': 42.2, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 4}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 501000000, 'power': 0.2, 'snr': 42.1, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 5}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 507000000, 'power': 0.5, 'snr': 42.2, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 6}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 513000000, 'power': 0.4, 'snr': 42.1, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 7}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 519000000, 'power': 0.3, 'snr': 41.7, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 8}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 525000000, 'power': 0.3, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 9}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 531000000, 'power': 0.5, 'snr': 42.1, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 10}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 537000000, 'power': 0.5, 'snr': 42.1, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 11}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 543000000, 'power': 0.7, 'snr': 42.1, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 12}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 555000000, 'power': 0.3, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 13}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 561000000, 'power': -0.1, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 14}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 567000000, 'power': -0.3, 'snr': 41.7, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 15}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 573000000, 'power': -0.3, 'snr': 41.4, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 16}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 579000000, 'power': 0.9, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 17}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 585000000, 'power': 1.0, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 18}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 591000000, 'power': 1.5, 'snr': 42.1, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 19}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 597000000, 'power': 1.2, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 20}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 603000000, 'power': 1.5, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 21}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 609000000, 'power': 1.6, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 22}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 615000000, 'power': 1.1, 'snr': 41.8, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 23}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 621000000, 'power': 1.5, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 24}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 627000000, 'power': 1.5, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 25}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 633000000, 'power': 1.3, 'snr': 41.9, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 26}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 639000000, 'power': 1.8, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 27}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 645000000, 'power': 2.1, 'snr': 42.2, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 28}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 651000000, 'power': 2.1, 'snr': 42.1, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 29}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 657000000, 'power': 2.1, 'snr': 42.0, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 30}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 663000000, 'power': 1.7, 'snr': 41.8, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 31}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 669000000, 'power': 1.4, 'snr': 41.8, 'corrected': 0, 'uncorrectables': 0}, 'tags': {'channel_id': 32}}, {'measurement': 'downstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 690000000, 'power': 1.8, 'snr': 40.2, 'corrected': 3907584076, 'uncorrectables': 0}, 'tags': {'channel_id': 37}}, {'measurement': 'upstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 35600000, 'power': 51.0}, 'tags': {'channel_id': 1}}, {'measurement': 'upstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 29200000, 'power': 51.0}, 'tags': {'channel_id': 2}}, {'measurement': 'upstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 22800000, 'power': 51.0}, 'tags': {'channel_id': 3}}, {'measurement': 'upstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 16400000, 'power': 51.0}, 'tags': {'channel_id': 4}}, {'measurement': 'upstream_statistics', 'time': '2020-11-09T01:36:30Z', 'fields': {'frequency': 39600000, 'power': 51.0}, 'tags': {'channel_id': 5}}]
2020-11-09 01:36:30,059 INFO Sleeping for 600 seconds
Is it still working for you? Mine can only do about 5 iterations when obtaining a new token on every iteration, then it gets locked out.
Yea, on second thought, looks like I am seeing the same. It worked for 5 runs and then died again. This time if I restart the docker container, it doesn't magically work again, it's blocked instead. Logging in manually also doesn't work any longer, so its employing some lockout mechanism. I'm not home where I can reset the modem, so will have to wait a few hours to manually reset the modem and try again.
Any more luck on getting this to work right?
@bdf0506 unfortunately not. It works fine for me with refresh_token = false (after rebooting the modem and then restarting the container), with a 5 minute interval. I do believe there is a way to make it work with refresh_token = true, because once my modem would not let me authenticate, but I still had a valid token in my browser that was working, and upon clicking logout the script was able to properly authenticate again. So if the proper sequence of logging out can be replicated in the script, I think refresh_token = true will work and hopefully it will work for your modem/script.
Kind of random but I noticed that in mdonoughe/modem_status, it's noted that there's some kind of resource exhaustion happening in the router firmware and logging out fixes it.
@andrewfraley it's been a couple of weeks on this one. Any new progress/updates?
@bdf0506 Sorry I've given up on this for now, but may get back to it at some point. If someone wants to try to tackle this, these are the unknowns:
I believe there are issues going on with the modem firmware that are either bugs or explicit security obfuscations. After a certain number of logins, the modem will not allow new logins. If you have a valid existing session, you may be able to log out which will then let another new session work. The results of my testing have been wildly inconsistent and I will have to do some more rigorous data collection to try to drawn some more accurate conclusions about what's happening on the modem side.
Professionally I do a lot of API integrations and sometimes end up doing this kind of reverse engineering, and I will say that this is the strangest behavior of this sort I've ever seen.
Just updated my setup with this latest code after loosing my data after an update a few months ago. I'm going on a few hours now of polling every 5 minutes with no issues. Maybe the 5 run issue is related to specific firmware versions? I've added my data below for reference. Will keep an eye if things die.
Provider Altice (Optimum) Hardware Version: 6 Firmware Version: AB01.01.009.47_043020_183.0A.NSH
Just updated my setup with this latest code after loosing my data after an update a few months ago. I'm going on a few hours now of polling every 5 minutes with no issues. Maybe the 5 run issue is related to specific firmware versions? I've added my data below for reference. Will keep an eye if things die.
Provider Altice (Optimum) Hardware Version: 6 Firmware Version: AB01.01.009.47_043020_183.0A.NSH
@jmoflhrc are you using the authentication piece of this? Not sure if Altice uses auth like Comcast does. Seems like @andrewfraley and I are both utilizing Comcast and running into the issues.
My firmware is AB01.01.009.51_080720_183.0A.NSH which looks to be from Aug of 2020, yours appears to be from April.
@bdf0506 yes I have to auth to get into my SB8200 after the firmware update and it's enabled in the config.
One week later modem stats still going strong Firmware Version: AB01.01.009.47_043020_183.0A.NSH
@jmoflhrc Thanks for the feedback! Are you using the master branch or the refresh_token branch?
@jmoflhrc Thanks for the feedback! Are you using the master branch or the refresh_token branch?
Currently I'm on the master branch.
Well my ISP updated my modem to AB01.01.009.51_080720_183.0A.NSH and now I'm in the same boat as the rest it seems. I'm able to poll the modem for a bit but at some point it bombs out.
2021-01-31 18:45:13,239 INFO Retreiving stats from https://192.168.100.1/cmconnectionstatus.html 2021-01-31 18:45:13,334 ERROR Authentication error, received login page. Check username / password. 2021-01-31 18:45:13,335 ERROR No HTML to parse, giving up until next interval 2021-01-31 18:45:13,335 INFO Sleeping for 300 seconds
Curious if anyone has had any luck getting this to work lately?
Curious if anyone has had any luck getting this to work lately?
Yes. It's currently in use and working for me.
Yes. It's currently in use and working for me.
Can you confirm a couple of things:
Thanks!
Can you confirm a couple of things:
1. Who is your cable provider?
Cox Communications
2. Is authentication required on your modem?
Yes.
3. Which branch are you using?
master
4. What firmware version is loaded on your modem?
AB01.01.009.51_080720_183.0A.NSH
For me the only way I can get this to work is to log into the modem on my PC via web browser then start the docker container. It will keep working until the modem reboots.
Current details: Altice Auth Required (Yes) Master Branch AB01.01.009.51_080720_183.0A.NSH
For me the only way I can get this to work is to log into the modem on my PC via web browser then start the docker container. It will keep working until the modem reboots.
Current details: Altice Auth Required (Yes) Master Branch AB01.01.009.51_080720_183.0A.NSH
Interesting approach, where you are logged in via web browser and then you start the docker container. Tried that, but it seems to give me the same headache, where it works for a run or two and then dies. My modem is running a slightly newer firmware than yours though.
For me the only way I can get this to work is to log into the modem on my PC via web browser then start the docker container. It will keep working until the modem reboots. Current details: Altice Auth Required (Yes) Master Branch AB01.01.009.51_080720_183.0A.NSH
Interesting approach, where you are logged in via web browser and then you start the docker container. Tried that, but it seems to give me the same headache, where it works for a run or two and then dies. My modem is running a slightly newer firmware than yours though.
- Comcast
- Auth Required (yes)
- Master branch
- AB01.02.053.01_112320_193.0A.NSH
- HW version 6
So yeah I log into the modem via chrome, get through the signon then restart the docker container. after that I can kill the chrome session and things seem to stay happy until router or modem reboot.
So yeah I log into the modem via chrome, get through the signon then restart the docker container. after that I can kill the chrome session and things seem to stay happy until router or modem reboot.
With the chrome session, are you logging out as well? Or simply login via chrome, restart docker and then close the tab?
So yeah I log into the modem via chrome, get through the signon then restart the docker container. after that I can kill the chrome session and things seem to stay happy until router or modem reboot.
With the chrome session, are you logging out as well? Or simply login via chrome, restart docker and then close the tab?
Nope, not logging out. All I do is close the tab after I restart the docker container.
So yeah I log into the modem via chrome, get through the signon then restart the docker container. after that I can kill the chrome session and things seem to stay happy until router or modem reboot.
With the chrome session, are you logging out as well? Or simply login via chrome, restart docker and then close the tab?
Nope, not logging out. All I do is close the tab after I restart the docker container.
Thanks @jmoflhrc but unfortunately, this does not work for me. I was also thinking that perhaps there was some logic that using the default password (last 8 of the serial number) would be causing an issue, I also changed the password to something else. Still no dice. But as mentioned a few comments above, I am running a FW version that is a little later than yours.
It will work for the first run, and then these are the errors that I wind up getting.
2021-03-21 12:44:09,553 INFO Retreiving stats from https://192.168.100.1/cmconnectionstatus.html
2021-03-21 12:44:09,554 DEBUG Starting new HTTPS connection (1): 192.168.100.1:443
2021-03-21 12:44:09,590 DEBUG https://192.168.100.1:443 "GET /cmconnectionstatus.html HTTP/1.1" 200 None
2021-03-21 12:44:09,631 ERROR Authentication error, received login page. Check username / password.
2021-03-21 12:44:09,631 ERROR No HTML to parse, giving up until next interval
2021-03-21 12:44:09,631 INFO Sleeping for 600 seconds
Ok, I may be on to something. I’ve had the sleep interval set to 600 seconds and it seems like there is some edge condition with that interval. If I set the sleep to 590 or less all works. If I set it to 600, things die after the first data collection. I wonder if there is a timeout in the firmware of some weird sort. Would be curious if others could try setting their sleep to 600 and see what happens.
Ok, I may be on to something. I’ve had the sleep interval set to 600 seconds and it seems like there is some edge condition with that interval. If I set the sleep to 590 or less all works. If I set it to 600, things die after the first data collection. I wonder if there is a timeout in the firmware of some weird sort. Would be curious if others could try setting their sleep to 600 and see what happens.
You may be on to something there... Mine has always been set to 300 seconds.
I've added many new config options to better handle retries and preserving sessions. The relevant ones are:
Seems to be working pretty well for me now. When the credentials expire it gets new ones, and if I hammer the modem enough so that it can't authenticate anymore, eventually the sessions will expire and it can authenticate again. So if you're running in a container make sure you have all the exiton* set to true, then have the container --restart unless-stopped
, and now you should be able to set it and forget it.
Closing this as I think it's working pretty reliably now. Feel free to open a new issue if there are still problems.
Nice work on adding auth to this script, but I'm not having much luck. It works for exactly one cycle and then it dies. Not sure if this is something with the behavior of the modem not allowing auth so frequently, or something in this code.
I'm running this in a docker container, and i've enabled debug and this is what I see. I wonder if there needs to be some behavior changed in the auth code.