From 519e428e2f5e10d31cce39dd9b98428479d5c994 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Sun, 31 Dec 2023 09:52:23 -0600 Subject: [PATCH] launch xterm Signed-off-by: Jeff Carr --- digitalocean/droplet.go | 18 ++++++++++++++++++ digitalocean/xterm.go | 31 +++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 digitalocean/xterm.go diff --git a/digitalocean/droplet.go b/digitalocean/droplet.go index 8da6e97..a780a13 100644 --- a/digitalocean/droplet.go +++ b/digitalocean/droplet.go @@ -99,6 +99,16 @@ func (d *Droplet) On() bool { func (d *Droplet) HasIPv4() bool { if ! d.Ready() {return false} + if d.ipv4.GetText() == "" { + return false + } + return true +} +func (d *Droplet) HasIPv6() bool { + if ! d.Ready() {return false} + if d.ipv6.GetText() == "" { + return false + } return true } @@ -118,6 +128,14 @@ func (d *Droplet) Connect() { if d.HasIPv4() { ipv4 := d.GetIPv4() log.Info("droplet has IPv4 =", ipv4) + xterm("ssh root@" + ipv4) + return + } + if d.HasIPv6() { + ipv6 := d.GetIPv6() + log.Info("droplet has IPv6 =", ipv6) + xterm("ssh root@[" + ipv6 + "]") + return } log.Info("droplet.Connect() here", d.GetIPv4(), d.GetIPv6()) } diff --git a/digitalocean/xterm.go b/digitalocean/xterm.go new file mode 100644 index 0000000..5c94560 --- /dev/null +++ b/digitalocean/xterm.go @@ -0,0 +1,31 @@ +package digitalocean + +import ( + "os/exec" + "go.wit.com/log" +) + +var geom string = "120x30+500+500" + +func xterm(cmd string) { + var tmp []string + var argsXterm = []string{"nohup", "xterm", "-geometry", geom} + // tmp = append(argsXterm, "-hold", "-e", cmd) + tmp = append(argsXterm, "-e", cmd) + log.Println("xterm cmd=", cmd) + go runCommand(tmp) +} + +func runCommand(cmdArgs []string) { + log.Println("runCommand() START", cmdArgs) + process := exec.Command(cmdArgs[0], cmdArgs[1:len(cmdArgs)]...) + // process := exec.Command("xterm", "-e", "ping localhost") + log.Println("runCommand() process.Start()") + process.Start() + log.Println("runCommand() process.Wait()") + err := process.Wait() + log.Error(err, "on process.Wait") + log.Println("runCommand() NEED TO CHECK THE TIME HERE TO SEE IF THIS WORKED") + log.Println("runCommand() OTHERWISE INFORM THE USER") + log.Println("runCommand() END", cmdArgs) +}