Trisurf Monte Carlo simulator
Samo Penic
2016-07-09 eb706bf094cb94104536cd1bb827828db672df5d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import paramiko
 
 
 
class Connection:
    def __init__(self, hostname, port=22, username=None, password=None):
        self.hostname=hostname
        self.port=port
        if(username!=None):
            self.username=username
        else:
            self.username=''
        if(password!=None):
            self.password=password
        else:
            self.password=''
        self.ssh=paramiko.SSHClient()
        self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        self.connected=False
        return
    
    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)
        else:
            print("Already connected!")
        return
 
    def disconnect(self):
        if(self.connected):
            try:
                self.ssh.close()
            except:
                print("Cannot disconect. Unknown error.")
        else:
            print("Cannot disconect. Already disconnected.")
        self.connected=False
 
    def execute(self,command):
        if(self.connected):
            try:
                stdin,stdout,stderr=self.ssh.exec_command(command)
                output=stdout.readlines()
                errors=stderr.readlines()
            #    print(errors)
                return(output)
            except:
                print("Cannot execute remote commands")
        else:
            print("Cannot execute remote commands. Connect first.")
 
    def send_file(self, local, remote):
        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()
 
    def mkdir_remote(self,directory):
        sftp=self.ssh.open_sftp()
        sftp.mkdir(directory)
        sftp.close()