Python wrapper for running instances of trisurf-ng
Samo Penic
2017-01-20 52e871dbc7bf5b61003718cd3342b5ce5d882c6a
trisurf/Remote.py
@@ -1,5 +1,5 @@
import paramiko
import os.path
class Connection:
   def __init__(self, hostname, port=22, username=None, password=None):
@@ -20,23 +20,20 @@
   
   def connect(self, Timeout=5):
      if(not self.connected):
         try:
            print("Trying to connect to: "+self.username+"@"+self.hostname+":"+str(self.port)+".")
            self.ssh.connect(self.hostname, username=self.username, password=self.password, port=self.port, timeout=Timeout)
            self.connected=True
         except:
            print("Error establishing connection with "+self.username+"@"+self.hostname+":"+str(self.port)+".")
            exit(1)
#         try:
         print("Trying to connect to: "+self.username+"@"+self.hostname+":"+str(self.port)+".")
         self.ssh.connect(self.hostname, username=self.username, password=self.password, port=self.port, timeout=Timeout)
         self.connected=True
#         except:
#            print("Error establishing connection with "+self.username+"@"+self.hostname+":"+str(self.port)+".")
#            exit(1)
      else:
         print("Already connected!")
      return
   def disconnect(self):
      if(self.connected):
         try:
            self.ssh.close()
         except:
            print("Cannot disconect. Unknown error.")
         self.ssh.close()
      else:
         print("Cannot disconect. Already disconnected.")
      self.connected=False
@@ -55,18 +52,40 @@
         print("Cannot execute remote commands. Connect first.")
   def send_file(self, local, remote):
      sftp=self.ssh.open_sftp()
      sftp.put(local,remote)
      sftp.close()
      pass
#      sftp=self.ssh.open_sftp()
#      sftp.put(local,remote)
#      sftp.close()
   def receive_file(self,remote,local):
      sftp=self.ssh.open_sftp()
      sftp.get(remote,local)
      sftp.close()
      pass
#      sftp=self.ssh.open_sftp()
#      sftp.get(remote,local)
#      sftp.close()
   def mkdir_remote(self,directory):
      sftp=self.ssh.open_sftp()
      sftp.mkdir(directory)
      sftp.close()
   def mkdir_p(self,sftp, remote_directory):
      """Change to this directory, recursively making new folders if needed.
      Returns True if any folders were created. Recursive algorithm."""
      if remote_directory == '/':
         # absolute path so change directory to root
         sftp.chdir('/')
         return
      if remote_directory == '':
         # top-level relative directory must exist
         return
      try:
         sftp.chdir(remote_directory) # sub-directory exists
      except IOError:
         dirname, basename = os.path.split(remote_directory.rstrip('/'))
         self.mkdir_p(sftp, dirname) # make parent directories
         sftp.mkdir(basename) # sub-directory missing, so created it
         sftp.chdir(basename)
      return True
   
   def send_multiple_files_in_directory(self,local_files,directory):
      pass