2012-12-30 256 views
0
#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 [email protected]:~"); 
    return 0; 

}从系统调用用C

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

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

+0

可能还有其他方法,但是如果期望a可以看到yes命令http://www.computerhope.com/unix/yes.htm或者您可以创建一个需要的文件并重定向输入 – PeterJ

+0

Check在serverfault上的以下页面,它可能有助于获取密码:http://serverfault.com/questions/318474/how-to-pass-password-to-scp-command-used-in-bash-script – PeterJ

回答

1

用途:

system("scp -o StrictHostKeyChecking=no ~/dump.txt [email protected]:~"); 

此选项将自动添加新键known_hosts文件而不提示。

+0

太棒了,谢谢哥们。 – barndog