func (d *Driver) GetIP() (string, error) { // DHCP is used to get the IP, so virtualbox hosts don't have IPs unless // they are running s, err := d.GetState() if err != nil { return "", err } if s != state.Running { return "", drivers.ErrHostIsNotRunning } output, err := drivers.RunSSHCommandFromDriver(d, "ip addr show dev eth1") if err != nil { return "", err } log.Debugf("SSH returned: %s\nEND SSH\n", output) // parse to find: inet 192.168.59.103/24 brd 192.168.59.255 scope global eth1 lines := strings.Split(output, "\n") for _, line := range lines { vals := strings.Split(strings.TrimSpace(line), " ") if len(vals) >= 2 && vals[0] == "inet" { return vals[1][:strings.Index(vals[1], "/")], nil } } return "", fmt.Errorf("No IP address found %s", output) }
func (d *Driver) Kill() error { log.Debug("Killing...") if _, err := drivers.RunSSHCommandFromDriver(d, "sudo shutdown -P now"); err != nil { return err } return nil }
func (d *Driver) Restart() error { log.Debug("Restarting...") if _, err := drivers.RunSSHCommandFromDriver(d, "sudo shutdown -r now"); err != nil { return err } return nil }
func DetectProvisioner(d drivers.Driver) (Provisioner, error) { osReleaseOut, err := drivers.RunSSHCommandFromDriver(d, "cat /etc/os-release") if err != nil { return nil, fmt.Errorf("Error getting SSH command: %s", err) } osReleaseInfo, err := NewOsRelease([]byte(osReleaseOut)) if err != nil { return nil, fmt.Errorf("Error parsing /etc/os-release file: %s", err) } for _, p := range provisioners { provisioner := p.New(d) provisioner.SetOsReleaseInfo(osReleaseInfo) if provisioner.CompatibleWithHost() { log.Debugf("found compatible host: %s", osReleaseInfo.Id) return provisioner, nil } } return nil, ErrDetectionFailed }
func (provisioner *Boot2DockerProvisioner) SSHCommand(args string) (string, error) { return drivers.RunSSHCommandFromDriver(provisioner.Driver, args) }
func (h *Host) RunSSHCommand(command string) (string, error) { return drivers.RunSSHCommandFromDriver(h.Driver, command) }