Я не уверен, является ли это проблемой вызванной программы или проблема вызвана тем, как я вызываю программу.Из-за этого я начинаю с исходного кода.
Мне нужно вызвать ssh из программы (если вас интересуют причины, о которых я упомяну ниже), но ssh молча завершается.
КогдаЯ вызываю ssh -v user@remotehost
из оболочки, это успешно:
- выводится требуемый отладочный вывод на stderr
- У меня спрашивают пароль
- Я вижу удаленныйоболочка hosts
Но когда я делаю то же самое из моей программы (myssh -v user@remotehost
, происходит только это:
- Меня просят ввести пароль
Не отображаются выходные данные отладки на stderr и я не достигаю оболочки удаленных хостов.
Это мой исходный код:
package main
import (
"fmt"
"log"
"os"
"os/exec"
)
func main() {
params := os.Args[1:]
fmt.Printf("passing this to ssh: %s\n", params)
cmd := exec.Command("ssh", params...)
err := cmd.Run()
if err != nil {
log.Fatal(err)
}
}
Причина, по которой я написал этот код:Я использую Ansible, который вызывает ssh. Мне нужно «манипулировать» параметрами, которые Ansible передает в ssh. До сих пор я спрашивал в списках рассылки OpenSSH и Ansible, в OpenSSH и Ansible нет никаких средств для изменения параметров (для других это, но не те, которые мне нужны). Лучшее предложение я идуЯ хочу реализовать альтернативную команду ssh для Ansible, использовать ее для получения и изменения параметров и передачи их в реальный ssh.