齁不齁 2023-07-11 10:04 采纳率: 0%
浏览 169
已结题

qt process类进行ssh远程控制

在qt5.12.6中想使用QProcess类进行ssh连接,显示总是连接成功返回值为空,这个为什么?怎么解决?或者说应该怎么写?(已经在终端和用putty测试了ssh可以正常连接而且打印正常,都是root/)
编译输出结果如下:

[Krn64.dll][25024][25844][INFO] [ProcessInject::HookCreateProcessW] [NULL], [ssh  root@192.168.234.100] is not cmd process, no need remote inject
QProcess::start: Process is already running
QProcess: Destroyed while process ("ssh") is still running.
Exit code: 62097
Exit status: QProcess::CrashExit
Output: ""
Error: ""
Process crashed. Error:  "Process crashed"
subWidgetSwitched QMdiSubWindow(0x5be2600)

img


    // 创建一个QProcess对象
    QProcess process;

    QStringList command;
    process.setProcessChannelMode(QProcess::SeparateChannels);
  command  << "root@192.168.234.100" <<"pwd";
    process.start("ssh", command);

if (process.waitForStarted())
{
    process.closeWriteChannel();

    QObject::connect(&process, &QProcess::readyReadStandardOutput, [&](){
        qDebug() << "Output: " << process.readAllStandardOutput();
    });

    QObject::connect(&process, &QProcess::readyReadStandardError, [&](){
        qDebug() << "Error: " << process.readAllStandardError();
    });

    // 异步等待命令执行完成
    QObject::connect(&process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), [&](int exitCode, QProcess::ExitStatus exitStatus){
        QByteArray result = process.readAllStandardOutput();
        QByteArray error = process.readAllStandardError();

        qDebug() << "Exit code:" << exitCode;
        qDebug() << "Exit status:" << exitStatus;
        qDebug() << "Output:" << result;
        qDebug() << "Error:" << error;
             if (exitStatus == QProcess::CrashExit) {
                qDebug() << "Process crashed. Error: " << process.errorString();
            }
    });
}
else
{
    qDebug() << "Failed to start the command.";
}
  • 写回答

8条回答 默认 最新

  • 急速光粒 2023-07-11 14:32
    关注
    获得1.35元问题酬金

    ssh参数给的有问题,不能这么给用户名和密码,所以链接错误。

    评论

报告相同问题?

问题事件

  • 系统已结题 7月19日
  • 修改了问题 7月11日
  • 修改了问题 7月11日
  • 修改了问题 7月11日
  • 展开全部