2015-04-17 9 views
5

Ich arbeite mit Go versuchen zu automatisieren, verfolgen alle meine SSH-Verbindungen. Ich habe einige Probleme beim Ausführen des Befehls von Go. Hier ist mein Code:Verbindung mit SSH durch die Shell?

cmd := exec.Command("ssh", string(c.Address)) 
     cmd.Stderr = os.Stderr 
     cmd.Stdin = os.Stdin 
     cmd.Stdout = os.Stdout 
     err2 := cmd.Run() 
     if err2 != nil { 
      fmt.Print("Disconnected") 
     } 

c.Address entspricht „[email protected]“ nicht mit dieser IP offensichtlich, aber wenn ich diese laufen bekomme ich die folgende Fehlermeldung.

ssh: Could not resolve hostname 192.168.1.1 
: nodename nor servname provided, or not known 

Ich kann nur gut mit ssh von meinem Terminal verbinden.

Danke!

+1

Drucken Sie einige Debug-Ausgabe aus dem 'ssh' Befehl ein, und es den gleichen Befehl aus der Schale zu vergleichen. – JimB

+3

Stellen Sie außerdem sicher, dass c.Address keine zusätzlichen Leerzeichen oder nicht druckbare Zeichen enthält. – JimB

+0

Seltsames. Versuchen Sie localhost. Ist c.Address keine Funktion? (Müdigkeit passiert;). Nicht im Zusammenhang mit der Adressauflösung, aber wer weiß: Versuchen Sie mit einem absoluten Pfad zur ausführbaren Datei ssh, im unwahrscheinlichen Fall, dass Ihr PATH etwas damit zu tun hat. Welches Betriebssystem verwenden Sie? Das könnte hilfreich sein zu wissen. – wldsvc

Antwort

0

Wenn Sie

cmd := exec.Command("ssh", string("[email protected]"))

es funktioniert haben. Gemäß dem Kommentar oben, wenn Sie

cmd := exec.Command("ssh", string("[email protected] ")) haben - beachten Sie den zusätzlichen Platz

dann werden Sie den Fehler erhalten Sie Sie beschrieben.