Add login parms for tools/decode-status.py

This commit is contained in:
Norbert Richter 2018-09-14 16:39:06 +02:00
parent 694718455e
commit 15fb7307fc
1 changed files with 12 additions and 3 deletions

View File

@ -28,12 +28,13 @@ Instructions:
and store it in file status.json
Usage:
./decode-status.py -d <hostname or IP address>
./decode-status.py -d <hostname or IP address> [-u username] [-p password]
or
./decode-status.py -f <JSON status information file>
Example:
./decode-status.py -d sonoff1
./decode-status.py -d sonoff1 -p 12345678
or
./decode-status.py -f status.json
"""
@ -42,6 +43,7 @@ import io
import os.path
import json
import pycurl
import urllib2
from sys import exit
from optparse import OptionParser
from StringIO import StringIO
@ -136,13 +138,20 @@ usage = "usage: decode-status {-d | -f} arg"
parser = OptionParser(usage)
parser.add_option("-d", "--dev", action="store", type="string",
dest="device", help="device to retrieve status from")
parser.add_option("-u", "--username", action="store", type="string",
dest="username", help="username for login", default="admin")
parser.add_option("-p", "--password", action="store", type="string",
dest="password", help="password for login", default=None)
parser.add_option("-f", "--file", metavar="FILE",
dest="jsonfile", default="status.json", help="status json file (default: status.json)")
(options, args) = parser.parse_args()
if (options.device):
buffer = StringIO()
url = str("http://{}/cm?cmnd=status%200".format(options.device))
loginstr = ""
if options.password is not None:
loginstr = "user={}&password={}&".format(urllib2.quote(options.username), urllib2.quote(options.password))
url = str("http://{}/cm?{}cmnd=status%200".format(options.device, loginstr))
c = pycurl.Curl()
c.setopt(c.URL, url)
c.setopt(c.WRITEDATA, buffer)
@ -217,4 +226,4 @@ if __name__ == "__main__":
try:
StartDecode()
except Exception as e:
print("E: {}".format(e))
print("E: {}".format(e))