1
1
package main
2
2
3
3
import (
4
+ "bytes"
4
5
"fmt"
5
6
"os"
6
7
"os/exec"
@@ -35,6 +36,16 @@ func runCmd(name string, flags []string, args ...string) error {
35
36
return cmd .Run ()
36
37
}
37
38
39
+ func shell (name string , flags []string , args ... string ) (string , error ) {
40
+ cmd := exec .Command (name , append (flags , args ... )... )
41
+ out , err := cmd .Output ()
42
+ if err != nil {
43
+ return "" , err
44
+ }
45
+ out = bytes .TrimSuffix (out , []byte {'\n' })
46
+ return string (out ), nil
47
+ }
48
+
38
49
func guestInstallAction (cmd * cobra.Command , args []string ) error {
39
50
instName := DefaultInstanceName
40
51
if len (args ) > 0 {
@@ -64,18 +75,23 @@ func guestInstallAction(cmd *cobra.Command, args []string) error {
64
75
if err != nil {
65
76
return err
66
77
}
67
- tmp := "/tmp/lima-guestagent"
78
+ tmpname := "lima-guestagent"
79
+ tmp , err := shell (sshExe , sshFlags , hostname , "mktemp" , "-t" , "lima-guestagent.XXXXXX" )
80
+ if err != nil {
81
+ return err
82
+ }
68
83
bin := prefix + "/bin/lima-guestagent"
69
- logrus .Infof ("Copying %q to %s" , guestAgentBinary , hostname )
84
+ logrus .Infof ("Copying %q to %s:%s " , guestAgentBinary , inst . Name , tmpname )
70
85
scpArgs := []string {guestAgentBinary , hostname + ":" + tmp }
71
86
if err := runCmd (scpExe , scpFlags , scpArgs ... ); err != nil {
72
87
return nil
73
88
}
74
- logrus .Infof ("Installing %s to %s" , tmp , bin )
89
+ logrus .Infof ("Installing %s to %s" , tmpname , bin )
75
90
sshArgs := []string {hostname , "sudo" , "install" , "-m" , "755" , tmp , bin }
76
91
if err := runCmd (sshExe , sshFlags , sshArgs ... ); err != nil {
77
92
return nil
78
93
}
94
+ _ , _ = shell (sshExe , sshFlags , hostname , "rm" , tmp )
79
95
80
96
// nerdctl-full.tgz
81
97
nerdctlFilename := cacheutil .NerdctlArchive (inst .Config )
@@ -84,17 +100,22 @@ func guestInstallAction(cmd *cobra.Command, args []string) error {
84
100
if err != nil {
85
101
return err
86
102
}
87
- tmp := "/tmp/nerdctl-full.tgz"
88
- logrus .Infof ("Copying %q to %s" , nerdctlFilename , hostname )
103
+ tmpname := "nerdctl-full.tgz"
104
+ tmp , err := shell (sshExe , sshFlags , hostname , "mktemp" , "-t" , "nerdctl-full.XXXXXX.tgz" )
105
+ if err != nil {
106
+ return err
107
+ }
108
+ logrus .Infof ("Copying %q to %s:%s" , nerdctlFilename , inst .Name , tmpname )
89
109
scpArgs := []string {nerdctlArchive , hostname + ":" + tmp }
90
110
if err := runCmd (scpExe , scpFlags , scpArgs ... ); err != nil {
91
111
return nil
92
112
}
93
- logrus .Infof ("Installing %s in %s" , tmp , prefix )
113
+ logrus .Infof ("Installing %s in %s" , tmpname , prefix )
94
114
sshArgs := []string {hostname , "sudo" , "tar" , "Cxzf" , prefix , tmp }
95
115
if err := runCmd (sshExe , sshFlags , sshArgs ... ); err != nil {
96
116
return nil
97
117
}
118
+ _ , _ = shell (sshExe , sshFlags , hostname , "rm" , tmp )
98
119
}
99
120
100
121
return nil
0 commit comments