C++ Qt-如何执行此命令?

C++ Qt-如何执行此命令?,c++,qt,qprocess,C++,Qt,Qprocess,使用此命令连接到服务器时,我尝试自动接受主机密钥 QString cmd = QString("echo y | plink.exe -ssh %1 -i root.ppk -l root exit").arg(strSensorAddress) 当我在Windows中从cmd.exe启动它时,它正在工作 我曾尝试在Qt中这样做,但不起作用: QString cmd = QString("plink.exe -ssh %1 -i root.ppk -l root exit").arg(strS

使用此命令连接到服务器时,我尝试自动接受主机密钥

QString cmd = QString("echo y | plink.exe -ssh %1 -i root.ppk -l root exit").arg(strSensorAddress)
当我在Windows中从
cmd.exe
启动它时,它正在工作

我曾尝试在Qt中这样做,但不起作用:

QString cmd = QString("plink.exe -ssh %1 -i root.ppk -l root exit").arg(strSensorAddress);

process1.setStandardOutputProcess(&process2);

process1.start("echo y");
process2.start(cmd);
process2.setProcessChannelMode(QProcess::ForwardedChannels);
就像这样:

QStringList arguments;
arguments << "plink.exe" << "-ssh" << strSensorAddress << "-i" << "root.ppk" << "-l" << "root" << "exit";

process1.setStandardOutputProcess(&process2);
process1.start("echo y");
process2.start("cmd.exe", arguments);
process2.setProcessChannelMode(QProcess::ForwardedChannels);
QStringList参数;

在调用
start
之前,需要调用
setProcessChannelMode
的参数。这在密码学上是灾难性的。看看为什么总的来说这是一个非常糟糕的主意。(如果您只是将ssh作为内部远程执行协议运行就可以了,并且根本不关心安全性。)如果您希望这样做,还可以使用telnet…您需要在调用
启动之前调用
setProcessChannelMode
。这在加密方面是灾难性的。看看为什么总的来说这是一个非常糟糕的主意。(如果您只是将ssh作为内部远程执行协议运行就可以了,而且根本不关心安全性。)如果您希望这样做,不妨使用telnet。。。