Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对CLI使用QProcess_C++_Qt_Qprocess_Qtcore_Pscp - Fatal编程技术网

C++ 对CLI使用QProcess

C++ 对CLI使用QProcess,c++,qt,qprocess,qtcore,pscp,C++,Qt,Qprocess,Qtcore,Pscp,如何将QProcess用于命令行交互参数,我正在尝试使用提示输入密码的MG scp传输文件 QString program = "c:/temp/pscp.exe"; QStringList arguments; arguments << "C:/Users/polaris8/Desktop/Test1GB.zip" << "Mrigendra@192.168.26.142:/home/"; QPointer<QProcess> myProcess; my

如何将QProcess用于命令行交互参数,我正在尝试使用提示输入密码的MG scp传输文件

QString program = "c:/temp/pscp.exe";
QStringList arguments;
arguments << "C:/Users/polaris8/Desktop/Test1GB.zip" <<   "Mrigendra@192.168.26.142:/home/";
QPointer<QProcess> myProcess;
myProcess = new QProcess;
connect(myProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(readOutput()));
myProcess->start(program , arguments);
QString program=“c:/temp/pscp.exe”;
QStringList参数;

参数似乎scp没有这样的选项,但pscp(sftp客户端有)。所以,我会写一些类似的东西来扩展你的初始论点,这个选项基于:

因此,您最终可以替换此字符串:

"C:/Users/polaris8/Desktop/Test1GB.zip"
以下是:

QStandardPaths::locate(QStandardPaths::DesktopLocation, "Test1GB.zip")

P>以上所述,您可能希望在将来考虑使用密钥而不是密码。这将更加安全,也方便您的应用程序。

我认为您可以通过以下选项传递用户名/密码:

-l user
-pw passwd
所以你的论点应该是这样的:

QStringList arguments;
arguments << "-l" << "Mrigendra" << "-pw" << "Password" <<
             "C:/Users/polaris8/Desktop/Test1GB.zip" <<
             "192.168.26.142:/home/";
QStringList参数;

参数将用户名/密码作为参数传递给scp@LaszloPapp正确的。因此,他需要选择另一个程序进行复制。我不会弄乱密码,而是使用基于密钥的身份验证。@B:啊,嗯。pscp也是一个sftp客户机,它确实有用户名和密码选项,不像scp。@LaszloPapp…我使用的是bash。稍微详细一点会有帮助的。@B谢谢,QProcess文档更喜欢
QStringList参数;arguments@ThorKhan,谢谢,但它不适用于QProcess,但在Windows命令提示符下运行良好……@user3110438:出于这个原因,我提到过。根据我的回答,您需要将“-pw password”拆分为单独的参数。严格来说,由于没有
StringList
这样的类型,因此仍有一些改进的余地。排序很重要,因为您所述的顺序提示输入密码,甚至QProcess失败。.参数正确的顺序是arguments@user3110438:另外,根据我关于QStandardpath的回答和提示,请不要在代码中使用硬编码路径。我将继续查看QStandardpath。感谢您指出……Laszlo有没有办法摆脱用户名和密码,只使用pscp键?@user3110438:这有帮助吗?
-l user
-pw passwd
QStringList arguments;
arguments << "-l" << "Mrigendra" << "-pw" << "Password" <<
             "C:/Users/polaris8/Desktop/Test1GB.zip" <<
             "192.168.26.142:/home/";