C++ 来自Qt的Ssh命令
我的Qt应用程序中的ssh有问题。我需要运行一个命令来删除远程服务器上的文件。我尝试使用QProcess类来实现它。因此,我将“ssh”作为命令名和必要的参数传递。其共同点如下:C++ 来自Qt的Ssh命令,c++,qt,ssh,C++,Qt,Ssh,我的Qt应用程序中的ssh有问题。我需要运行一个命令来删除远程服务器上的文件。我尝试使用QProcess类来实现它。因此,我将“ssh”作为命令名和必要的参数传递。其共同点如下: QStringList params; params.append(" user@" + ::host + " \"rm /tmp/" + ::fileName + "\""); d->impDelProcess->start("ssh", params); ssh u
QStringList params;
params.append(" user@" + ::host +
" \"rm /tmp/" + ::fileName + "\"");
d->impDelProcess->start("ssh", params);
ssh user@host "rm /path/fileName"
但毕竟它一直在询问密码,尽管我生成了ssh密钥并将公钥复制到远程服务器。此外,当我在终端中运行上述命令时,如下所示:
QStringList params;
params.append(" user@" + ::host +
" \"rm /tmp/" + ::fileName + "\"");
d->impDelProcess->start("ssh", params);
ssh user@host "rm /path/fileName"
它工作得很好。该文件被删除,不需要密码。所以,问题是QProcess中的某些地方。有没有办法摆脱询问密码的困扰?谢谢大家! 使用字符串列表时,这些是单独的参数。试试这个:
params.append("user@" + ::host");
params.append("rm /tmp/" + ::fileName);
这将使Qt为ssh传递两个参数:登录字符串和要在远程主机上执行的命令
重要提示以上假定::filename
不包含空格或任何其他内容!。您可以使用以下工具在空间中漫游:
params.append("rm '/tmp/" + ::fileName + "'");
但它对通配符或路径中的。
没有帮助。。。想象一下,如果文件名是。/home/user/*
,例如。。。所以这最好是可信的输入,或者您需要对其进行清理(但这超出了这个答案的范围)
在问题代码中,您要做的是构造一个参数,相当于此shell命令行:
ssh'user@host“rm/path/filename”'
非常感谢您!它工作得很好!没有警告和询问密码。Thanx!!!谢谢你的提示!我一直在寻找如何标记答案“正确”。