使用scp和sshpass处理错误情况

时间:2018-03-06 17:46:45

标签: c ssh scp sshpass

我正在尝试为文件传输实现命令行界面命令,并且将在内部调用

  

sshpass -p“password”scp -o UserKnownHostsFile = / dev / null -o StrictHostKeyChecking = no -r user @ remote-machine:/home/QA.txt / home / faadmin /

当我使用system()运行此命令时,错误处理没有正确发生。如果在没有文件传输的情况下路由,或者在阻止执行CLI命令的某些时候找不到文件.so我执行上面的Linux命令后没有显示0和1以外的其他返回值。我可以获得其他返回值吗?

1 个答案:

答案 0 :(得分:0)

您应该使用popen(),因为system()返回值会告诉您命令是否已执行。 E.G:

#include <stdio.h>

void main(void)
{
FILE *output = NULL;
char text[2048];
char cmd[256];

sprintf(cmd, "%s", "sshpass -p \"password\" scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -r user@remote-machine:/home/QA.txt /home/faadmin/");

output = popen(cmd, "r");

while(fgets(text, 1024, output) != NULL)
  printf("%s", text);

pclose(output);
}