import socket, time

devices = open("/tmp/devices.txt").read().strip().split("\n")
ok = 0
fail = 0
for line in devices[:100]:
    parts = line.split(":")
    if len(parts) < 4: continue
    ip, port, user, passwd = parts[0], int(parts[1]), parts[2], parts[3]
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(5)
        s.connect((ip, port))
        time.sleep(0.5)
        data = s.recv(4096).decode(errors="ignore")
        if "login" in data.lower():
            s.send((user+"\r\n").encode())
            time.sleep(0.5)
            data = s.recv(4096).decode(errors="ignore")
        if "password" in data.lower():
            s.send((passwd+"\r\n").encode())
            time.sleep(1)
            data = s.recv(4096).decode(errors="ignore")
        try: s.recv(65536)
        except: pass
        # Try to run a command
        s.send(b"echo TEST123\r\n")
        time.sleep(1)
        r = s.recv(4096).decode(errors="ignore")
        s.close()
        if "TEST123" in r:
            ok += 1
            open("/tmp/_canexec.txt","a").write(ip + "\n")
        else:
            fail += 1
    except:
        fail += 1
with open("/tmp/_exec_test.txt","w") as f:
    f.write("OK=" + str(ok) + " FAIL=" + str(fail) + "\n")
