Как я могу использовать QProcess для командной строки Интерактивные аргументы, я пытаюсь передать файл usimg scp, который запрашивает пароль
QString program = "c:/temp/pscp.exe";
QStringList arguments;
arguments << "C:/Users/polaris8/Desktop/Test1GB.zip" << "[email protected]:/home/";
QPointer<QProcess> myProcess;
myProcess = new QProcess;
connect(myProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(readOutput()));
myProcess->start(program , arguments);
После этого Comnad Line запрашивает пароль, как его удовлетворить с помощью QProcess, могу ли я преодолеть его, задав некоторые параметры в моих аргументах только для scp, или каким должен быть код в моем слоте readOutput, который выбрасывает пароль в командную строку. Любые предложения будут полезны. Спасибо
Я думаю, что вы можете передать имя пользователя / пароль в качестве опции с:
-l user
-pw passwd
Так что ваши аргументы должны выглядеть так:
QStringList arguments;
arguments << "-l" << "Mrigendra" << "-pw" << "Password" <<
"C:/Users/polaris8/Desktop/Test1GB.zip" <<
"192.168.26.142:/home/";
Кажется, что у scp нет таких опций, но у pscp (у sftp клиента есть). Итак, я бы написал что-то вроде этого, чтобы расширить ваши начальные аргументы с помощью этой опции на основе следующая страница руководства:
QString program = "c:/temp/pscp.exe";
QStringList arguments;
arguments << "-pw" << "password" << "C:/Users/polaris8/Desktop/Test1GB.zip" << "[email protected]:/home/";
^^^^^^^^^^^^^^^^^^^
QPointer<QProcess> myProcess;
myProcess = new QProcess;
connect(myProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(readOutput()));
myProcess->start(program , arguments);
Кроме того, я бы посоветовал вам использовать QStandardPaths для пути, как у тебя. Подробности смотрите в документации:
QStandardPaths::DesktopLocation 0 Returns the user's desktop directory.
Итак, вы можете в конечном итоге заменить эту строку:
"C:/Users/polaris8/Desktop/Test1GB.zip"
со следующим:
QStandardPaths::locate(QStandardPaths::DesktopLocation, "Test1GB.zip")
При этом, вы можете рассмотреть возможность использования ключей вместо пароля в будущем. Это было бы немного более безопасно, а также удобно для вашего приложения.