#!/usr/bin/python

# recursively copy a remote directory into a local directory.
# requires that the remote site support `uuencode -m'

# Usage:
#	telnet-cat.py <server> <login> <passwd> <remote-file/dir> <local-dir>

import sys, time, binascii, string
from expect import *

f = popen ("telnet %s" % (sys.argv[1],), "p")
f.read ("ogin:")
f.write (sys.argv[2] + "\n")
f.read ("word:")
time.sleep (0.1)
f.write (sys.argv[3] + "\n")
# possible prompts
f.read (("#", "$", ">"))
x = sys.argv[4]
while x[-1] == '/':
    x = x[:-1]
x = string.split (x, "/")
f.write ("cd /%s && tar -cpf - %s | uuencode -m %s\n" % (string.join (x[:-1], "/"), x[-1], sys.argv[4]))
while 1:
    l = f.read ('\n')
    if l[:6] == "begin-":
	break
g = popen ("cd %s && tar -xpf -" % (sys.argv[5]))
while 1:
    l = f.read ('\n')
    if l[:4] == "====":
	break;
    s = binascii.a2b_base64 (l)
    if type (s) == type (''):
	g.write (s)
# possible prompts
f.read (("#", "$", ">"))
f.write ("exit\n")
f.read ()

