result=''
for char in command:
if char in "\\\"'<>&|;()$*~":
- result +='\\'+char
+ result += '\\'+char
else:
- result +=char
+ result += char
return result
# check main IP address against the provided hostname
return "%s@%s"%(self.username,self.hostname)
# command gets run on the right box
- def actual_command (self, command, keep_stdin=False, dry_run=False):
+ def actual_command (self, command, keep_stdin=False, dry_run=False,backslash=True):
if self.is_local():
return command
ssh_command = "ssh "
ssh_command += TestSsh.std_options
if self.unknown_host: ssh_command += TestSsh.unknown_option
ssh_command += self.key_part()
- ssh_command += "%s %s" %(self.hostname_part(),TestSsh.backslash_shell_specials(command))
+ ssh_command += self.hostname_part() + " "
+ if backslash:
+ ssh_command += TestSsh.backslash_shell_specials(command)
+ else:
+ ssh_command += command
return ssh_command
# same in argv form
def copy (self,local_file,recursive=False,dry_run=False):
if self.is_local():
return 0
- self.create_buildname_once()
+ self.create_buildname_once(dry_run)
scp_command="scp "
if not dry_run:
scp_command += TestSsh.std_options
def copy_home (self, local_file, recursive=False):
return self.copy_abs(local_file,os.path.basename(local_file),recursive)
- def fetch (self, remote_file, local_file, recursive=False):
+ def fetch (self, remote_file, local_file, recursive=False, dry_run=False):
if self.is_local():
command="cp "
if recursive: command += "-r "
command += "%s %s"%(remote_file,local_file)
else:
command="scp "
- command += TestSsh.std_options
+ if not dry_run:
+ command += TestSsh.std_options
if recursive: command += "-r "
command += self.key_part()
# absolute path - do not preprend buildname
remote_path=remote_file
else:
remote_path="%s/%s"%(self.buildname,remote_file)
+ remote_path=self.fullname(remote_path)
command += "%s:%s %s"%(self.hostname_part(),remote_path,local_file)
return utils.system(command)