0

我正在使用 Qt 5 框架开发 C++ 程序,需要执行以下操作:

  1. 使用 SSH 连接到远程服务器
  2. 执行 mkdir ~/testing 之类的命令
  3. 执行 mysqldump -u test -p123 testdb -> testdb.sql 之类的命令

基本上,您将像使用终端一样运行标准命令。

我查看了 QProcess,但它是有限的,我觉得使用 echo "password" | 不太舒服 ssh -x 主机名 -l 用户名等...

是否有任何 C++ 或 Qt 库可以完成我想要完成的任务?

4

2 回答 2

2

您应该学习如何在没有任何密码(或者在启动 Qt 应用程序之前使用ssh-add 添加ssh的密码)的情况下进行配置(使用公钥)。阅读一些好的ssh 教程。然后使用openssl和/或libssh等...

于 2013-11-08T20:48:17.073 回答
1

我找到了适合我需要的解决方案。如果我确实提出了一个跨平台的解决方案,我会告诉你们。以下是如何使其在 Linux 环境中的 QT 中工作。

QStringList commands;
commands << "-hold";
commands << "-e";
commands << "ssh username@host 'cd /home/user/backups; mysqldump -u root -p mydb > mydb.sql; echo DONE!'";

QProcess *process = new QProcess(0);
process->setProcessChannelMode(QProcess::MergedChannels);
process->start("xterm", commands);

if(!process->waitForStarted()){
    qDebug() << "Could not wait to start...";
}

if(!process->waitForFinished()) {
    qDebug() << "Could not wait to finish...";
}

process->closeWriteChannel();
qDebug() << process->readAll();
于 2013-11-08T21:39:01.403 回答