从C中的系统调用向SCP命令发送输入

时间:2012-12-30 04:11:00

标签: c scp

#include <stdlib.h>
#include <unistd.h>

int main()
{
    int euid = geteuid();
    setreuid(euid, euid);
    system("echo hi");
    system("cp test_file ~/dump.txt");
    system("scp ~/dump.txt host@ipaddress:~");
    return 0;

}

上面的代码是我编写的一个简短程序,它将文件复制到转储文件,然后使用终端scp命令将其发送给某人。当第一次使用scp时,终端会出现提示,询问用户是否要将密钥添加到主机名列表或类似名称。然后它会提示输入密码。如何从该程序发送输入以便通过密码提示接收?那段代码是什么样的?

编辑:我遇到的问题是当系统调用scp时,程序暂停直到整个scp命令被执行,所以当发生这种情况时,输入不再从程序中获取,但是来自用户。我不知道如何从我的程序中传入scp的密码。

1 个答案:

答案 0 :(得分:1)

使用:

system("scp -o StrictHostKeyChecking=no ~/dump.txt host@ipaddress:~");

此选项会在不提示的情况下自动将新密钥添加到known_hosts文件中。