From 541c72849adaf0fb668252b7e4dc52808dd9daf4 Mon Sep 17 00:00:00 2001 From: Zexi Li Date: Mon, 18 May 2020 21:43:36 +0800 Subject: [PATCH] baremetal: fix ssh put empty content file not created --- pkg/hostman/guestfs/sshpart/sshpart.go | 31 +++++++++++++++----------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/pkg/hostman/guestfs/sshpart/sshpart.go b/pkg/hostman/guestfs/sshpart/sshpart.go index 8230ef09b0..369e58acd0 100644 --- a/pkg/hostman/guestfs/sshpart/sshpart.go +++ b/pkg/hostman/guestfs/sshpart/sshpart.go @@ -309,20 +309,25 @@ func (p *SSHPartition) sshFilePutContents(sPath, content string, modAppend bool) } cmds := []string{} - var chunkSize int = 8192 - for offset := 0; offset < len(content); offset += chunkSize { - end := offset + chunkSize - if end > len(content) { - end = len(content) - } - ll, err := stringutils.EscapeEchoString(content[offset:end]) - if err != nil { - return fmt.Errorf("EscapeEchoString %q error: %v", content[offset:end], err) - } - cmd := fmt.Sprintf(`echo -n -e "%s" %s %s`, ll, op, sPath) + if len(content) == 0 { + cmd := fmt.Sprintf(`echo -n -e "" %s %s`, op, sPath) cmds = append(cmds, cmd) - if op == ">" { - op = ">>" + } else { + var chunkSize int = 8192 + for offset := 0; offset < len(content); offset += chunkSize { + end := offset + chunkSize + if end > len(content) { + end = len(content) + } + ll, err := stringutils.EscapeEchoString(content[offset:end]) + if err != nil { + return fmt.Errorf("EscapeEchoString %q error: %v", content[offset:end], err) + } + cmd := fmt.Sprintf(`echo -n -e "%s" %s %s`, ll, op, sPath) + cmds = append(cmds, cmd) + if op == ">" { + op = ">>" + } } } _, err := p.term.Run(cmds...)