2015-04-17 5 views
5

Я работаю с Go, пытаясь автоматизировать отслеживание всех моих ssh-соединений. У меня возникли проблемы с командой Go. Вот мой код:Соединение с ssh через оболочку?

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 эквивалентен «[email protected]» не используется, что ф, очевидно, но когда я запускаю это я получаю следующее сообщение об ошибке.

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

Я могу подключиться просто отлично, используя ssh с моего терминала.

Спасибо!

+1

Попробуйте напечатать некоторые отладочный вывод из 'ssh' команды, и сравнивая его и ту же команду из командной строки. – JimB

+3

Кроме того, убедитесь, что c.Address не содержит лишних пробелов или непечатаемых символов. – JimB

+0

Странный. Попробуйте localhost. Не c.Address функция? (устал бывает;). Не связано с разрешением адреса, но кто знает: попробуйте с абсолютным путем к исполняемому файлу ssh, в маловероятном случае, когда ваш PATH имеет к этому какое-то отношение. Какую ОС вы используете? Это может быть полезно знать. – wldsvc

ответ

0

Если у вас есть

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

это работает. Согласно комментарию выше, если у вас есть

cmd := exec.Command("ssh", string("[email protected] ")) - обратите внимание на дополнительное пространство

, то вы получите сообщение об ошибке вы вы описали.

Смежные вопросы