1

コマンド ライン インタラクティブ引数に QProcess を使用するにはどうすればよいですか。パスワードを要求する 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);

この後、コマンドラインは QProcess を使用してパスワードを満たす方法を尋ねます.scpのみの引数にいくつかのオプションを指定することでそれを克服できますか、またはコマンドラインにパスワードをスローするスロット readOutput のコードは何ですか. どんな提案も役に立ちます。ありがとう

4

2 に答える 2

1

scp にはそのようなオプションがないようですが、pscp (sftp クライアントにはあります)。したがって、次のマニュアルページに基づいて、そのオプションで最初の引数を拡張するために、次のようなものを書きます。

QString program = "c:/temp/pscp.exe";
QStringList arguments;
arguments << "-pw" << "password" << "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);

また、あなたのようなパスにはQStandardPathsを使用することをお勧めします。詳細については、ドキュメントを参照してください。

QStandardPaths::DesktopLocation 0   Returns the user's desktop directory.

したがって、最終的にこの文字列を置き換えることができます。

"C:/Users/polaris8/Desktop/Test1GB.zip"

次のように:

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

そうは言っても、将来的にはパスワードの代わりにキーを使用することを検討したいかもしれません. それはもう少し安全で、アプリケーションにとっても便利です。

于 2014-01-14T07:53:18.783 に答える