summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--shell.go18
-rw-r--r--ssh.go13
2 files changed, 30 insertions, 1 deletions
diff --git a/shell.go b/shell.go
index ab8a695..cfa9b94 100644
--- a/shell.go
+++ b/shell.go
@@ -272,3 +272,21 @@ func Exec(cmdline string) {
log.Println("shell.Exec() err =", err)
os.Exit(0)
}
+
+// return true if the filename exists
+func Exists(filename string) bool {
+ _, err := os.Stat(filename)
+ if os.IsNotExist(err) {
+ return false
+ }
+ return true
+}
+
+// return true if the filename exists
+func Dir(dirname string) bool {
+ info, err := os.Stat(dirname)
+ if os.IsNotExist(err) {
+ return false
+ }
+ return info.IsDir()
+}
diff --git a/ssh.go b/ssh.go
index 0e42c6e..7cffa79 100644
--- a/ssh.go
+++ b/ssh.go
@@ -9,6 +9,7 @@ import "io/ioutil"
import "path/filepath"
import "strings"
import "time"
+import "runtime"
import "golang.org/x/crypto/ssh"
import "github.com/tmc/scp"
@@ -24,7 +25,17 @@ func SSH(hostname string, port int, username string, pass string) *ssh.Session {
user, _ := user.Current()
- publicKey, err := PublicKeyFile(user.HomeDir + "/.ssh/id_ed25519")
+ keyfile := user.HomeDir + "/.ssh/id_ed25519"
+ if runtime.GOOS == "windows" {
+ if Exists("/cygwin") {
+ log.Println("On Windows, but running within cygwin")
+ keyfile = "/home/wit/.ssh/id_ed25519"
+ } else {
+ keyfile = user.HomeDir + "\\id_ed25519"
+ }
+ }
+
+ publicKey, err := PublicKeyFile(keyfile)
if (err != nil) {
log.Println("PublicKeyFile() error =", err)
}