Source code for issm.issmscpout

from socket  import gethostname
import subprocess
import os
import MatlabFuncs as m

[docs]def issmscpout(host,path,login,port,packages): """ ISSMSCPOUT send packages to a host, using scp on unix, and pscp on windows usage: issmscpout(host,path,packages) """ #get hostname hostname=gethostname(); #if hostname and host are the same, do a simple copy if m.strcmpi(host,hostname): for package in packages: here=os.getcwd() os.chdir(path) try: os.remove(package) except OSError as e: pass subprocess.call('ln -s %s %s' % (os.path.join(here,package),path),shell=True) os.chdir(here) else: if m.ispc(): #use the putty project pscp.exe: it should be in the path. #get ISSM_DIR variable if 'ISSM_DIR_WIN' in os.environ: ISSM_DIR=os.environ['ISSM_DIR_WIN'][1:-2] else: raise OSError("issmscpout error message: could not find ISSM_DIR_WIN environment variable.") username=raw_input('Username: (quoted string) ') key=raw_input('Key: (quoted string) ') for package in packages: try: subprocess.check_call('%s/externalpackages/ssh/pscp.exe -l "%s" -pw "%s" %s %s:%s' % (ISSM_DIR,username,key,package,host,path),shell=True) except CalledProcessError as e: raise CalledProcessError("issmscpout error message: could not call putty pscp.") else: #just use standard unix scp #create string of packages being sent string='' for package in packages: string+=' '+package string+=' ' if port: subprocess.call('scp -P %d %s %s@localhost:%s' % (port,string,login,path),shell=True) else: subprocess.call('scp %s %s@%s:%s' % (string,login,host,path),shell=True)