Qt/C++ 在远程机器上执行命令并与其提示符交互
Qt/C++ Execute Commands on a Remote Machine & Interact with its Prompts
我正在使用Qt 5框架开发一个C++程序,需要执行以下操作:
- 使用 SSH 连接到远程服务器
- 执行像 mkdir ~/test 这样的命令
- 执行像 mysqldump -u test -p123 testdb -> testdb 这样的命令.sql
基本上,您将像使用终端一样运行标准命令。
我查看了 QProcess,但它是有限的,我对使用 echo "密码" | ssh -x 主机名 -l 用户名等感到不舒服......
是否有任何C++或Qt库可以完成我想要完成的任务?
您应该学习如何在没有任何密码的情况下配置ssh
(使用公钥)(或者在启动Qt应用程序之前仅使用ssh-add添加的密码)。阅读一些好的 ssh 教程。然后使用 openssl 和/或 libssh 等...
我找到了适合我需求的解决方案。如果我真的想出一个跨平台的解决方案,我会让你们知道。以下是使其在 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();
相关文章:
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 外壳包装器句柄/执行交互式命令管道C++ UNIX
- 如何在 Minecraft 服务器上执行命令
- 无法在 geany 上运行代码。无法执行构建命令
- 是否可以在命令行中将输入参数传递给可执行文件
- 在 C++ Consol 中的数组中执行用户命令时出现问题
- 如何从命令行使用 cmake 为有根的安卓设备制作可执行文件?
- 命令模式 - 使用"weight"执行任务的命令
- 如何在 Linux 下执行 shell 命令 unsing QProcess?
- 在 c++ 中从执行的 shell 命令获取返回状态的安全方法是什么?
- 如何在C++中执行命令并获取命令的返回代码标准输出和标准
- 当进程结束时,如何保持由 QProcess 执行的命令?
- 相同的CMD命令执行两种不同的事情
- 如果命令不只是打印结果,而是进入某种交互模式,如何处理来自C++的终端命令执行的输出?
- 使用linux echo命令执行qtProcess
- 与号 (&) (非常命令执行) 与 QProcess
- c++可以编写代码,将用户输入作为命令执行
- ADO命令执行失败
- c++程序没有使用php脚本和exec()、shell_exec()、system()等命令执行