From e4e4beac3ab7d35e446e2bdbd93c6d636a3814c3 Mon Sep 17 00:00:00 2001 From: david Date: Thu, 25 Jun 2009 10:38:35 +0200 Subject: [PATCH] add ssh transfer --- scripts/query_romsize.py | 123 ++++++++++++++++++++++++++------------- 1 file changed, 83 insertions(+), 40 deletions(-) diff --git a/scripts/query_romsize.py b/scripts/query_romsize.py index cdb700e..a49fc46 100644 --- a/scripts/query_romsize.py +++ b/scripts/query_romsize.py @@ -8,55 +8,98 @@ import stat import popen2 import glob import sys +import os import pprint +import base64 +import getpass +import os +import socket +import sys +import traceback +import paramiko + + from subprocess import Popen +paramiko.util.log_to_file('demo_sftp.log') -path = "/Users/david/Devel/arch/avr/code/snesram/roms/" - +if os.name == 'posix': + path = "/home/david/Devel/arch/avr/code/snesram/roms/" + username = "david" + hostname = "slap" +else: + path = "/Users/david/Devel/arch/avr/code/snesram/roms/" + username = "david" + hostname = "burst" def shellquote(s): return "'" + s.replace("'", "'\\''") + "'" def main(): - conn = sqlite3.connect('roms.sqlite3') - c = conn.cursor() - for i in [(4,),(8,),(16,),(32,)]: - dirname = os.path.join(path,"%02i" % i) - if not os.path.isdir(dirname): - os.mkdir(dirname) - print "#" * 60 - print "%i MBit" % i - print "#" * 60 - c.execute('''SELECT - rom_name, - rom_mb, - file_name - FROM - roms - WHERE - rom_mb = ? - AND - rom_hirom = 0 - AND - rom_sram = 0 - AND - rom_type = 0 - AND - rom_region like "Europe%" - ORDER BY file_name - ''',i) - for row in c: - name,size,filename = row - if '[' not in filename: - src = "david@burst:%s" % filename - command = ["scp",shellquote(src), dirname] - proc = Popen(command) - print dir(proc) - proc.communicate() - - raise ->>>>>>> b7b35800ccc7b48d24cfd4c3e025482e95e3fc72:scripts/query_romsize.py + + port = 22 + password = getpass.getpass('Password for %s@%s: ' % (username, hostname)) + hostkeytype = None + hostkey = None + host_keys = paramiko.util.load_host_keys(os.path.expanduser('~/.ssh/known_hosts')) + if host_keys.has_key(hostname): + hostkeytype = host_keys[hostname].keys()[0] + hostkey = host_keys[hostname][hostkeytype] + print 'Using host key of type %s' % hostkeytype + try: + print "Connect %s:%s" % (hostname, port) + t = paramiko.Transport((hostname, port)) + t.connect(username=username, password=password, hostkey=hostkey) + sftp = paramiko.SFTPClient.from_transport(t) + + # dirlist on remote host + dirlist = sftp.listdir('.') + print "Dirlist:", dirlist + + + conn = sqlite3.connect('roms.sqlite3') + c = conn.cursor() + for i in [(4,),(8,),(16,),(32,)]: + dirname = os.path.join(path,"%02i" % i) + if not os.path.isdir(dirname): + os.mkdir(dirname) + print "#" * 60 + print "%i MBit" % i + print "#" * 60 + c.execute('''SELECT + rom_name, + rom_mb, + file_name + FROM + roms + WHERE + rom_mb = ? + AND + rom_hirom = 0 + AND + rom_sram = 0 + AND + rom_type = 0 + AND + rom_region like "Europe%" + ORDER BY file_name + ''',i) + for row in c: + name,size,filename = row + filename_dst = os.path.join(dirname,os.path.basename(filename)) + print "Remote: %s -> %s" % ( filename,filename_dst) + data = open(filename, 'r').read() + open(filename_dst,"w").write(data) + + except Exception, e: + print '*** Caught exception: %s: %s' % (e.__class__, e) + traceback.print_exc() + try: + t.close() + except: + pass + sys.exit(1) + if __name__ == '__main__': main()