Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
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()