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()
|
|
|