Commit ce7067c7 authored by Raphael Defosseux's avatar Raphael Defosseux

CI: fixing scp timeout failure like the ssh session timeout failure

Signed-off-by: default avatarRaphael Defosseux <raphael.defosseux@eurecom.fr>
parent a975014b
...@@ -203,59 +203,81 @@ class SSHConnection(): ...@@ -203,59 +203,81 @@ class SSHConnection():
logging.debug('\u001B[1;37;41m Unexpected Others during closing\u001B[0m') logging.debug('\u001B[1;37;41m Unexpected Others during closing\u001B[0m')
def copyin(self, ipaddress, username, password, source, destination): def copyin(self, ipaddress, username, password, source, destination):
count = 0
copy_status = False
logging.debug('scp '+ username + '@' + ipaddress + ':' + source + ' ' + destination) logging.debug('scp '+ username + '@' + ipaddress + ':' + source + ' ' + destination)
scp_spawn = pexpect.spawn('scp '+ username + '@' + ipaddress + ':' + source + ' ' + destination, timeout = 5) while count < 4:
scp_response = scp_spawn.expect(['Are you sure you want to continue connecting (yes/no)?', 'password:', pexpect.EOF, pexpect.TIMEOUT]) scp_spawn = pexpect.spawn('scp '+ username + '@' + ipaddress + ':' + source + ' ' + destination, timeout = 5)
if scp_response == 0: scp_response = scp_spawn.expect(['Are you sure you want to continue connecting (yes/no)?', 'password:', pexpect.EOF, pexpect.TIMEOUT])
scp_spawn.sendline('yes')
scp_spawn.expect('password:')
scp_spawn.sendline(password)
scp_response = scp_spawn.expect(['\$', 'Permission denied', 'password:', pexpect.EOF, pexpect.TIMEOUT])
if scp_response == 0: if scp_response == 0:
pass scp_spawn.sendline('yes')
else: scp_spawn.expect('password:')
logging.debug('1 - scp_response = ' + str(scp_response)) scp_spawn.sendline(password)
sys.exit('SCP failed') scp_response = scp_spawn.expect(['\$', 'Permission denied', 'password:', pexpect.EOF, pexpect.TIMEOUT])
elif scp_response == 1: if scp_response == 0:
scp_spawn.sendline(password) count = 10
scp_response = scp_spawn.expect(['\$', 'Permission denied', 'password:', pexpect.EOF, pexpect.TIMEOUT]) copy_status = True
if scp_response == 0 or scp_response == 3: else:
pass logging.debug('1 - scp_response = ' + str(scp_response))
elif scp_response == 1:
scp_spawn.sendline(password)
scp_response = scp_spawn.expect(['\$', 'Permission denied', 'password:', pexpect.EOF, pexpect.TIMEOUT])
if scp_response == 0 or scp_response == 3:
count = 10
copy_status = True
else:
logging.debug('2 - scp_response = ' + str(scp_response))
elif scp_response == 2:
count = 10
copy_status = True
else: else:
logging.debug('2 - scp_response = ' + str(scp_response)) logging.debug('3 - scp_response = ' + str(scp_response))
sys.exit('SCP failed') # adding a tempo when failure
elif scp_response == 2: if not copy_status:
time.sleep(1)
count += 1
if copy_status:
pass pass
else: else:
logging.debug('3 - scp_response = ' + str(scp_response))
sys.exit('SCP failed') sys.exit('SCP failed')
def copyout(self, ipaddress, username, password, source, destination): def copyout(self, ipaddress, username, password, source, destination):
count = 0
copy_status = False
logging.debug('scp ' + source + ' ' + username + '@' + ipaddress + ':' + destination) logging.debug('scp ' + source + ' ' + username + '@' + ipaddress + ':' + destination)
scp_spawn = pexpect.spawn('scp ' + source + ' ' + username + '@' + ipaddress + ':' + destination, timeout = 5) while count < 4:
scp_response = scp_spawn.expect(['Are you sure you want to continue connecting (yes/no)?', 'password:', pexpect.EOF, pexpect.TIMEOUT]) scp_spawn = pexpect.spawn('scp ' + source + ' ' + username + '@' + ipaddress + ':' + destination, timeout = 5)
if scp_response == 0: scp_response = scp_spawn.expect(['Are you sure you want to continue connecting (yes/no)?', 'password:', pexpect.EOF, pexpect.TIMEOUT])
scp_spawn.sendline('yes')
scp_spawn.expect('password:')
scp_spawn.sendline(password)
scp_response = scp_spawn.expect(['\$', 'Permission denied', 'password:', pexpect.EOF, pexpect.TIMEOUT])
if scp_response == 0: if scp_response == 0:
pass scp_spawn.sendline('yes')
else: scp_spawn.expect('password:')
logging.debug('1 - scp_response = ' + str(scp_response)) scp_spawn.sendline(password)
sys.exit('SCP failed') scp_response = scp_spawn.expect(['\$', 'Permission denied', 'password:', pexpect.EOF, pexpect.TIMEOUT])
elif scp_response == 1: if scp_response == 0:
scp_spawn.sendline(password) count = 10
scp_response = scp_spawn.expect(['\$', 'Permission denied', 'password:', pexpect.EOF, pexpect.TIMEOUT]) copy_status = True
if scp_response == 0 or scp_response == 3: else:
pass logging.debug('1 - scp_response = ' + str(scp_response))
elif scp_response == 1:
scp_spawn.sendline(password)
scp_response = scp_spawn.expect(['\$', 'Permission denied', 'password:', pexpect.EOF, pexpect.TIMEOUT])
if scp_response == 0 or scp_response == 3:
count = 10
copy_status = True
else:
logging.debug('2 - scp_response = ' + str(scp_response))
elif scp_response == 2:
count = 10
copy_status = True
else: else:
logging.debug('2 - scp_response = ' + str(scp_response)) logging.debug('3 - scp_response = ' + str(scp_response))
sys.exit('SCP failed') # adding a tempo when failure
elif scp_response == 2: if not copy_status:
time.sleep(1)
count += 1
if copy_status:
pass pass
else: else:
logging.debug('3 - scp_response = ' + str(scp_response))
sys.exit('SCP failed') sys.exit('SCP failed')
def BuildeNB(self): def BuildeNB(self):
...@@ -2061,7 +2083,7 @@ class SSHConnection(): ...@@ -2061,7 +2083,7 @@ class SSHConnection():
def CreateHtmlTabFooter(self, passStatus): def CreateHtmlTabFooter(self, passStatus):
if ((not self.htmlFooterCreated) and (self.htmlHeaderCreated)): if ((not self.htmlFooterCreated) and (self.htmlHeaderCreated)):
self.htmlFile.write(' <tr">\n') self.htmlFile.write(' <tr>\n')
self.htmlFile.write(' <th bgcolor = "#33CCFF" colspan=2>Final Tab Status</th>\n') self.htmlFile.write(' <th bgcolor = "#33CCFF" colspan=2>Final Tab Status</th>\n')
if passStatus: if passStatus:
self.htmlFile.write(' <th bgcolor = "green" colspan=' + str(2 + self.htmlUEConnected) + '><font color="white">PASS <span class="glyphicon glyphicon-ok"></span> </font></th>\n') self.htmlFile.write(' <th bgcolor = "green" colspan=' + str(2 + self.htmlUEConnected) + '><font color="white">PASS <span class="glyphicon glyphicon-ok"></span> </font></th>\n')
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment