我尝试使用Go在我的本地$ HOME / .ssh /目录下添加公钥。
我使用相同的代码运行多个命令没有问题,但不适用于这个特定的命令。
A
基本上我试图跑:
float my_val = 3;
cudaMemcpy(A, &my_val, sizeof(float), cudaMemcpyHostToDevice);
如果我直接通过命令行运行它,它可以正常工作。
我想在不同的OS X机器上运行该程序,其中一些机器没有安装ssh-copy-id。所以,我不考虑使用它。
但无论如何,我对其他建议持开放态度。提前谢谢。
答案 0 :(得分:4)
您不需要执行/bin/sh -c "cat file"
来读取Go中的文件。正常打开文件,并将其提供给ssh命令
keyFile, err := os.Open(filename)
if err != nil {
log.Fatal(err)
}
cmd := exec.Command("ssh", "user@host", "cat >> ~/.ssh/authorized_keys")
cmd.Stdin = keyFile
// run the command however you want
out, err := cmd.CombinedOutput()
if err != nil {
fmt.Println(string(out))
log.Fatal(err)
}
答案 1 :(得分:1)
您可以为此目的简单地执行rsync或scp。