2015-04-17 11 views
5

Pracuję z Go próbując zautomatyzować śledzenie wszystkich moich połączeń ssh. Mam pewne problemy z uruchomieniem polecenia z Go. Tu jest mój kodu:Łączenie z ssh przez powłokę?

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 jest odpowiednikiem „[email protected]2.168.1.1” nie używając że IP oczywiście, ale gdy uruchomię to pojawia się następujący błąd.

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

Mogę podłączyć dobrze, używając ssh z mojego terminalu.

Dzięki!

+1

Spróbuj wydrukować jakieś wyjście debugowania z poleceniem 'ssh' i porównując ją to samo polecenie z powłoki. – JimB

+3

Upewnij się również, że c.Address nie zawiera żadnych dodatkowych białych znaków ani niedrukowalnych znaków. – JimB

+0

Dziwny. Spróbuj localhost. Czy c.Address nie jest funkcją? (zmęczenie się dzieje;). Nie ma związku z rozwiązywaniem adresów, ale kto wie: spróbuj z bezwzględną ścieżką do pliku wykonywalnego ssh, w mało prawdopodobnym przypadku, gdy twoja ścieżka dostępu ma z nim coś wspólnego. Z jakiego systemu operacyjnego korzystasz? To może być pomocne wiedzieć. – wldsvc

Odpowiedz

0

Jeśli masz

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

to działa. Zgodnie z komentarzem powyżej, jeśli masz

cmd := exec.Command("ssh", string("[email protected] ")) - zauważył dodatkową przestrzeń

wtedy dostaniesz błąd opisałeś.