def main(): if len(sys.argv) < 2: print("usage: wemoUploadExec <target ip address> <file> <parameters>") exit(1) targetIp = sys.argv[1] targetPort = 49153 sourceIp = getLocalIp(targetIp, targetPort) sourcePort = 8080 webApp = Bottle() webServer = BottleServer(webApp, sourceIp, sourcePort) run(targetIp, webServer) webServer.stop()
def main(): if len(sys.argv) < 2: print("usage: wemotool <target ip address>") exit(1) targetIp = sys.argv[1]; targetPort = 49153 sourceIp = getLocalIp(targetIp, targetPort); sourcePort = 8080 server = BottleServer(rootApp, sourceIp, sourcePort) retry = True while retry: retry = False wemoTelnet.run(targetIp, server) print("telnet ready on " + targetIp + ":23") tn = telnetlib.Telnet(targetIp, 23, timeout=1) tn.read_until("# ") fwversion = tnRegex(tn,"cat /etc/ver.txt","^(WeMo.*)$") print("fw version: "+fwversion) bootstate = tnRegex(tn, "uboot_env getenv bootstate", "^getenv : bootstate with ([0-9]).*$") print("bootstate: " + bootstate) check_boot = tnRegex(tn, "uboot_env getenv check_boot", "^getenv : check_boot with ([0-9]).*$") print("check_boot: " + check_boot) if bootstate=="0" or bootstate == "1": print("bootstate is "+bootstate+", running from slot 1") print("changing boot slot and rebooting") tnExec(tn,"uboot_env setenv bootstate 2") tnExec(tn,"uboot_env setenv check_boot 0") tn.write("reboot\n") print("waiting for wemo to reboot") while isOpen(targetIp,targetPort): sys.stdout.write(".") time.sleep(0.5) print("booting up...") while not isOpen(targetIp,targetPort): sys.stdout.write(".") time.sleep(0.5) print("wemo rebooted, starting over...") retry = True elif bootstate=="2" or bootstate == "3": print("bootstate is " + bootstate + ", running from slot 2") print("preparing firmware update") print tnExec(tn,"wget -O /tmp/image http://"+server.host+":"+str(server.port)+"/image") print("writing firmware update") print tnExec(tn,"fwupgrade image") bootstate = tnRegex(tn, "uboot_env getenv bootstate", "^getenv : bootstate with ([0-9]).*$") print("bootstate: " + bootstate) check_boot = tnRegex(tn, "uboot_env getenv check_boot", "^getenv : check_boot with ([0-9]).*$") print("check_boot: " + check_boot) print("rebooting") time.sleep(2) tn.write("reboot\n") time.sleep(2) tn.close() print("telnet closed") server.stop()