hosts: mostly implement Host.Run()
This commit is contained in:
parent
c28267af04
commit
3d31dd24b2
1 changed files with 30 additions and 1 deletions
|
@ -1,5 +1,13 @@
|
|||
package hosts
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
// a host is a name and an address
|
||||
// memnarch expects an SSH private key to connect to Addr to exist at MEMNARCH_HOSTS/Name
|
||||
|
||||
|
@ -12,6 +20,27 @@ type RemoteMachine interface {
|
|||
Run(...string) error
|
||||
}
|
||||
|
||||
func (*Host) Run(cmdArgs ...string) error {
|
||||
func (self *Host) Run(cmdArgs ...string) error {
|
||||
// make sure keyfile exists
|
||||
keysDir := os.Getenv("MEMNARCH_HOSTS")
|
||||
keyfile := filepath.Join(keysDir, self.Name)
|
||||
info, err := os.Stat(keyfile)
|
||||
if (err != nil) {
|
||||
return err
|
||||
}
|
||||
if (info.IsDir()) {
|
||||
return errors.New("supposed keyfile is actually a directory")
|
||||
}
|
||||
// ssh in
|
||||
completeArgs := append([]string{"-i", keyfile, "memnarch@"+self.Addr}, cmdArgs...)
|
||||
sshCmd := exec.Command("ssh", completeArgs...)
|
||||
output, err := sshCmd.CombinedOutput()
|
||||
// TODO: log the metadata
|
||||
fmt.Println(output)
|
||||
// if error, return it
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// otherwise...
|
||||
return nil
|
||||
}
|
Loading…
Reference in a new issue