2015-04-17 16 views
5

Sto lavorando con Go cercando di automatizzare tenendo traccia di tutte le mie connessioni ssh. Sto avendo alcuni problemi con il comando di Go. Qui è il mio codice:Connessione con ssh attraverso la 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 è equivalente a "[email protected]" Non usare quel IP, ovviamente, ma quando ho eseguito questo ho il seguente errore.

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

Posso connettermi bene usando ssh dal mio terminale.

Grazie!

+1

Provare a stampare un output di debug dal comando 'ssh', e confrontandola con lo stesso comando dalla shell. – JimB

+3

Inoltre, assicurarsi che c.Address non contenga spazi bianchi aggiuntivi o caratteri non stampabili. – JimB

+0

Strano. Prova localhost. Non c.Indicare una funzione? (accade stanco;). Non correlato alla risoluzione dell'indirizzo, ma chissà: prova con un percorso assoluto all'eseguibile ssh, nell'improbabile eventualità che il PATH abbia qualcosa a che fare con esso. Quale sistema operativo stai usando? Potrebbe essere utile sapere. – wldsvc

risposta

0

Se hai

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

funziona. Come per il commento di cui sopra se avete

cmd := exec.Command("ssh", string("[email protected] ")) - notare lo spazio extra

allora si otterrà l'errore che hai descritto.