Esempio n. 1
0
def main():
    """Scan for devices and print results."""
    netgear = Netgear(*sys.argv[1:])

    print(netgear.get_traffic_meter())

    devices = netgear.get_attached_devices()

    if devices is None:
        print("Error communicating with the Netgear router")

    else:
        for i in devices:
            print(i)
Esempio n. 2
0
def getlogdata(password=""):
    from pynetgear import Netgear
    import datetime

    # Instantiate the netgear api connection
    netgear = Netgear(password=password)

    # Open the log files - create if needed
    uploadlog = open("netgear_upload.log", "a+")
    downloadlog = open("netgear_download.log", "a+")

    # Look for the previous value from the file, if there isn't one then set it to zero
    uploadprev = uploadlog.readlines()
    if len(uploadprev) > 0:
        uploadprev = uploadprev[-1].split(",")[0]
    else:
        uploadprev = 0
    downloadprev = downloadlog.readlines()
    if len(downloadprev) > 0:
        downloadprev = downloadprev[-1].split(",")[0]
    else:
        downloadprev = 0

    # The previous value from the file will be a string, we need a float to do math with
    uploadprev = float(uploadprev)
    downloadprev = float(downloadprev)

    # Get the traffic meter data via the api
    traffic = netgear.get_traffic_meter()
    upload = traffic.get("NewTodayUpload")
    download = traffic.get("NewTodayDownload")

    # If the previous value is less than the current value, subtract it.  Otherwise it is either
    # - a new log run so don't subtract or
    # - it is a new day, so we will use yesterdays total to figure it out
    if upload >= uploadprev:
        uploadvalue = upload - uploadprev
    else:
        if uploadprev == 0:
            uploadvalue = upload
        else:
            uploadvalue = upload
            #The router doesn't log yesterday right, it seems to be less than prev
            #uploadvalue = (traffic.get("NewYesterdayUpload") - uploadprev) + upload
    if download >= downloadprev:
        downloadvalue = download - downloadprev
    else:
        if downloadprev == 0:
            downloadvalue = upload
        else:
            downloadvalue = upload
            #The router doesn't log yesterday right, it seems to be less than prev
            #downloadvalue = (traffic.get("NewYesterdayDownload") - uploadprev) + upload

    # Get the time and add the lines to the log files
    now = datetime.datetime.now()
    uploadlog.writelines("%f,%s,%f\n" % (upload, now, uploadvalue))
    downloadlog.writelines("%f,%s,%f\n" % (download, now, downloadvalue))

    # Close the log files
    uploadlog.close()
    downloadlog.close()

    #send the data to the google sheet for graphing
    output_to_gsheet([[str(now), downloadvalue, uploadvalue]])
Esempio n. 3
0
    print("Waiting for 1 hour before starting again.")
    threading.Timer(3600, logs_start).start()


print("Logging into Netgear.")
netgear = Netgear(password=data['router-password'],
                  host=data['host-ip'],
                  port=data['port'])
# print(netgear.get_traffic_meter())
print("Logged in...")

print("Getting attached devices...")
devices = netgear.get_attached_devices()
print("Done.")
print("Getting traffic meter...")
traffic = netgear.get_traffic_meter()
print("Done.")
print("Writing to logs...")

print('Setting up logs...')
with open('data.csv', 'a+') as csvfile:
    writer = csv.writer(csvfile)
    row = [
        'Date', 'Time', 'Usage (MB)', 'Today Upload (MB)',
        'Today Download (MB)'
    ]
    for device in devices:
        row.append(device.name)
    writer.writerow(row)
print('Done')