Qt - 通过plink与QProcess执行命令

时间:2017-03-02 17:05:55

标签: c++ qt plink

我正在尝试使用以下代码修改服务器linux上的文件,但它不起作用。

        QProcess *pProcess = new QProcess(this);
        QProcess *pProcess2 = new QProcess(this);
        pProcess2->setStandardOutputProcess(pProcess);

        QString cmd = QString("plink.exe -ssh %1 -i root.ppk -l root tee /etc/test.txt").arg(strSensorAddress);

        pProcess2->start("echo hello");
        pProcess->start(cmd);

        pProcess->setProcessChannelMode(QProcess::ForwardedChannels);

我能够使用这样的文件来做到这一点:

    QStringList arguments;
    arguments << "-ssh" << strSensorAddress << "-i" << "root.ppk" << "-l" << "root" << "-m" << sFileName;

    pProcess->setProcessChannelMode(QProcess::MergedChannels);
    pProcess->start("plink.exe", arguments);

包含以下文件:

echo hello |  tee /etc/factory_test.txt

但由于内容需要更改,我不会依赖文件。

当只需要一个命令时,我能够执行命令,例如,只需创建一个这样的文件:

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

    pProcess->start(cmd);

但是当我需要做echo hello > test.txt之类的2个命令时,我无法做到这一点

1 个答案:

答案 0 :(得分:0)

您只能使用QProcess运行进程而不是命令。但是你可以这样做:

process.start("bash", QStringList() << "-c" << "cat file | grep string");

例如。