Qt — выполнять команды через plink с QProcess

Я пытаюсь изменить файл на сервере 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);

Но когда мне нужно сделать 2 команды, такие как echo hello > test.txtЯ не могу это сделать

0

Решение

Вы можете запустить только процесс, а не команду с QProcess. Однако вы можете сделать:

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

например.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]