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 {
@@ -69,18 +80,23 @@ func guestInstallAction(cmd *cobra.Command, args []string) error {
69
80
if err != nil {
70
81
return err
71
82
}
72
- tmp := "/tmp/lima-guestagent"
83
+ tmpname := "lima-guestagent"
84
+ tmp , err := shell (sshExe , sshFlags , hostname , "mktemp" , "-t" , "lima-guestagent.XXXXXX" )
85
+ if err != nil {
86
+ return err
87
+ }
73
88
bin := prefix + "/bin/lima-guestagent"
74
- logrus .Infof ("Copying %q to %s" , guestAgentBinary , hostname )
89
+ logrus .Infof ("Copying %q to %s:%s " , guestAgentBinary , inst . Name , tmpname )
75
90
scpArgs := []string {guestAgentBinary , hostname + ":" + tmp }
76
91
if err := runCmd (scpExe , scpFlags , scpArgs ... ); err != nil {
77
92
return nil
78
93
}
79
- logrus .Infof ("Installing %s to %s" , tmp , bin )
94
+ logrus .Infof ("Installing %s to %s" , tmpname , bin )
80
95
sshArgs := []string {hostname , "sudo" , "install" , "-m" , "755" , tmp , bin }
81
96
if err := runCmd (sshExe , sshFlags , sshArgs ... ); err != nil {
82
97
return nil
83
98
}
99
+ _ , _ = shell (sshExe , sshFlags , hostname , "rm" , tmp )
84
100
85
101
// nerdctl-full.tgz
86
102
nerdctlFilename := cacheutil .NerdctlArchive (y )
@@ -89,17 +105,22 @@ func guestInstallAction(cmd *cobra.Command, args []string) error {
89
105
if err != nil {
90
106
return err
91
107
}
92
- tmp := "/tmp/nerdctl-full.tgz"
93
- logrus .Infof ("Copying %q to %s" , nerdctlFilename , hostname )
108
+ tmpname := "nerdctl-full.tgz"
109
+ tmp , err := shell (sshExe , sshFlags , hostname , "mktemp" , "-t" , "nerdctl-full.XXXXXX.tgz" )
110
+ if err != nil {
111
+ return err
112
+ }
113
+ logrus .Infof ("Copying %q to %s:%s" , nerdctlFilename , inst .Name , tmpname )
94
114
scpArgs := []string {nerdctlArchive , hostname + ":" + tmp }
95
115
if err := runCmd (scpExe , scpFlags , scpArgs ... ); err != nil {
96
116
return nil
97
117
}
98
- logrus .Infof ("Installing %s in %s" , tmp , prefix )
118
+ logrus .Infof ("Installing %s in %s" , tmpname , prefix )
99
119
sshArgs := []string {hostname , "sudo" , "tar" , "Cxzf" , prefix , tmp }
100
120
if err := runCmd (sshExe , sshFlags , sshArgs ... ); err != nil {
101
121
return nil
102
122
}
123
+ _ , _ = shell (sshExe , sshFlags , hostname , "rm" , tmp )
103
124
}
104
125
105
126
return nil
0 commit comments