import socket, time
def connect(ip):
    s = socket.create_connection((ip, 6379), 5); s.settimeout(6)
    def cmd(*a):
        p = b'*%d\r\n' % len(a)
        for x in a:
            x = x.encode() if isinstance(x, str) else x
            p += b'$%d\r\n%s\r\n' % (len(x), x)
        s.sendall(p); time.sleep(0.5)
        o = b''
        try:
            while True:
                d = s.recv(65536)
                if not d: break
                o += d
                if len(d) < 65536: break
        except socket.timeout: pass
        return o.decode(errors='replace')
    return s, cmd
s, cmd = connect('10.24.60.46')
info = cmd('INFO', 'replication')
print('=== INFO replication ===')
print(info[:600])
print('=== MIGRATE probes (egress oracle) ===')
for host, port in [('10.24.18.64', '6389'), ('10.24.18.64', '443'), ('10.24.60.30', '5432'), ('10.24.8.82', '6379')]:
    t0 = time.time()
    r = cmd('MIGRATE', host, port, '', '0', '2500')
    print('%s:%s -> %.2fs %s' % (host, port, time.time() - t0, r.strip()[:100].replace('\r\n', ' ')))
s.close()
